· 5 years ago · Mar 25, 2020, 12:30 PM
1//===== rAthena Script =======================================
2//= WoE Ranking
3//===== By: ==================================================
4//= BeWan
5//https://rathena.org/board/profile/62232-bewan/
6//===== Current Version: =====================================
7//= 1.0
8//===== Description: =========================================
9//= WoE Ranking with top kills, deaths and emp breaker
10//============================================================
11
12/*
13DROP TABLE IF EXISTS `woe_ranking`;
14
15CREATE TABLE IF NOT EXISTS `woe_ranking` (
16`Char_ID` int(11) unsigned NOT NULL DEFAULT '0',
17`PlayerName` varchar(255) NULL DEFAULT '',
18`Kills` varchar(255) NULL DEFAULT '',
19`Deaths` varchar(255) NULL DEFAULT '',
20`EmpBreak` varchar(255) NULL DEFAULT '',
21PRIMARY KEY (`Char_ID`)
22) ENGINE=MyISAM;
23*/
24
25prontera,166,184,4 script Krane The Ranker 417,{
26
27 set .@menu$, "Top "+.top+" Kills:Top "+.top+" Deaths:Top "+.top+" Breaker:";
28 if (getgmlevel() == 99) { set .@menu$, .@menu$ + "Reset Data"; }
29 switch(select(.@menu$)) {
30 case 1:
31 query_sql "CREATE TABLE IF NOT EXISTS `woe_ranking` ( `Char_ID` int(11) unsigned NOT NULL DEFAULT '0', `PlayerName` varchar(255) NULL DEFAULT '', `Kills` varchar(255) NULL DEFAULT '', `Deaths` varchar(255) NULL DEFAULT '', `EmpBreak` varchar(255) NULL DEFAULT '', PRIMARY KEY (`Char_ID`) ) ENGINE=MyISAM";
32 query_sql( "DELETE FROM `woe_ranking` WHERE `PlayerName` NOT IN ( SELECT `name` FROM `char` )" );
33 set .@size, query_sql( "SELECT * FROM woe_ranking WHERE Kills > 0 ORDER BY Kills DESC limit "+ .top, .@CharID, .@name$, .@Kills, .@Deaths, .@EmpBreak);
34
35 mes "[^FF0000WoE ^0000FFRank ^996600Top ^FF0000" + .top +"^000000]";
36 for (set .@c, 0; .@c < .@size; set .@c, .@c + 1)
37 mes "Top ^FF0000" +(.@c + 1) +"^000000: ^0000FF" + .@name$[.@c] +"^000000 | ^FF0000" + .@Kills[.@c] +"^000000 Kills | ^FF0000" + .@Deaths[.@c] +"^000000 Deaths | ^FF0000" + .@EmpBreak[.@c] +"^000000 Emp Break";
38 close;
39 break;
40
41 case 2:
42 query_sql "CREATE TABLE IF NOT EXISTS `woe_ranking` ( `Char_ID` int(11) unsigned NOT NULL DEFAULT '0', `PlayerName` varchar(255) NULL DEFAULT '', `Kills` varchar(255) NULL DEFAULT '', `Deaths` varchar(255) NULL DEFAULT '', `EmpBreak` varchar(255) NULL DEFAULT '', PRIMARY KEY (`Char_ID`) ) ENGINE=MyISAM";
43 query_sql( "DELETE FROM `woe_ranking` WHERE `PlayerName` NOT IN ( SELECT `name` FROM `char` )" );
44 set .@size, query_sql( "SELECT * FROM woe_ranking WHERE Deaths > 0 ORDER BY Deaths DESC limit "+ .top, .@CharID, .@name$, .@Kills, .@Deaths, .@EmpBreak);
45
46 mes "[^FF0000WoE ^0000FFRank ^996600Top ^FF0000" + .top +"^000000]";
47 for (set .@c, 0; .@c < .@size; set .@c, .@c + 1)
48 mes "Top ^FF0000" +(.@c + 1) +"^000000: ^0000FF" + .@name$[.@c] +"^000000 | ^FF0000" + .@Kills[.@c] +"^000000 Kills | ^FF0000" + .@Deaths[.@c] +"^000000 Deaths | ^FF0000" + .@EmpBreak[.@c] +"^000000 Emp Break";
49 close;
50 break;
51
52 case 3:
53 query_sql "CREATE TABLE IF NOT EXISTS `woe_ranking` ( `Char_ID` int(11) unsigned NOT NULL DEFAULT '0', `PlayerName` varchar(255) NULL DEFAULT '', `Kills` varchar(255) NULL DEFAULT '', `Deaths` varchar(255) NULL DEFAULT '', `EmpBreak` varchar(255) NULL DEFAULT '', PRIMARY KEY (`Char_ID`) ) ENGINE=MyISAM";
54 query_sql( "DELETE FROM `woe_ranking` WHERE `PlayerName` NOT IN ( SELECT `name` FROM `char` )" );
55 set .@size, query_sql( "SELECT * FROM woe_ranking WHERE EmpBreak > 0 ORDER BY EmpBreak DESC limit "+ .top, .@CharID, .@name$, .@Kills, .@Deaths, .@EmpBreak);
56
57 mes "[^FF0000WoE ^0000FFRank ^996600Top ^FF0000" + .top +"^000000]";
58 for (set .@c, 0; .@c < .@size; set .@c, .@c + 1)
59 mes "Top ^FF0000" +(.@c + 1) +"^000000: ^0000FF" + .@name$[.@c] +"^000000 | ^FF0000" + .@Kills[.@c] +"^000000 Kills | ^FF0000" + .@Deaths[.@c] +"^000000 Deaths | ^FF0000" + .@EmpBreak[.@c] +"^000000 Emp Break";
60 close;
61 break;
62
63 case 4:
64 mes "Good Day! Master.";
65 next;
66 menu "Are you sure?",yess,"Nope",noo;
67 yess:
68 query_sql("TRUNCATE TABLE `ragnarok`.`woe_ranking`;");
69 mes "Woe Rank Reset Success";
70 close;
71
72 noo:
73 mes "Well Okay";
74 close;
75 break;
76 }
77
78OnInit: // Script Configuration
79 set .top, 10;
80 set .WoePoints, 1; //points to add in database/player when kill
81 set .WoeDeduct, 1; //points to add in database
82 set .diedeductpoint, 2; //points to deduct when died
83 waitingroom "Woe Rank",0;
84 end;
85
86OnPCKillEvent:
87 if (killerrid != getcharid(3)) {
88 if (( agitcheck() || agitcheck2() ) && compare(strcharinfo(3),"g_cas")) {
89 set points, points+.WoePoints;
90 query_sql( "SELECT * FROM woe_ranking WHERE `Char_ID` = '"+getcharid(0)+"'", .@CharID, .@Name$, .@Kills, .@Deaths, .@EmpBreak);
91 set ToTalP , .@Kills + .WoePoints;
92
93 if(getcharid(0) == .@CharID){
94 query_sql("UPDATE `woe_ranking` SET `Kills` = '"+ToTalP+"' WHERE `Char_ID` = '"+getcharid(0)+"'");
95 }else{
96 query_sql("INSERT INTO `woe_ranking` (`Char_ID`,`PlayerName`,`Kills`,`Deaths`,`EmpBreak`) VALUES ('"+getcharid(0)+"', '"+strcharinfo(0)+"', '"+.WoePoints+"', '"+.@Deaths+"', '"+.@EmpBreak+"')");
97 }
98 ////////query for the deaths
99 query_sql( "SELECT `char_id`, `account_id` FROM `char` WHERE `account_id` = '"+getcharid(3)+"' ", .@Cchar_id, .@Aid);
100 query_sql( "SELECT * FROM woe_ranking WHERE `Char_ID` = '"+.@Cchar_id+"'", .@CharID, .@Name$, .@Kills, .@Deaths, .@EmpBreak);
101 set TotalD , .@Deaths + .WoeDeduct;
102
103 if(.@CharID != .@Cchar_id){
104 query_sql("INSERT INTO `woe_ranking` (`Char_ID`,`PlayerName`,`Kills`,`Deaths`,`EmpBreak`) VALUES ('"+.@Cchar_id+"', '"+strcharinfo(0)+"', '0', '"+TotalD+"', '"+.@EmpBreak+"')");
105 }else{
106 query_sql("UPDATE woe_ranking SET Deaths = '"+TotalD+"' WHERE `Char_ID` = '"+.@Cchar_id+"'");
107 }
108
109 //This is the point system on the player, you can disable this anytime by adding comment " // "
110 dispbottom "You killed "+rid2name(killedrid)+" you gained "+.WoePoints+" point and You now have "+Points+" Woe Points.";
111 attachrid(killedrid);
112 set points, points-.diedeductpoint;
113 dispbottom "You are killed by "+rid2name(killerrid)+" you lost "+.diedeductpoint+" points and You now have "+Points+" Woe Points.";
114 end;
115 ///////
116
117 }
118 }
119 end;
120}