rqueen
-
Posts
82 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by rqueen
-
-
Will try it now!
-
Hello, Cydh! Thank you for this diff and sorry for the late reply.
I noticed it says 'rA' at the end, I'm still currently on eAthena, would this work if I applied the diff contents manually? (As in, copy-pasting manually since it's originally for rA emulator)
-
Thank you, Cydh! I think I kind of get the gist of what you suggested, but unfortunately I have really low knowledge of scripting and programming. :/ Do you think you can help me out with this one?
-
Oh, I forgot to mention our server is on eAthena, so I'm thinking I'll need some hard coding for it.
-
Any way to add like 1 to 1.5 seconds delay before a Champion/Monk can use consumable items after he casts Asura Strike?
Preferably only when the skill hits, but if it can't be done I'm good with it applying all the time.
-
Thanks, Capuche! I'll be switching to Euphy's eA release of his WoE controller now.
-
Hello, first of all I'd like to apologize if this is against the rules, but I really want this to work, and since nobody could revise the script I found for it in the Support section, I figured it'd be easier to just ask for a new script entirely.
This the my support topic: http://rathena.org/board/topic/94812-woe-points-counter/
I need a script that will add points for every castle a guild keeps at the end of WoE, including WoE v2 castles. The script should only add points to the guild for the castles they kept during that specific WoE time, and not accumulate for inactive castles.
Please also include a physical NPC where it will show the Top 5 or Top 10 guilds with the most points. As well as a reset points option for GMs.
We are using eAthena as well Toasty's WoE Controller, if it matters.
If this is against any forum rules, please take my sincerest apology and close this topic.
-
Anyone? The console doesn't show any errors for Capuche's script so I really don't know what's wrong.
-
Thank you for replying, Capuche! You always seem to be the person to help me every time I post here! XD
I tested out the script you gave, when I select the "Rank" option, nothing happens. When I select "Reset", nothing happens and my GM char gets stuck, unable to move. I have to relog or @warp somewhere to regain motion.
I also noticed points don't get added to the woe_points column when the OnClock line is suppose to run.
I'm not sure if it matters, but I'm using Toasty's WoE Controller.
Also, can you please make it so even normal players can view the WoE point ranks? Thank you so much!
-
Hi all, I'm using this script by AnnieRuru from here:
http://rathena.org/board/topic/78057-woe-point-system/?p=176770
prontera,155,181,5 script Woe Points 100,{ [email protected] = query_sql( "select name, woe_points from guild order by woe_points desc limit 3", [email protected]_name$, [email protected] ); for ( [email protected] = 0; [email protected] < [email protected]; [email protected]++ ) { if ( [email protected][[email protected]] ) break; mes ( [email protected]i +1 )+". "+ [email protected]_name$[[email protected]] +" -> "+ [email protected][[email protected]]; } close; OnClock1930: OnClock2000: OnClock2030: OnClock2100: for ( [email protected] = 0; [email protected] < 30; [email protected]++ ) { [email protected]_guild_id = getcastledata( getvariableofnpc( .Castles$[[email protected]], "WOE_CONTROL" ), 1 ); if ( getvariableofnpc( .Active[0], "WOE_CONTROL" ) & 1 << [email protected] && [email protected]_guild_id ) query_sql "update guild set woe_points = woe_points +1 where guild_id = "+ [email protected]_guild_id; } end; OnBreakEmp: // put doevent under OnAgitBreak ... query_sql "update guild set woe_points = woe_points +1 where guild_id = "+ getcharid(2); end; }1) I can't get it to run correctly or at all in eAthena, I'm guessing some new scripting features are unavailable? If so, please help me revise it.
2) If it's nuch to ask, please include an option to view the top 5 or top 10 guilds with the highest points
3) A reset points to 0 option for GMs.
4) I'd like it to only add points after WoE, for whichever guilds get to keep the castles. In other words, please disable point accumulation on emperium breaks.
Thank you in advance! Please help me in your earliest convenience.
Anyone?

