· 7 years ago · Jan 20, 2019, 11:50 PM
1
2/*
3
4CREATE TABLE IF NOT EXISTS `E-Ranking` (
5 `Account_ID` int(11) unsigned NOT NULL default '0',
6 `Char_ID` int(11) unsigned NOT NULL default '0',
7 `Name` varchar(30) NOT NULL DEFAULT '',
8 `DM` smallint(4) unsigned NOT NULL default '0',
9 `NM` smallint(4) unsigned NOT NULL default '0',
10 `PM` smallint(4) unsigned NOT NULL default '0',
11 `GM` smallint(4) unsigned NOT NULL default '0',
12 `Champion` TINYINT(2) NOT NULL default '0',
13 `Total` smallint(4) unsigned NOT NULL default '0',
14 PRIMARY KEY (`Char_ID`,`Name`)
15) ENGINE=MyISAM;
16
17
18# Random Sample Data for viewing the Data in Games / SQL
19# =============================================================
20REPLACE INTO `E-Ranking` VALUES ( 1,2,'Emistry',2,6,9,10,11,987 );
21REPLACE INTO `E-Ranking` VALUES ( 2,2,'Emistry1',2,4,6,8,1,123 );
22REPLACE INTO `E-Ranking` VALUES ( 3,3,'Emistry2',3,6,9,12,12,456 );
23REPLACE INTO `E-Ranking` VALUES ( 4,4,'Emistry3',1,2,3,4,0,0 );
24
25*/
26
27
28- script Ladder -1,{
29OnTalk:
30mes "How can i help ?";
31switch( select("Continue","View Ranking",( getgmlevel() > .GMLevel )?"":"^0055FFGM Panel^000000" ) ){
32 default:
33 Case 1:
34 mes "Which mode ?";
35 set .@Mode,select( implode( .ModeName$,":" ) );
36 if( .@Mode > 2 )
37 if( !getcharid( .@Mode - 2 ) ){
38 mes "You need to have a ^0055FF"+( ( .@Mode == 3 )?"Party":"Guild" )+"^000000 to join this Room.";
39 close;
40 }
41 mes "Which Room ?";
42 set .@Room,( select( implode( getd( ".MapName"+.@Mode+"$" ),":" ) ) - 1 );
43 mes "Selected "+getd( ".Map"+.@Mode+"$["+.@Room+"]" );
44 warp getd( ".Map"+.@Mode+"$["+.@Room+"]" ),0,0;
45 break;
46 Case 2:
47 mes "Which Ranking ?";
48 next;
49 set .@Rank,select( "Personal Rank:^0055FFMonthly Champion^000000:Overall Rank:"+implode( .ModeName$," Rank:" ) );
50 switch( .@Rank ){
51 Case 1:
52 mes "[ ^0055FFPersonal Rank^000000 ]";
53 query_sql( "SELECT `"+.QueryName$[0]+"`,`"+.QueryName$[1]+"`,`"+.QueryName$[2]+"`,`"+.QueryName$[3]+"` FROM `E-Ranking` WHERE `"+.QueryName$[6]+"` = '"+strcharinfo(0)+"'",.@DM,.@NM,.@PM,.@GM );
54 setarray .@Scores[0],.@DM,.@NM,.@PM,.@GM;
55 mes "Total Kills : "+( .@DM+.@NM+.@PM+.@GM );
56 for( set .@i,0; .@i < getarraysize( .ModeName$ ); set .@i,.@i + 1 )
57 mes " ^777777> "+.ModeName$[.@i]+" :^000000 "+.@Scores[.@i]+" Kills";
58 break;
59 Case 2:
60 mes "[ ^0055FFMonthly Rank^000000 ]";
61 query_sql( "SELECT `"+.QueryName$[6]+"`,`"+.QueryName$[5]+"`,`"+.QueryName$[4]+"` FROM `E-Ranking` WHERE `"+.QueryName$[4]+"` > 0 ORDER BY `"+.QueryName$[4]+"` ASC LIMIT 12",.@Name$,.@Kills,.@Month );
62 if( !getarraysize( .@Name$ ) ){
63 mes "There is no Record of Monthly Champion yet.";
64 }else{
65 for( set .@i,0; .@i < getarraysize( .@Month ); set .@i,.@i + 1 )
66 if( .@Kills[.@i] ){
67 mes "^FF0000"+.MonthName$[ .@Month[.@i]-1 ]+"'s Champion :^000000";
68 mes " ^0055FF> "+.@Name$[.@i]+" :^000000 Total "+.@Kills[.@i]+" Kills";
69 }
70 }
71 break;
72 Case 3:
73 mes "[ ^0055FFOverall Rank^000000 ]";
74 query_sql( "SELECT `"+.QueryName$[6]+"`,( `"+.QueryName$[0]+"` + `"+.QueryName$[1]+"` + `"+.QueryName$[2]+"` + `"+.QueryName$[3]+"` ) AS `Totals` FROM `E-Ranking` ORDER BY `Totals` DESC LIMIT "+.MaxRank+"",.@Name$,.@Kills );
75 if( !getarraysize( .@Name$ ) ){
76 mes "There is no Record of Overall Ranking yet.";
77 }else{
78 for( set .@i,0; .@i < getarraysize( .@Name$ ); set .@i,.@i + 1 )
79 if( .@Kills[.@i] )
80 mes " ^0055FF> "+.@Name$[.@i]+" :^000000 Total "+.@Kills[.@i]+" Kills";
81 }
82 break;
83 default:
84 mes "[ ^0055FF"+.ModeName$[ .@Rank - 4 ]+" Rank^000000 ]";
85 query_sql( "SELECT `"+.QueryName$[6]+"`,`"+.QueryName$[.@Rank - 4]+"` FROM `E-Ranking` WHERE `"+.QueryName$[.@Rank - 4]+"` > 0 ORDER BY `"+.QueryName$[.@Rank - 4]+"` DESC LIMIT "+.MaxRank+"",.@Name$,.@Kills );
86 if( !getarraysize( .@Name$ ) ){
87 mes "There is no available Rank for ^0055FF"+.ModeName$[ .@Rank - 4 ]+"^000000 yet.";
88 }else{
89 for( set .@i,0; .@i < getarraysize( .@Name$ ); set .@i,.@i + 1 )
90 mes "[ "+( .@i + 1 )+". ] ^0055FF "+.@Name$[.@i]+" :^000000 Total "+.@Kills[.@i]+" Kills";
91 }
92 break;
93 }
94 break;
95 Case 3:
96 do{
97 mes "How can i help you, GM?";
98 next;
99 set .@GMOption,select("Check / Reset Player Rank","Reset Mode Rank","Reset Monthly Rank","Reset All Rank","^0055FFCancel^000000" );
100 switch( .@GMOption ){
101 Case 1:
102 mes "Input player Name";
103 input .@Name$;
104 if( query_sql( "SELECT `"+.QueryName$[0]+"`,`"+.QueryName$[1]+"`,`"+.QueryName$[2]+"`,`"+.QueryName$[3]+"` FROM `E-Ranking` WHERE `"+.QueryName$[6]+"` = '"+.@Name$+"'",.@DM,.@NM,.@PM,.@GM ) ){
105 mes "[ ^0055FF"+.@Name$+"'s Rank^000000 ]";
106 setarray .@Scores[0],.@DM,.@NM,.@PM,.@GM;
107 mes "Total Kills : "+( .@DM+.@NM+.@PM+.@GM );
108 for( set .@i,0; .@i < getarraysize( .ModeName$ ); set .@i,.@i + 1 )
109 mes " ^777777> "+.ModeName$[.@i]+" :^000000 "+.@Scores[.@i]+" Kills";
110 next;
111 if( select("Remove ^0055FF"+.@Name$+"'s Rank:Back to Menu") == 1 ){
112 set .@Mode,select( "All Rank:"+implode( .ModeName$,":" ) );
113 if( .@Mode == 1 )
114 query_sql( "DELETE FROM `E-Ranking` WHERE `"+.QueryName$[6]+"`='"+.@Name$+"'" );
115 else
116 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[.@Mode-2]+"`='0' WHERE `"+.QueryName$[6]+"`='"+.@Name$+"'" );
117 mes "Done Removed ^0055FF"+.@Name$+"'s ^FF0000"+( ( .@Mode == 1 )?"All":.ModeName$[.@Mode-2] )+"^000000 Rank.";
118 }
119 }else{
120 mes "Player Record Not Found.";
121 }
122 break;
123 Case 2:
124 mes "Reset which Mode ?";
125 set .@Mode,( select( implode( .ModeName$,":" ) ) - 1 );
126 mes "Reset : ^FF0000"+.ModeName$[.@Mode]+"^000000";
127 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[.@Mode]+"`='0'" );
128 break;
129 Case 3:
130 mes "Reset which Month ?";
131 set .@Month,select( "All Month:"+implode( .MonthName$,":" ) );
132 dispbottom ""+.@Month;
133 if( .@Month == 1 )
134 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[4]+"`='0',`"+.QueryName$[5]+"`='0'" );
135 else
136 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[4]+"`='0',`"+.QueryName$[5]+"`='0' WHERE `"+.QueryName$[4]+"`='"+( .@Month - 1 )+"'" );
137 mes "Done Removed Monthly Champion.";
138 break;
139 Case 4:
140 mes "Are you sure to remove All ?";
141 if( select("YES:NO") == 1 ){
142 mes "Done, removed all.";
143 query_sql( "TRUNCATE `E-Ranking`" );
144 }
145 default: break;
146 }
147 next;
148 }while( .@GMOption != 5 );
149}
150close;
151
152
153OnNPCKillEvent:
154if( getgmlevel() < .GMLevel )
155 for( set .@i,0; .@i < getarraysize( .ModeName$ ); set .@i,.@i + 1 )
156 if( compare( implode( getd(".Map"+( .@i + 1 )+"$" ),":" ),strcharinfo(3) ) ){
157 set .@Kills[.@i],1;
158 set .@i,query_sql( "INSERT INTO `E-Ranking` ( `Account_ID`,`Char_ID`,`"+.QueryName$[6]+"`,`"+.QueryName$[0]+"`,`"+.QueryName$[1]+"`,`"+.QueryName$[2]+"`,`"+.QueryName$[3]+"`,`"+.QueryName$[4]+"`,`"+.QueryName$[5]+"` ) VALUES ( '"+getcharid(3)+"','"+getcharid(0)+"','"+strcharinfo(0)+"','"+.@Kills[0]+"','"+.@Kills[1]+"','"+.@Kills[2]+"','"+.@Kills[3]+"','0','0' ) ON DUPLICATE KEY UPDATE `"+.QueryName$[.@i]+"` = `"+.QueryName$[.@i]+"` + 1;" );
159 break;
160 }
161end;
162
163OnClock0001:
164if( gettime(5) == 1 ){
165 if( query_sql( "SELECT `"+.QueryName$[6]+"`,( `"+.QueryName$[0]+"` + `"+.QueryName$[1]+"` + `"+.QueryName$[2]+"` + `"+.QueryName$[3]+"` ) AS `Totals` FROM `E-Ranking` ORDER BY `Totals` DESC LIMIT 1",.@Name$,.@Kills ) ){
166 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[4]+"`='0',`"+.QueryName$[5]+"`='0' WHERE `"+.QueryName$[4]+"`='"+( gettime(6) - 1 )+"' ");
167 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[4]+"`='"+( gettime(6) - 1 )+"',`Total`='"+.@Kills+"' WHERE `"+.QueryName$[6]+"`='"+.@Name$+"' ");
168 query_sql( "UPDATE `E-Ranking` SET `"+.QueryName$[0]+"`='0',`"+.QueryName$[1]+"`='0',`"+.QueryName$[2]+"`='0',`"+.QueryName$[3]+"`='0'" );
169 }
170}
171end;
172
173OnInit:
174// GM Level
175set .GMLevel,100;
176// Max Ranking Ladder
177set .MaxRank,10;
178
179// Death Match Mode Map Lists
180set .ModeName$[ getarraysize(.ModeName$) ],"Death Match Mode";
181setarray .Map1$[0],"pvp_y_4-2","moc_ruins","mora","umbala","thor_camp";
182setarray .MapName1$[0],"Izlude","Morroc Ruins","The Laphine Village","Wootan Tribe's Village","Thor Camp";
183
184// Normal Mode Map Lists
185set .ModeName$[ getarraysize(.ModeName$) ],"Normal Mode";
186setarray .Map2$[0],"pvp_y_1-1","pvp_y_1-4","pvp_y_1-2","pvp_y_1-3","pvp_y_1-5";
187setarray .MapName2$[0],"Prontera","Alberta","Izlude","Payon","Morroc";
188
189// Party Mode Map Lists
190set .ModeName$[ getarraysize(.ModeName$) ],"Party Mode";
191setarray .Map3$[0],"pvp_y_2-1","pvp_y_2-4","pvp_y_2-2","pvp_y_2-3","pvp_y_2-5";
192setarray .MapName3$[0],"Prontera","Alberta","Izlude","Payon","Morroc";
193
194// Guild Mode Map Lists
195set .ModeName$[ getarraysize(.ModeName$) ],"Guild Mode";
196setarray .Map4$[0],"guild_vs1","guild_vs2","guild_vs3","guild_vs4","guild_vs5";
197setarray .MapName4$[0],"Guild 1","Guild 2","Guild 3","Guild 4","Guild 5";
198
199
200// ========== Dont Touch this parts IF Dont know what's it ==============
201// SQL Column Name
202setarray .QueryName$[0],"DM","NM","PM","GM","Champion","Total","Name";
203// Month Name
204setarray .MonthName$[0],"January","February","March","April","May","June","July","August","September","October","November","December";
205end;
206}
207
208
209// Visible NPC for Lader + Warper
210prontera,155,181,5 script Sample 757,{
211 doevent "Ladder::OnTalk";
212}
213
214// Duplicates NPC
215prontera,155,185,5 duplicate(Sample) Sample#2 757