

Brian
Members-
Posts
2223 -
Joined
-
Last visited
-
Days Won
24
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Brian
-
Did you forget to enclose your email address in single quotes? Can you paste the section of your application.php around line 53?
-
[Suggestion] Typographical/Spelling/Grammatical Errors
Brian replied to System's topic in Implemented
Fixed in r17345. -
Newly registered members can not edit their profile until they have 1 approved post (in a non-offtopic section).
-
Around the first week, we changed the DNS to point to our old webhost (which still had an old copy of the forums when we were using the domain eathena.net) with the IP.Board OFFLINE message.
-
Sorry for the forum downtime yesterday, our host had a hardware problem. Tomorrow, the server rAthena is hosted on will be down for maintenance to fix it. I will update this post when we know the exact times. Forums: ONLINE SVN (SourceForge): ONLINE Trac: Offline Wiki: ONLINE BuildBot: Offline
-
ACP > Members > Custom Profile Fields --> Add Field - Include on registration page? Yes and for the Q&A thing, that's in ACP > Tools & Settings > Question & Answer Challenge
-
Employment (Jobs Available / Résumés / Paid Services) and Server Ad topics up to 5-1-2013 have been approved/rejected. If you don't see your topic, look for it in Rejected Server Ads or Rejected Employment Ads with reason(s) why it was not approved.
-
"monsters killed" are not logged. If you have the picklog enabled, you can see when players got item(s) from monsters. Look for TYPE = L To track zeny, edit trunk/conf/log_athena.conf and enable the Zeny log: This will track ALL zeny changes: // Track Zeny Changes // Filter settings // 0 - don't log; 1 - log any zeny changes; 2.....1000000 - minimal absolut logging zeny value log_zeny: 1This will log transactions of 100z or greater:// Track Zeny Changes // Filter settings // 0 - don't log; 1 - log any zeny changes; 2.....1000000 - minimal absolut logging zeny value log_zeny: 100
-
How to kick all guilds members except masters?
Brian replied to yazankayed's question in General Support
Run these SQL queries while your server is offline: UPDATE `char` SET guild_id=0 WHERE char_id NOT IN (SELECT char_id FROM guild); DELETE FROM guild_member WHERE char_id NOT IN (SELECT char_id FROM guild); -
Need Help [how to disable Secure npc time out]
Brian replied to LearningRO's question in Source Support
Comment to disable the timer. change line 21 so it looks like this: // #define SECURE_NPCTIMEOUT -
Login to SSH and compress your rAthena folder first. The compressed file will be smaller, so it will download faster. To compress with zip: zip -r rathena.zip <folder name>/To compress with gzip:tar czf rathena.tar.gz <folder name>/
-
trunk/conf/log_athena.conf // Enable Logs? (Note 3) // 0x00000 - Don't log at all // 0x00001 - (T) Log trades // 0x00002 - (V) Log vending transactions // 0x00004 - (P) Log items drop/picked by players // 0x00008 - (L) Log items drop/looted by monsters // 0x00010 - (S) Log NPC transactions (buy/sell) // 0x00020 - (N) Log Script transactions (items deleted/acquired through quests) // 0x00040 - (D) Log items stolen from mobs (Steal/Gank) // 0x00080 - © Log player-used items (consumables/pet&hom&merc food/items used for skills&attacks) // 0x00100 - (O) Log produced/ingredient items // 0x00200 - (U) Log MVP prize items // 0x00400 - (A) Log player created/deleted items (through @/# commands) // 0x00800 - ® Log items placed/retrieved from storage. // 0x01000 - (G) Log items placed/retrieved from guild storage. // 0x02000 - (E) Log mail system transactions. // 0x04000 - (I) Log auction system transactions. // 0x08000 - ( Log buying store transactions // 0x10000 - (X) Log all other transcations (rentals expiring/inserting cards/items removed by item_check/ // rings deleted by divorce/pet egg (un)hatching/pet armor (un)equipping/Weapon Refine skill/Remove Trap skill) // 0x20000 - ($) Log cash transactions // Example: Log trades+vending+script items+created items: 1+2+32+1024 = 1059 // Please note that moving items from inventory to cart and back is not logged by design. enable_logs: 0xFFFFF To disable completely: enable_logs: 0x00000Or to only log certain transactions, add up the bits of the types you want to log.
-
There's this: trunk/conf/login_athena.conf //If new_account is enabled, minimum length to userid and passwords should be 4? //Must be 'Yes' unless your client uses both 'Disable 4 LetterUserID/Password' Diffs new_acc_length_limit: yes but currently there is no server-side check for character name lengths.
-
Preventing Skill Text above character
Brian replied to PronteraGuy's question in Client-side Support
I think the skill name comes from this client-side file: ../data/lua files/skillinfoz/skillinfolist.lua -
Make sure your data folder (or GRF) has the "book" text files: http://subversion.assembla.com/svn/ClientSide/Translation_Project/renewal data/book/
-
I fixed a bunch of errors: - missing semi-colon - changed 'doevent' to 'addtimer' so the menu pops up immediately - changed 'announce' to 'mapannounce', which works with no RID attached - removed player's own name from list (so they can't vote themself as the weakest link) - fixed rid2name(.@weakest) and tested it with 3 chars and it seems to work now. prontera,155,180,0 script test 910,{ // end; OnVote4WeakestLink: deletearray .RID; deletearray .votes; if (getmapusers(strnpcinfo(4)) > 128) { debugmes "too many players on map T_T"; end; } else if (getmapusers(strnpcinfo(4)) <= 2) { mapannounce strnpcinfo(4),"There are 2 players left.", 0,0x00FFFF; end; } // for all online players while (getusers(1) > .@count) { set .@count, .@count + query_sql("SELECT account_id FROM `char` WHERE online=1 LIMIT 128 OFFSET "+.@count, .@account_id); set .@i, 0; while (.@i < getarraysize(.@account_id)) { getmapxy .@map$,.@x,.@y, 0,rid2name(.@account_id[.@i]); if (.@map$ == strnpcinfo(4)) { // save account_id of players on this map set .RID[getarraysize(.RID)], .@account_id[.@i]; } set .@i, .@i +1; } deletearray .@account_id, 128; sleep 1; // prevent infinity loop } // for players on this map for (set .@i,0; .@i<getarraysize(.RID); set .@i,.@i+1) { if (attachrid(.RID[.@i])) { set @is_voting, 1; addtimer 0,strnpcinfo(3)+"::OnVotePopup"; } } mapannounce strnpcinfo(4),"You have 30 seconds to vote for the Weakest Link.", 0,0x00FFFF; // wait 30 seconds (give them time to vote) sleep 25000; mapannounce strnpcinfo(4),"You have 5 seconds left to vote for the Weakest Link.", 0,0x00FFFF; sleep 5000; mapannounce strnpcinfo(4),"Voting is over...", 0,0x00FFFF; for (set .@i,0; .@i<getarraysize(.RID); set .@i,.@i+1) { // kick players who did not vote if (attachrid(.RID[.@i])) { if (@is_voting) { dispbottom "You are disqualified because you took too long to vote."; warp "SavePoint",0,0; } } // calculate RID with most votes rand() is for when there are ties if ((.votes[.@i] > .@max_votes) || (.votes[.@i]==.@max_votes && rand(2))) { set .@max_votes, .votes[.@i]; set .@weakest, .RID[.@i]; } } // announce (and kick) the weakest link mapannounce strnpcinfo(4),rid2name(.@weakest)+" is the Weakest Link!", 0,0x00FFFF; if (attachrid(.@weakest)) { dispbottom "You are the weakest link."; dispbottom "Goodbye."; warp "SavePoint",0,0; } end; OnVotePopup: // shuffle the .RID[] array into .@RID[] for( set .@i,0; .@i < getarraysize(.RID); set .@i,.@i+1 ) { while( set(.@rand,rand(1,getarraysize(.RID))) == getd(".@__tmp_"+.@rand) ); setd(".@__tmp_"+.@rand,set(.@RID[.@i],.@rand)); } // arrange the menu options in that order for( set .@i,0; .@i < getarraysize(.@RID); set .@i,.@i+1 ) set .@menu$, .@menu$ +( (.RID[.@RID[.@i]-1]==getcharid(3)) ? "":rid2name(.RID[.@RID[.@i]-1]) )+ ":"; // display menu --> player picks a weakest link set .@idx, .@RID[select(.@menu$)-1]-1; set .votes[.@idx], .votes[.@idx] +1; set @is_voting, 0; close; }
-
Register account manually in SQL by inserting in the table
Brian replied to iankasai's question in Database Support
If you specified an account_id greater than the current AUTO_INCREMENT value, this will increase AUTO_INCREMENT to that new value +1. You can change it back: ALTER TABLE `login` AUTO_INCREMENT = 2000000; -
I'm guessing YOU are hosting your MySQL Server.Here are instructions (for both Windows and Linux) to Reset the MySQL root password Since you need to re-create the root user, for step 3 you would use this query instead: CREATE USER 'root'@'localhost'; GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
Maybe they have 2 server GRFs ? 1. (server.grf) for frequently changed files like translation .txt files 2. (palettes.grf) for sprites, palettes, maps, and other files that are not changed as often
-
Here's what I have so far: see post #5 Trigger the OnVote4WeakestLink label each round of your event. * I didn't know how to vote when it's down to 2 players (since they would probably always vote for each other, then it'd be a tie) so I made the script just stop if 2 players are left.
-
Use NPC variables attached to the "main" NPC in the quest: - one to store the char_id of the character currently doing the quest - another to store the quest step they're at Then NPC 2 can use getvariableofnpc to check those variables in NPC 1. prontera,155,180,0 script quest_step1 910,{ if (.char_id == 0) { // quest is open mes "Do you want to start this quest?" mes " "; if (select("Yes:No")==1) { if (.char_id) { mes "Too slow! Someone else already started the quest..."; } else { set .char_id, getcharid(0); set .quest_endtime, gettimetick(2) + 300; // 300 seconds = 5 minutes set .quest_step, 1; initnpctimer "quest_step1"; mes "^008000 STEP 1 Complete! ^000000"; mes "Now, go talk to Step 2."; } } } else if (.char_id == getcharid(0)) { // in progress switch(.quest_step) { case 1: mes "You've already completed step 1."; mes "Proceed to step 2 -->"; break; case 2: // other message to tell them they are "in progress" break; default: mes "Keep doing all the steps until you finish!"; break; } } else { // in progress (another player is doing quest) mes "Another player is currently doing this quest."; mes "Please wait " + Time2Str(.quest_endtime); } close; OnTimer300000: stopnpctimer; set .char_id, 0; set .quest_endtime, 0; // 300 seconds = 5 minutes set .quest_step, 0; end; } prontera,158,180,0 script quest_step2 910,{ if (getvariableofnpc(.char_id, "quest_step1") == 0) { // quest is open mes "To start the quest, first talk to Step 1."; } else if (getvariableofnpc(.char_id, "quest_step1") == getcharid(0)) { // in progress switch(getvariableofnpc(.quest_step, "quest_step1")) { case 1: set getvariableofnpc(.quest_step, "quest_step1"), 2; mes "^008000 STEP 2 Complete! ^000000"; next; mes "All done *_*"; set getvariableofnpc(.char_id, "quest_step1"), 0; set getvariableofnpc(.quest_endtime, "quest_step1"), 0; set getvariableofnpc(.quest_step, "quest_step1"), 0; stopnpctimer "quest_step1" break; } } else { // in progress (another player is doing quest) mes "Another player is currently doing this quest."; mes "Please wait " + Time2Str(getvariableofnpc(.quest_endtime, "quest_step1")); } close; }
-
I think that's just the way Jikari-cube and NeonCube are programmed -- they repack the GRF every time a file is added or deleted. Patchers that don't repack the GRF until it reaches a certain fragmentation level: Thor_Patcher Triad_Patcher