-
^ Nevertheless, that fixed it. Thank you so much!
-
Change :
for( [email protected]=0; [email protected]<getarraysize(.restrictedMap$); [email protected]++ )
to :
for ( set [email protected],0; [email protected] < getarraysize(.restrictedMap$); set [email protected], [email protected] + 1 )
Thanks. The errors are gone, but it still counts the MVP kills.
If it helps, here's the whole revised script:
// // [========================================================] // [=========== Ranker SQL ===========] // [========================================================] // [ Version 17.1 ] // [========================================================] // [ Original script by: Ivion ] // [========================================================] // [ Description: ] // [--------------------------------------------------------] // [ ] // [ - Level Ranking. ] // [ - PK Ranking. ] // [ - MvP Ranking. ] // [ - Emperium Ranking. ] // [ - [Guild] Level Ranking. ] // [ - [Guild] WoE Ranking. ] // [ - Reward system for TOP 1 characters. ] // [ - GMs Control Panel whispering to NPC:ranker . ] // [ - Auto-Purge of inactive guilds and players. ] // [========================================================] // [ 5 last updates: ] // [--------------------------------------------------------] // [ ] // [ v13: [Ivion] ] // [ - All your characters in the same account will be ] // [ displayed in a blue color. ] // [ ] // [ v14: [Ivion] ] // [ - Added a PK delay so that players won't get PK points ] // [ when killing the same player multiple times. ] // [ - Added new [Guild] Level Ranking. ] // [ ] // [ v15: [Ivion] ] // [ - Changed the way SC_PKDELAY gets activated so that you] // [ can use it by other scripts without instaling the ] // [ Ranker. ] // [ ] // [ v16: [Ivion] ] // [ - First SQL version. Should fix the lag that the TXT ] // [ version used to cause in the SQL servers. ] // [ - Bugfix: Players who has been playing during 7 days ] // [ without login off won't be purged from the rankings. ] // [ - Bugfix: The Emperium and the [Guild] WoE rankings ] // [ didn't work in the WoE 1 castles. ] // [ - Added a reward system for TOP 1 characters. ] // [ - New settings to configure the colors when displaying ] // [ the rankings. ] // [ - Online and offline players will be displayed in a ] // [ different color. ] // [ - When a guild reaches a new position in a guild based ] // [ ranking, the script will announce it to all the ] // [ connected guild members. ] // [ ] // [ v16.1: [Ivion] ] // [ - BugFix: CPCount didn't count positions over 128. ] // [ ] // [ v17: [Ivion] ] // [ - Updated the MAX_MOB_DB value to 4000. ] // [ ] // [ v17.1: [Ivion] ] // [ - Bugfix: Search by class. ] // [========================================================] // [ http://www.eathena.ws/board/index.php?showtopic=193726 ] // [========================================================] - script ranker -1,{ OnInit: // [========================================================] // [ Configuration: ] // [--------------------------------------------------------] set [email protected]$,"Ranker"; // NPC name. // Ranking Activation: (boolean) set [email protected],1; // Level Ranking. set [email protected],1; // PK Ranking. set [email protected],1; // MvP Ranking. set [email protected],1; // Emperium Ranking. set [email protected],1; // [Guild] Level Ranking. set [email protected],1; // [Guild] WoE Ranking. set .pk,10; // Level range to get points in the PK Ranking. (Range | 0 = off) set [email protected],14; // Inactivity time to be considered an inactive player: (Days | 0 = off) set [email protected],100; // Number of entries that will be shown by the npc. set [email protected],80; // Gm level required to avoid the Ranking. set .gm1,50; // Gm level required to use the Control Panel whispering to NPC:ranker . // Colors: set [email protected]$[0],"ff2200"; // Your character/guild. set [email protected]$[1],"993333"; // Account characters. set [email protected]$[2],"66bbaa"; // Online Guild members. set [email protected]$[3],"449988"; // Offline Guild members. set [email protected]$[4],"888888"; // Online characters/guilds. set [email protected]$[5],"777777"; // Offline characters. // Ranking rewards: // Each Sunday, TOP 1 characters in each ranking will receive some item rewards. (Amount | 0 = off) set [email protected],7539; // Reward item id. set [email protected],0; // Level Ranking. set [email protected],5; // PK Ranking. set [email protected],5; // MvP Ranking. set [email protected],5; // Emperium Ranking. set .db,4000; // MAX_MOB_DB value in ./src/map/mob.h . setarray .restrictedMaps$[0],"pvp_n_1-2"; // [--------------------------------------------------------] // [ End of configuration. ] // [========================================================] setBattleFlag "pk_level_range",.pk; // Create database tables: query_sql "CREATE TABLE IF NOT EXISTS `ranker_char` (`char_id` int(11) unsigned NOT NULL default '0', `offline` tinyint unsigned NOT NULL default '0')"; query_sql "CREATE TABLE IF NOT EXISTS `ranker_guild` (`guild_id` int(11) unsigned)"; // Add Rankings: if([email protected]) callfunc "CPAddRanking","a","Level Ranking","Base","base_level","Job","job_level",1,[email protected]; if([email protected]) callfunc "CPAddRanking","b","PK Ranking","Kills","kills","Deaths","deaths",1,[email protected]; else callfunc "CPDropRanking","kills","deaths",1; if([email protected]) callfunc "CPAddRanking","c","MvP Ranking","MVPs","mvps","Bosses","bosses",1,[email protected]; else callfunc "CPDropRanking","mvps","bosses",1; if([email protected]) callfunc "CPAddRanking","d","Emperium Ranking","Emperiums","emperiums","Guardian Stones","stones",1,[email protected]; else callfunc "CPDropRanking","emperiums","stones",1; if([email protected]) callfunc "CPAddRanking","f","Level Ranking","Level","guild_lv","Experience","exp",2; if([email protected]) callfunc "CPAddRanking","e","WoE Ranking","Castles","castles","Captures","captures",2; else callfunc "CPDropRanking","castles","captures",2; // Modify NPC names: set [email protected],1; while(!setnpcdisplay("CP#"[email protected],[email protected]$+"#"[email protected])) set [email protected],[email protected] + 1; callfunc "CPPurge"; end; OnClock0001: callfunc "CPPurge"; if(!gettime(4)) { set [email protected],getarraysize([email protected]$); while([email protected]) { set [email protected],[email protected] - 1; if([email protected][[email protected]]) { query_sql "SELECT `"[email protected]$[[email protected]]+"`,`"[email protected]$[[email protected]]+"` FROM `ranker_char` LEFT JOIN `char` ON `char`.`char_id` = `ranker_char`.`char_id` ORDER BY `"[email protected]$[[email protected]]+"` DESC,`"[email protected]$[[email protected]]+"` DESC LIMIT 1",[email protected],[email protected]; if(([email protected] > 0) || ([email protected] > 0)) { set [email protected],0; do { while([email protected]) { set [email protected],[email protected] - 1; query_sql "INSERT `mail` (`send_name`,`send_id`,`dest_name`,`dest_id`,`title`,`message`,`time`,`nameid`,`amount`,`identify`) VALUES ('"[email protected]$+"','1','"[email protected]$[[email protected]]+"','"[email protected][[email protected]]+"','"[email protected]$[[email protected]]+"','Congratulations! Here you are a reward for holding the TOP 1 position in the "[email protected]$[[email protected]]+"!',UNIX_TIMESTAMP(),'"[email protected]+"','"[email protected][[email protected]]+"','1')"; } set [email protected],query_sql("SELECT `char`.`char_id`,`name` FROM `ranker_char` LEFT JOIN `char` ON `char`.`char_id` = `ranker_char`.`char_id` WHERE `"[email protected]$[[email protected]]+"` = '"[email protected]+"' AND `"[email protected]$[[email protected]]+"` = '"[email protected]+"' LIMIT "[email protected]+",128",[email protected],[email protected]$); set [email protected],[email protected] + [email protected]; } while([email protected]); } } } } end; OnPCLoginEvent: if(getgmlevel() < [email protected]) { callfunc "CPAddChar"; query_sql "UPDATE `ranker_char` SET `offline` = '0' WHERE `char_id` = '"+getcharid(0)+"'"; } end; OnPCLogoutEvent: callfunc "CPAddChar"; end; OnPCBaseLvUpEvent: OnPCJobLvUpEvent: if([email protected] && (getgmlevel() < [email protected])) { callfunc "CPAddChar"; set [email protected],getcharid(0); query_sql "SELECT `base_level`,`job_level` FROM `char` WHERE `char_id` = '"[email protected]+"'",[email protected],[email protected]; set [email protected],callfunc("CPCount",[email protected] - 1,[email protected],[email protected]); set [email protected],BaseLevel; set [email protected],JobLevel; query_sql "UPDATE `char` SET `base_level` = '"[email protected]+"',`job_level` = '"[email protected]+"' WHERE `char_id` = '"[email protected]+"'"; set [email protected],callfunc("CPCount",[email protected] - 1,[email protected],[email protected]); if([email protected] < [email protected]) announce "You have raised the position ["[email protected]+"] in the Level Ranking.",bc_self,0xff6622; } end; // PK Ranking: OnPCKillEvent: if([email protected] && (getgmlevel() < [email protected])) { set [email protected],getcharid(3); set [email protected],killedrid; if([email protected] != [email protected] { set [email protected],BaseLevel; if(attachrid([email protected]) // Killed: if((getgmlevel() < [email protected]) && (!.pk || ([email protected] <= (BaseLevel + .pk)))) { callfunc "CPRankChar",[email protected] - 1,0,-1; if(!sc_check(SC_PKDELAY)) if(attachrid([email protected])) // Killer: callfunc "CPRankChar",[email protected] - 1,1,0; } } } end; // MVP Ranking: OnNPCKillEvent: for ( set [email protected],0; [email protected] < getarraysize(.restrictedMap$); set [email protected], [email protected] + 1 ) if(strcharinfo(3) == .restrictedMaps$[[email protected]]) end; if([email protected] && (getgmlevel() < [email protected])) { set [email protected],killedrid; if([email protected] && ([email protected] <= (.db - 1000))) { if(getmonsterinfo([email protected],21) & 0x0020) { if(getmonsterinfo([email protected],22)) callfunc "CPRankChar",[email protected] - 1,1,0; // MVP. else callfunc "CPRankChar",[email protected] - 1,0,1; // Boss. } } } end; // WoE Ranking: OnAgitEnd: if([email protected]) callsub OnWoE,0,19; end; OnAgitEnd2: if([email protected]) callsub OnWoE,24,33; end; OnWoE: set [email protected],query_sql("SELECT `guild_id`,COUNT(`guild_id`) FROM `guild_castle` WHERE `castle_id` BETWEEN '"+getarg(0)+"' AND '"+getarg(1)+"' GROUP by `guild_id`",[email protected],[email protected]); while([email protected]) { set [email protected],[email protected] - 1; callfunc "CPRankGuild",[email protected] - 1,[email protected][[email protected]],[email protected][[email protected]],0; } return; // GMs Control Panel: OnWhisperGlobal: if(getgmlevel() >= .gm1) { set [email protected]$,"^008888"[email protected]$+"^000000"; mes [email protected]$; mes "Hello "+strcharinfo(0)+"."; mes "This is the Control Panel of the server Ranking."; mes "How can I help you?"; next; set [email protected],getarraysize([email protected]$); while([email protected]) { set [email protected],[email protected] - 1; set [email protected]$,[email protected]$[[email protected]]; if([email protected]$ != "") { if(query_sql("SHOW COLUMNS FROM `ranker_"[email protected]$+"` WHERE `Field` IN ('"[email protected]$[[email protected]]+"','"[email protected]$[[email protected]]+"')",[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]) == 2) set [email protected]$[[email protected]],"Reset "[email protected]$[[email protected]]; } } set [email protected],select("^880000Exit^000000","Reset all the Rankings.",[email protected]$[0],[email protected]$[1],[email protected]$[2],[email protected]$[3],[email protected]$[4],[email protected]$[5],[email protected]$[6],[email protected]$[7],[email protected]$[8],[email protected]$[9]) - 1; mes [email protected]$; if([email protected]) { if([email protected] == 1) { callfunc "CPReset0"; mes "All the Rankings has been reseted."; } else { set [email protected],[email protected] - 2; callfunc "CPReset1",[email protected]; mes "The "[email protected]$[[email protected]]+" has been reseted."; } } mes "Have a nice day."; close; } end; } // Add a new Ranking: // getarg(0): Ranking Id. (char) // getarg(1): Name. // getarg(2): 1st header. // getarg(3): 1st column name. // getarg(4): 2nd header. // getarg(5): 2nd column name. // getarg(6): Ranking type. (1 = char | 2 = guild) // getarg(7): Amount of reward items. (optional) function script CPAddRanking { set [email protected],getarg(6); if([email protected] == 1) set [email protected]$,"char"; else if([email protected] == 2) set [email protected]$,"guild"; if([email protected]$ != "") { set [email protected],getarraysize([email protected]$); setd "[email protected]"+getarg(0),[email protected] + 1; set [email protected]$[[email protected]],getarg(1); if([email protected] == 2) set [email protected]$[[email protected]],"[Guild] "[email protected]$[[email protected]]; set [email protected]$[[email protected]],getarg(2); set [email protected]$[[email protected]],getarg(3); set [email protected]$[[email protected]],getarg(4); set [email protected]$[[email protected]],getarg(5); set [email protected]$[[email protected]],[email protected]$; if([email protected] == 1) set [email protected][[email protected]],getarg(7,0); callfunc "CPAddColumn",[email protected]$,getarg(3); callfunc "CPAddColumn",[email protected]$,getarg(5); } return; } // Add a new column to the database: // getarg(0): Database name. ("char" | "guild") // getarg(1): Column name. function script CPAddColumn { if( !query_sql("SHOW COLUMNS FROM `"+getarg(0)+"` WHERE `Field` = '"+getarg(1)+"'",[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]) && !query_sql("SHOW COLUMNS FROM `ranker_"+getarg(0)+"` WHERE `Field` = '"+getarg(1)+"'",[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]) ) query_sql "ALTER TABLE `ranker_"+getarg(0)+"` ADD `"+getarg(1)+"` mediumint NOT NULL default '0'"; return; } // Drop a ranking: // getarg(0): 1st column. // getarg(1): 2nd column. // getarg(2): Ranking type. (1 = char | 2 = guild) function script CPDropRanking { set [email protected],getarg(2); if([email protected] == 1) set [email protected]$,"char"; else if([email protected] == 2) set [email protected]$,"guild"; if([email protected]$ != "") { callfunc "CPDropColumn",[email protected]$,getarg(0); callfunc "CPDropColumn",[email protected]$,getarg(1); } return; } // Drop a column of the database: // getarg(0): Table name. ("char" | "guild") // getarg(1): Column name. function script CPDropColumn { if(query_sql("SHOW COLUMNS FROM `ranker_"+getarg(0)+"` WHERE `Field` = '"+getarg(1)+"'",[email protected],[email protected],[email protected],[email protected],[email protected],[email protected])) query_sql "ALTER TABLE `ranker_"+getarg(0)+"` DROP COLUMN `"+getarg(1)+"`"; return; } // Purge inactive Guilds and Players: function script CPPurge { if([email protected]) { set [email protected],gettimetick(2) / (60 * 60 * 24); if([email protected] > $d) { set $d,[email protected]; // Last purged. query_sql "DELETE FROM `ranker_char` WHERE `offline` >= '"[email protected]+"'"; query_sql "DELETE FROM `ranker_char` WHERE `char_id` NOT IN (SELECT `char_id` FROM `char`)"; query_sql "UPDATE `ranker_char` LEFT JOIN `char` ON `char`.`char_id` = `ranker_char`.`char_id` SET `offline` = `offline` + 1 WHERE `online` = '0'"; query_sql "DELETE FROM `ranker_guild` WHERE `guild_id` NOT IN (SELECT `guild_id` FROM `guild`)"; query_sql "DELETE FROM `ranker_guild` WHERE `guild_id` NOT IN (SELECT `guild_id` FROM `ranker_char` LEFT JOIN `char` ON `char`.`char_id` = `ranker_char`.`char_id`)"; } } return; } // Add a new player to the ranking: function script CPAddChar { if(playerattached()) { if(getgmlevel() < [email protected]) { set [email protected],getcharid(0); if(!query_sql("SELECT `char_id` FROM `ranker_char` WHERE `char_id` = '"[email protected]+"'",[email protected]) query_sql "INSERT `ranker_char` (`char_id`) VALUES ('"[email protected]+"')"; set [email protected],getcharid(2); if([email protected]) callfunc "CPAddGuild",[email protected]; } } return; } // Add a new guild to the ranking: // getarg(0): Guild Id. function script CPAddGuild { if(!query_sql("SELECT `guild_id` FROM `ranker_guild` WHERE `guild_id` = '"+getarg(0)+"'",[email protected]) query_sql "INSERT `ranker_guild` (`guild_id`) VALUES ('"+getarg(0)+"')"; return; } // Modify the values in the ranker_char table: // getarg(0): Ranking Index. // getarg(1): 1st value increment. // getarg(2): 2nd value increment. function script CPRankChar { set [email protected],getarg(0); if(playerattached() && ([email protected]$[[email protected]] == "char")) { if(getgmlevel() < [email protected]) { callfunc "CPAddChar"; set [email protected],getcharid(0); query_sql "SELECT `"[email protected]$[[email protected]]+"`,`"[email protected]$[[email protected]]+"` FROM `ranker_char` WHERE `char_id` = '"[email protected]+"'",[email protected],[email protected]; set [email protected],callfunc("CPCount",[email protected],[email protected],[email protected]); set [email protected],[email protected] + getarg(1); set [email protected],[email protected] + getarg(2); query_sql "UPDATE `ranker_char` SET `"[email protected]$[[email protected]]+"` = '"[email protected]+"',`"[email protected]$[[email protected]]+"` = '"[email protected]+"' WHERE `char_id` = '"[email protected]+"'"; set [email protected],callfunc("CPCount",[email protected],[email protected],[email protected]); if([email protected] < [email protected]) announce "You have raised the position ["[email protected]+"] in the "[email protected]$[[email protected]]+".",bc_self,0xff6622; } } return; } // Modify the value in the ranker_guild table: // getarg(0): Ranking Index. // getarg(1): Guild Id. // getarg(2): 1st value increment. // getarg(3): 2nd value increment. function script CPRankGuild { set [email protected],getarg(0); set [email protected],getarg(1); if([email protected] && [email protected]$[[email protected]] == "guild") { callfunc "CPAddGuild",[email protected]; query_sql "SELECT `"[email protected]$[[email protected]]+"`,`"[email protected]$[[email protected]]+"` FROM `ranker_guild` WHERE `guild_id` = '"[email protected]+"'",[email protected],[email protected]; set [email protected],callfunc("CPCount",[email protected],[email protected],[email protected]); set [email protected],[email protected] + getarg(2); set [email protected],[email protected] + getarg(3); query_sql "UPDATE `ranker_guild` SET `"[email protected]$[[email protected]]+"` = '"[email protected]+"',`"[email protected]$[[email protected]]+"` = '"[email protected]+"' WHERE `guild_id` = '"[email protected]+"'"; set [email protected],callfunc("CPCount",[email protected],[email protected],[email protected]); if([email protected] < [email protected]) { if(playerattached()) set [email protected],getcharid(3); set [email protected],query_sql("SELECT `account_id` FROM `char` WHERE `guild_id` = '"[email protected]+"' AND `online` = '1'",[email protected]); while([email protected]) { set [email protected],[email protected] - 1; if(attachrid([email protected][[email protected]])) announce "The ["+getguildname([email protected]+"] guild has raised the position ["[email protected]+"] in the "[email protected]$[[email protected]]+".",bc_self,0xff6622; } if([email protected]) attachrid [email protected]; } } return; } // Returns the ranking position for the given values: // getarg(0): Ranking Index. // getarg(1): 1st value. // getarg(2): 2nd value. // getarg(3): Additional condition. (optional) function script CPCount { set [email protected],getarg(0); set [email protected]$,[email protected]$[[email protected]]; if([email protected]$ != "") { set [email protected]$,getarg(3,""); if([email protected]$ != "") set [email protected]$,"AND "[email protected]$; query_sql "SELECT COUNT(*) FROM `ranker_"[email protected]$+"` LEFT JOIN `"[email protected]$+"` ON `"[email protected]$+"`.`"[email protected]$+"_id` = `ranker_"[email protected]$+"`.`"[email protected]$+"_id` WHERE (`"[email protected]$[[email protected]]+"` > '"+getarg(1)+"' OR (`"[email protected]$[[email protected]]+"` = '"+getarg(1)+"' AND `"[email protected]$[[email protected]]+"` > '"+getarg(2)+"')) "[email protected]$,[email protected]; set [email protected],[email protected] + 1; } return [email protected]; } // Reset all the rankings: function script CPReset0 { query_sql "TRUNCATE `ranker_char`"; query_sql "TRUNCATE `ranker_guild`"; return; } // Reset a single ranking: // getarg(0): Ranking Index. function script CPReset1 { set [email protected],getarg(0); set [email protected]$,[email protected]$[[email protected]]; if([email protected]$ != "") query_sql "UPDATE `ranker_"[email protected]$+"` SET `"[email protected]$[[email protected]]+"` = '0', `"[email protected]$[[email protected]]+"` = '0'"; return; } // Activates when breaking an Emperium: function script CPEmp0 { if(getgmlevel() < [email protected]) { set [email protected],getcharid(2); if([email protected]) callfunc "CPRankChar",[email protected] - 1,1,0; if([email protected] && [email protected] callfunc "CPRankGuild",[email protected] - 1,[email protected],0,1; } return; } // Activates when breaking a Guardian Stone: function script CPEmp1 { if([email protected]) callfunc "CPRankChar",[email protected] - 1,0,1; return; } // Npcs: - script CP#0::CP -1,{ set [email protected]$,"^008888"[email protected]$+"^000000"; mes [email protected]$; mes "Hello "+strcharinfo(0)+"."; mes "Would you like to take a look at the server rankings?"; next; set [email protected],getarraysize([email protected]$); while([email protected]) { set [email protected],[email protected] - 1; set [email protected]$[[email protected]],[email protected]$[[email protected]]; } set [email protected],select("^880000Exit^000000",[email protected]$[0],[email protected]$[1],[email protected]$[2],[email protected]$[3],[email protected]$[4],[email protected]$[5],[email protected]$[6],[email protected]$[7],[email protected]$[8],[email protected]$[9]) - 2; mes [email protected]$; if([email protected] >= 0) { if([email protected]$[[email protected]] == "char") { mes "Which players do you want to be displayed?"; next; set [email protected],select("^880000All the Players^000000","Online Players","Transcendent Characters","Babies","Select a Class") - 1; if([email protected] == 4) set [email protected],select("Novice","Swordman","Mage","Archer","Acolyte","Merchant","Thief","Taekwon","Gunslinger","Ninja","Super Novice","Knight","Crussader","Wizard","Sage","Hunter","Bard/Dancer","Priest","Monk","Blacksmith","Alchemist","Assassin","Rogue","Star Gladiator","Soul Linker") - 1; mes [email protected]$; } mes "Ok."; mes "I'll send the data to your chat window."; } mes "Have a nice day."; close2; emotion 12; if([email protected] >= 0) { callfunc "CPAddChar"; if([email protected]$[[email protected]] == "char") { // Show Player based Ranking: switch([email protected] { case 1: set [email protected]$,"`online` = '1'"; break; case 2: set [email protected]$,"`class` BETWEEN '4001' AND '4022'"; break; case 3: set [email protected]$,"`class` BETWEEN '4023' AND '4045'"; break; case 4: switch([email protected]) { case 0: set [email protected]$,"IN ('0','4001','4023')"; break; case 1: set [email protected]$,"IN ('1','4002','4024')"; break; case 2: set [email protected]$,"IN ('2','4003','4025')"; break; case 3: set [email protected]$,"IN ('3','4004','4026')"; break; case 4: set [email protected]$,"IN ('4','4005','4027')"; break; case 5: set [email protected]$,"IN ('5','4006','4028')"; break; case 6: set [email protected]$,"IN ('6','4007','4029')"; break; case 7: set [email protected]$,"= '4046'"; break; case 8: set [email protected]$,"= '24'"; break; case 9: set [email protected]$,"= '25'"; break; case 10: set [email protected]$,"IN ('23','4045')"; break; case 11: set [email protected]$,"IN ('7','13','4008','4014','4030','4036')"; break; case 12: set [email protected]$,"IN ('14','21','4015','4022','4037','4044')"; break; case 13: set [email protected]$,"IN ('9','4010','4032')"; break; case 14: set [email protected]$,"IN ('16','4017','4039')"; break; case 15: set [email protected]$,"IN ('11','4012','4034')"; break; case 16: set [email protected]$,"IN ('19','20','4020','4021','4042','4043')"; break; case 17: set [email protected]$,"IN ('8','4009','4031')"; break; case 18: set [email protected]$,"IN ('15','4016','4038')"; break; case 19: set [email protected]$,"IN ('10','4011','4033')"; break; case 20: set [email protected]$,"IN ('18','4019','4041')"; break; case 21: set [email protected]$,"IN ('12','4013','4035')"; break; case 22: set [email protected]$,"IN ('17','4018','4040')"; break; case 23: set [email protected]$,"IN ('4047','4048')"; break; case 24: set [email protected]$,"= '4049'"; break; } set [email protected]$,"`class` "[email protected]$; break; } if([email protected] set [email protected]$," WHERE "[email protected]$; set [email protected],getcharid(0); set [email protected],getcharid(2); set [email protected],getcharid(3); set [email protected],query_sql("SELECT `char`.`char_id`,`account_id`,`name`,`class`,`guild_id`,`online`,abs(`"[email protected]$[[email protected]]+"`),abs(`"[email protected]$[[email protected]]+"`) FROM `ranker_char` LEFT JOIN `char` ON `char`.`char_id` = `ranker_char`.`char_id`"[email protected]$+" ORDER BY `"[email protected]$[[email protected]]+"` DESC,`"[email protected]$[[email protected]]+"` DESC LIMIT "[email protected],[email protected],[email protected],[email protected]$,[email protected],[email protected],[email protected],[email protected],[email protected]); announce "[ "[email protected]$[[email protected]]+" ] [ "[email protected]$[[email protected]]+" / "[email protected]$[[email protected]]+" ] - Name - Job - Guild",bc_self,0xff7700; set [email protected],0; while([email protected] < [email protected]) { if([email protected][[email protected]] == [email protected]) { // You. set [email protected],0; set [email protected],0; } else if([email protected][[email protected]] == [email protected]) // Account. set [email protected],1; else if([email protected] && ([email protected][[email protected]] == [email protected])) { // Guild. if([email protected][[email protected]]) set [email protected],2; else set [email protected],3; } else { if([email protected][[email protected]]) set [email protected],4; else set [email protected],5; } if([email protected]) set [email protected],1; else if(([email protected][[email protected]] != [email protected][[email protected] - 1]) || ([email protected][[email protected]] != [email protected][[email protected] - 1])) set [email protected],[email protected] + 1; if([email protected][[email protected]]) set [email protected]$,getguildname([email protected][[email protected]]); else set [email protected]$,""; announce "[ "[email protected]+" ] [ "[email protected][[email protected]]+" / "[email protected][[email protected]]+" ] - "[email protected]$[[email protected]]+" - "+jobname([email protected][[email protected]])+" - "[email protected]$,bc_self,"0x"[email protected]$[[email protected]]; set [email protected],[email protected] + 1; } if([email protected] && ([email protected] >= [email protected])) { if([email protected] set [email protected]$," AND "[email protected]$; if(query_sql("SELECT abs(`"[email protected]$[[email protected]]+"`),abs(`"[email protected]$[[email protected]]+"`) FROM `ranker_char` LEFT JOIN `char` ON `char`.`char_id` = `ranker_char`.`char_id` WHERE `char`.`char_id` = '"[email protected]+"'"[email protected]$,[email protected],[email protected])) { set [email protected],callfunc("CPCount",[email protected],[email protected],[email protected],[email protected]$); if([email protected]) set [email protected]$,getguildname([email protected]); else set [email protected]$,""; announce "[ "[email protected]+" ] [ "[email protected]+" / "[email protected]+" ] - "+strcharinfo(0)+" - "+jobname(class)+" - "[email protected]$,bc_self,"0x"[email protected]$[0]; } } } else if([email protected]$[[email protected]] == "guild") { // Show Guild based Ranking: set [email protected],getcharid(2); set [email protected],query_sql("SELECT `guild`.`guild_id`,`name`,abs(`"[email protected]$[[email protected]]+"`),abs(`"[email protected]$[[email protected]]+"`) FROM `ranker_guild` LEFT JOIN `guild` ON `guild`.`guild_id` = `ranker_guild`.`guild_id` ORDER BY `"[email protected]$[[email protected]]+"` DESC,`"[email protected]$[[email protected]]+"` DESC LIMIT "[email protected],[email protected],[email protected]$,[email protected],[email protected]); announce "[ "[email protected]$[[email protected]]+" ] [ "[email protected]$[[email protected]]+" / "[email protected]$[[email protected]]+" ] - Name",bc_self,0xff7700; set [email protected],0; while([email protected] < [email protected]) { if([email protected][[email protected]] == [email protected]) { // Your Guild. set [email protected],0; set [email protected],0; } else set [email protected],4; if([email protected]) set [email protected],1; else if(([email protected][[email protected]] != [email protected][[email protected] - 1]) || ([email protected][[email protected]] != [email protected][[email protected] - 1])) set [email protected],[email protected] + 1; announce "[ "[email protected]+" ] [ "[email protected][[email protected]]+" / "[email protected][[email protected]]+" ] - "[email protected]$[[email protected]],bc_self,"0x"[email protected]$[[email protected]]; set [email protected],[email protected] + 1; } if([email protected] && ([email protected] >= [email protected])) { query_sql "SELECT `"[email protected]$[[email protected]]+"`,`"[email protected]$[[email protected]]+"` FROM `ranker_guild` LEFT JOIN `guild` ON `guild`.`guild_id` = `ranker_guild`.`guild_id` WHERE `guild`.`guild_id` = '"[email protected]+"'",[email protected],[email protected]; set [email protected],callfunc("CPCount",[email protected],[email protected],[email protected]); set [email protected]$,getguildname([email protected]); announce "[ "[email protected]+" ] [ "[email protected]+" / "[email protected]+" ] - "[email protected]$,bc_self,"0x"[email protected]$[0]; } } if([email protected]) announce "No result has been found.",bc_self,0x777777; announce "----------",bc_self,0xff7700; } end; } alberta,195,138,4 duplicate(CP) CP#1 859 alberta,51,250,5 duplicate(CP) CP#2 859 aldebaran,133,116,6 duplicate(CP) CP#3 859 aldebaran,133,236,6 duplicate(CP) CP#4 859 alde_gld,234,150,4 duplicate(CP) CP#5 859 amatsu,242,279,6 duplicate(CP) CP#6 859 amatsu,99,260,4 duplicate(CP) CP#7 859 amatsu,207,100,4 duplicate(CP) CP#8 859 ayothaya,212,204,4 duplicate(CP) CP#9 859 ayothaya,157,78,4 duplicate(CP) CP#10 859 comodo,180,329,4 duplicate(CP) CP#11 859 comodo,205,112,4 duplicate(CP) CP#12 859 comodo,316,181,4 duplicate(CP) CP#13 859 comodo,36,221,6 duplicate(CP) CP#14 859 einbech,66,92,6 duplicate(CP) CP#15 859 einbech,131,245,6 duplicate(CP) CP#16 859 einbech,42,201,8 duplicate(CP) CP#17 859 einbroch,74,187,2 duplicate(CP) CP#18 859 einbroch,149,315,6 duplicate(CP) CP#19 859 einbroch,152,49,4 duplicate(CP) CP#20 859 einbroch,249,239,2 duplicate(CP) CP#21 859 geffen,123,69,4 duplicate(CP) CP#22 859 geffen,41,107,6 duplicate(CP) CP#23 859 geffen,124,177,4 duplicate(CP) CP#24 859 geffen,171,123,6 duplicate(CP) CP#25 859 gef_fild13,193,244,4 duplicate(CP) CP#26 859 gonryun,152,110,6 duplicate(CP) CP#27 859 gonryun,168,180,2 duplicate(CP) CP#28 859 gonryun,153,16,6 duplicate(CP) CP#29 859 hugel,101,130,4 duplicate(CP) CP#30 859 hugel,178,170,4 duplicate(CP) CP#31 859 izlude,121,94,6 duplicate(CP) CP#32 859 jawaii,136,255,4 duplicate(CP) CP#33 859 yuno,175,89,4 duplicate(CP) CP#34 859 yuno,68,203,4 duplicate(CP) CP#35 859 sch_gld,291,123,4 duplicate(CP) CP#36 859 lighthalzen,209,95,6 duplicate(CP) CP#37 859 lighthalzen,218,322,4 duplicate(CP) CP#38 859 lighthalzen,311,299,4 duplicate(CP) CP#39 859 louyang,203,104,6 duplicate(CP) CP#40 859 louyang,57,246,4 duplicate(CP) CP#41 859 xmas,139,306,6 duplicate(CP) CP#42 859 xmas,161,108,4 duplicate(CP) CP#43 859 morocc,166,76,4 duplicate(CP) CP#44 859 morocc,47,174,4 duplicate(CP) CP#45 859 morocc,166,289,4 duplicate(CP) CP#46 859 morocc,279,197,8 duplicate(CP) CP#47 859 morocc,35,290,4 duplicate(CP) CP#48 859 moscovia,238,198,4 duplicate(CP) CP#49 859 moscovia,159,62,4 duplicate(CP) CP#50 859 niflheim,29,158,6 duplicate(CP) CP#51 859 niflheim,199,188,4 duplicate(CP) CP#52 859 payon,213,72,6 duplicate(CP) CP#53 859 payon,160,49,2 duplicate(CP) CP#54 859 payon,232,316,4 duplicate(CP) CP#55 859 payon,63,120,6 duplicate(CP) CP#56 859 pay_gld,201,157,4 duplicate(CP) CP#57 859 prontera,165,71,4 duplicate(CP) CP#58 859 prontera,40,212,6 duplicate(CP) CP#59 859 prontera,164,170,4 duplicate(CP) CP#60 859 prontera,259,213,4 duplicate(CP) CP#61 859 prontera,161,312,4 duplicate(CP) CP#62 859 prt_gld,166,75,4 duplicate(CP) CP#63 859 rachel,264,136,4 duplicate(CP) CP#64 859 rachel,150,144,4 duplicate(CP) CP#65 859 rachel,135,45,4 duplicate(CP) CP#66 859 rachel,39,131,6 duplicate(CP) CP#67 859 aru_gld,179,326,6 duplicate(CP) CP#68 859 umbala,121,128,8 duplicate(CP) CP#69 859 umbala,163,249,4 duplicate(CP) CP#70 859 veins,209,234,4 duplicate(CP) CP#71 859 veins,222,352,4 duplicate(CP) CP#72 859 veins,157,62,6 duplicate(CP) CP#73 859 mid_camp,219,287,4 duplicate(CP) CP#74 859 mid_camp,138,235,6 duplicate(CP) CP#75 859 mid_camp,252,232,8 duplicate(CP) CP#76 859 manuk,281,126,2 duplicate(CP) CP#77 859 manuk,181,177,6 duplicate(CP) CP#78 859 splendide,181,137,6 duplicate(CP) CP#79 859
-
Add a restriction list as NPC-array in a OnInit event label:
OnInit: setarray .restrictedMaps$[0],"prontera","your_map",[...];Add a check at the very beginning of your script after the NPCKillEvent label call:
OnNPCKillEvent: for( [email protected]=0; [email protected]<getarraysize(.restrictedMap$); [email protected]++ ) if(strcharinfo(3) == .restrictedMaps$[[email protected]]) end; if([email protected] && (getgmlevel() < [email protected])) { //[...]
Hi! Thanks for you help. I'm getting this error:
parse_line: expect command, missing function name or calling undeclared function210 : end;*/
211 :
212 : // MVP Ranking:
213 : OnNPCKillEvent:
214 :
* 215 : for( '.'@i=0; [email protected]<getarraysize(.restrictedMap$); [email protected]++ )
216 : if(strcharinfo(3) == .restrictedMaps$[[email protected]])
217 : end
218 :
-
Hi, how can I script this ranker npc I'm using so it won't record MVP kills in certains maps? (MVP rooms; i.e pvp_n_1-2)
Here's the part in the script:
OnNPCKillEvent: if([email protected] && (getgmlevel() < [email protected])) { set [email protected],killedrid; if([email protected] && ([email protected] <= (.db - 1000))) { if(getmonsterinfo([email protected],21) & 0x0020) { if(getmonsterinfo([email protected],22)) callfunc "CPRankChar",[email protected] - 1,1,0; // MVP. else callfunc "CPRankChar",[email protected] - 1,0,1; // Boss. } } } end;
-
What do you mean?
Like instead of adding the grf, I plan to extract the contents and distribute it via thor patcher.
-
Will patching this work too?
-
Oops, missed that. Thanks!
-
Try something like:
OnPCLoadMapEvent:
getmapxy .Maroll$,@x,@y,0;
if ( [email protected]$ == "bat_room" ) {
if (query_sql("SELECT login.account_id FROM login LEFT JOIN `char` ON login.account_id=`char`.account_id WHERE login.last_ip=(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") AND `char`.online=1", [email protected]_id) > 5) {
warp "new_pront",156,177;
dispbottom "You exceeded the maximum accounts allowed in this area.";
end;
}
} -
Replace the spaces in the header with tabs.
-<TAB>script<TAB>hourlypoints<TAB>-1,{EDIT: Oh wow... I'm late at posting. x.x
-
I don't know, sorry. :/
Box of Gloom pretty much does the same thing though.
-
Yes, I used to play in a server where Lord of Vermillion had a different animation. I extracted their grf and found that they changed all lord_*_*.bmp files, there were like 15 of them.

-
Probably cause SC_CONCENTRATE doesn't have:
In skill.c; AC_CONCENTRATION:
map_foreachinrange( status_change_timer_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, src,NULL,type,tick,skillid,skilllv);
-
Please post the script.
-
In status.c:
case SC_CONCENTRATE: status_change_end(bl, SC_HIDING, -1); status_change_end(bl, SC_CLOAKING, -1); status_change_end(bl, SC_CLOAKINGEXCEED, -1); status_change_end(bl, SC_CAMOUFLAGE, -1); status_change_end(bl, SC__INVISIBILITY, -1); break;
Item usage delay after post-asura
in Source Requests
Posted
Doesn't work.
Encountering a lot of errors, most of which seem due to the emulator difference.