· 4 years ago · Jul 08, 2021, 12:34 AM
1- script Arena_PvP#JM FAKE_NPC,{
2
3 query_sql("SELECT name FROM mr_pvp ORDER BY kills DESC, deaths ASC LIMIT 1",$@Player_Lider$);
4 query_sql("SELECT guild_id FROM mr_gvg ORDER BY kills DESC, deaths ASC LIMIT 1",$@Guild_Lider);
5
6 mes "^ff0000[Arena]^000000";
7 mes "^008B8BLíder PvP -> ^FFA500"+$@Player_Lider$+"^000000";
8 mes "^008B8BLíder GvG -> ^FFA500"+getguildname($@Guild_Lider)+"^000000";
9 mes "----------------------";
10 mes "^ff0000Por favor selecione uma arena para entrar...^000000";
11
12 menu "Arenas PvP",M_PvP,"Arenas GvG",M_GvG,"Loja PvP",M_Loja,"Rankings",M_Rankings,"Sair",M_Sair;
13
14 M_PvP: //= PVP
15 switch(select("PvP Custom ^0000ff["+getmapusers("guild_vs3")+"]^000000:PvP sem Custom ^0000ff["+getmapusers("pvp_n_1-5")+"]^000000")){
16 case 1:
17 announce "O Jogador ["+strcharinfo(0)+"] entrou na Arena PvP Custom",8;
18 sc_end -1;
19 warp "guild_vs3",0,0;
20 break;
21 case 2:
22 for(.@i=0;.@i<getarraysize(.itban);.@i++)
23 if(countitem(.itban[.@i])) {
24 next;
25 mes "^ff0000[Arena]^000000";
26 mes "Você não pode entrar nessa Arena!";
27 mes "Por favor retire quaisquer itens custom do seu inventário.";
28 close;
29 }
30 announce "O Jogador ["+strcharinfo(0)+"] entrou na Arena PvP sem Custom",8;
31 sc_end -1;
32 warp "pvp_n_1-5",0,0;
33 break;
34 }
35 close;
36 end;
37
38 M_GvG: //= GVG
39 switch(select("GvG Custom ^0000ff["+getmapusers("guild_vs1")+"]^000000:PvP sem Custom ^0000ff["+getmapusers("prt_are01")+"]^000000")){
40 case 1:
41 if(!getcharid(2)) { mes "^ff0000[Arena GvG]^000000"; mes "Você não possui guild. Entre em uma guild para poder entrar."; close; }
42 announce "O Jogador ["+strcharinfo(0)+"] entrou na Arena GvG Custom",8;
43 warp "guild_vs1",0,0;
44 break;
45 case 2:
46 if(!getcharid(2)) { mes "^ff0000[Arena GvG]^000000"; mes "Você não possui guild. Entre em uma guild para poder entrar."; close; }
47 for(.@i=0;.@i<getarraysize(.itban);.@i++)
48 if(countitem(.itban[.@i])) {
49 next;
50 mes "^ff0000[Arena]^000000";
51 mes "Você não pode entrar nessa Arena!";
52 mes "Por favor retire quaisquer itens custom do seu inventário.";
53 close;
54 }
55 announce "O Jogador ["+strcharinfo(0)+"] entrou na Arena GvG sem Custom",8;
56 warp "prt_are01",0,0;
57 break;
58 }
59 close;
60 end;
61
62 M_Loja:
63 next;
64 function ShopSettings;
65 function ValidateCost;
66 function CurrencyInfo;
67 function ClearData;
68 function ValueConvert;
69 function ErrorNotice;
70
71 ClearData();
72 ShopSettings( 1 );
73 npcshopitem "R_PVP",512,100;
74 npcshopdelitem "R_PVP",512;
75 for(set .@i,0; .@i < getarraysize( @ItemLists ); set .@i,.@i+1)
76 npcshopadditem "R_PVP",@ItemLists[.@i],@ItemCost[.@i];
77 mes "Okay... espere um pouco.";
78 mes "^00FF00____________________________^000000";
79 CurrencyInfo( @Currency$ );
80 mes "^00FF00____________________________^000000";
81 callshop "R_PVP",1;
82 npcshopattach "R_PVP";
83 end;
84
85 function ShopSettings {
86 switch( getarg(0) ){
87 case 1:
88 // Currency [ Item ID / Variable Name ]
89 set @Currency$,"#PPVP";
90 // Item ID Lists
91 setarray @ItemLists[0],41465,41306,41300,20514;
92 // Item Price
93 setarray @ItemCost[0],1000,1000,1000,1000;
94 break;
95 default:
96 ErrorNotice( "Invalid Menu Selection for Menu "+@menu+"." );
97 close;
98 }
99
100
101 if( @Currency$ == "" )
102 ErrorNotice( "Invalid Currency Setting in Menu "+@menu+" ." );
103 if( getarraysize( @ItemCost ) != getarraysize( @ItemLists ) || getarraysize( @ItemLists ) != getarraysize( @ItemCost ) )
104 ErrorNotice( "Missing or Extra Value of Item or Cost Settings in Menu "+@menu+" ." );
105 return;
106 }
107
108 function ErrorNotice {
109 mes "^FF0000ERROR^000000 - "+getarg(0);
110 mes "^00FF00____________________________^000000";
111 mes "Informe esta mensagem a ^0000FFEquipe da Staff^000000 imediatamente!";
112 close;
113 }
114
115 function CurrencyInfo {
116 if( getitemname( atoi( getarg(0) ) ) != "null" ){
117 mes "Item Currency : ^FF0000"+getitemname( atoi( getarg(0) ) )+"^000000";
118 mes "Available Amount : ^0000FF"+ValueConvert( countitem( atoi( getarg(0) ) ) )+"^000000";
119 }else if( getitemname( atoi( getarg(0) ) ) == "null" ){
120 mes "Moeda Variável : ^FF0000"+getarg(0)+"^000000";
121 mes "Quantidade disponível : ^0000FF"+ValueConvert( getd( getarg(0) ) )+"^000000";
122 }
123 return;
124 }
125
126 function ValidateCost {
127 if( getitemname( atoi( getarg(0) ) ) != "null" ){
128 if( countitem( atoi( getarg(0) ) ) < getarg(1) ) return 1;
129 }else{
130 if( getd( getarg(0) ) < getarg(1) ) return 1;
131 }
132 return 0;
133 }
134
135 function ClearData {
136 set @Currency$,"";
137 set @TotalCost,0;
138 deletearray @bought_nameid[0],getarraysize( @bought_nameid );
139 deletearray @bought_quantity[0],getarraysize( @bought_quantity );
140 deletearray @ItemLists[0],getarraysize( @ItemLists );
141 deletearray @ItemCost[0],getarraysize( @ItemCost );
142 return;
143 }
144
145 function ValueConvert {
146 set .@num, atoi(""+getarg(0));
147 if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
148 set .@l, getstrlen(""+.@num);
149 for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {
150 set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
151 if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
152 }
153 return .@num$;
154 }
155
156 OnBuyItem:
157 ShopSettings( 1 );
158 for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1)
159 for(set @j,0; @j < getarraysize( @ItemLists ); set @j,@j+1)
160 if( @ItemLists[@j] == @bought_nameid[@i] )
161 set @TotalCost,@TotalCost + ( @ItemCost[@j] * @bought_quantity[@i] );
162 mes "^FF0000 LISTA DE COMPRAS^000000";
163 mes "^00FF00____________________________^000000";
164 for( set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1 )
165 mes "^FF0000"+@bought_quantity[@i]+" x ^0000FF"+getitemname( @bought_nameid[@i] )+"^000000";
166 mes "^00FF00____________________________^000000";
167
168 if( getitemname( atoi( @Currency$ ) ) != "null" )
169 mes "Custo Total : ^0000FF"+ValueConvert( @TotalCost )+" x "+getitemname( atoi( @Currency$ ) )+"^000000";
170 else if( getitemname( atoi( @Currency$ ) ) == "null" ){
171 mes "Custo Total : ^0000FF"+ValueConvert( @TotalCost )+" "+@Currency$+"^000000";
172 }
173
174 mes "^00FF00____________________________^000000";
175 if( ValidateCost( @Currency$,@TotalCost ) ){
176 if( getitemname( atoi( @Currency$ ) ) != "null" )
177 mes "[ ^FF0000X^000000 ] Insuficiente ^0000FF"+getitemname( atoi( @Currency$ ) )+"^000000";
178 else{
179 mes "[ ^FF0000X^000000 ] Insuficiente ^0000FF"+@Currency$+"^000000";
180 }
181 }else{
182 if( select( "^0000FFComprar^000000:Cancelar" ) == 1 ){
183 if( getitemname( atoi( @Currency$ ) ) != "null" )
184 delitem atoi( @Currency$ ),@TotalCost;
185 else{
186 set getd( @Currency$ ),getd( @Currency$ ) - @TotalCost;
187 }
188 for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1)
189 getitem @bought_nameid[@i],@bought_quantity[@i];
190 message strcharinfo(0),"Você comprou "+getarraysize( @bought_nameid )+" itens.";
191 mes "Obrigado por fazer compras.";
192 }
193 }
194 ClearData();
195 close;
196 end;
197
198 M_Sair:
199 end;
200 //=//
201
202 M_Rankings:
203 switch(select("- PvP.:- PvP (Mortes).:- PvP (Ratio).:- GvG.:- GvG (Mortes).:- GvG (Ratio)")){
204 case 1:
205 query_sql "SELECT char_id,name,kills FROM mr_pvp ORDER BY kills DESC, deaths ASC LIMIT 10",.@cid,.@pname$,.@pk;
206 dispbottom "------------ Rank Geral PvP ------------";
207 if(!getarraysize(.@cid)||.@cid==0) { dispbottom "Sem rank."; end; }
208 for(.@i=0;.@i<getarraysize(.@cid);.@i++) {
209 dispbottom (.@i+1)+") "+.@pname$[.@i]+" "+.@pk[.@i]+"";
210 }
211 break;
212 case 2:
213 query_sql "SELECT char_id,name,deaths FROM mr_pvp ORDER BY deaths DESC, kills ASC LIMIT 10",.@cid,.@pname$,.@pk;
214 dispbottom "------------ Rank Mortes PvP ------------";
215 if(!getarraysize(.@cid)||.@cid==0) { dispbottom "Sem rank."; end; }
216 for(.@i=0;.@i<getarraysize(.@cid);.@i++) {
217 dispbottom (.@i+1)+") "+.@pname$[.@i]+" "+.@pk[.@i]+"";
218 }
219 break;
220 case 3:
221 query_sql "UPDATE mr_pvp SET kd= (kills-deaths)";
222 query_sql "SELECT char_id,name,kd FROM mr_pvp ORDER BY kd DESC, kills DESC LIMIT 10",.@cid,.@pname$,.@pk;
223 dispbottom "------------ Rank Ratio PvP ------------";
224 if(!getarraysize(.@cid)||.@cid==0) { dispbottom "Sem rank."; end; }
225 for(.@i=0;.@i<getarraysize(.@cid);.@i++) {
226 dispbottom (.@i+1)+") "+.@pname$[.@i]+" "+.@pk[.@i]+"";
227 }
228 break;
229 case 4:
230 query_sql "SELECT guild_id,kills FROM mr_gvg ORDER BY kills DESC, deaths ASC LIMIT 10",.@cid,.@pk;
231 dispbottom "------------ Rank Geral GvG ------------";
232 if(!getarraysize(.@cid)||.@cid==0) { dispbottom "Sem rank."; end; }
233 for(.@i=0;.@i<getarraysize(.@cid);.@i++) {
234 dispbottom (.@i+1)+") "+getguildname(.@cid[.@i])+" "+.@pk[.@i]+"";
235 }
236 break;
237 case 5:
238 query_sql "SELECT guild_id,deaths FROM mr_gvg ORDER BY deaths DESC, kills ASC LIMIT 10",.@cid,.@pk;
239 dispbottom "------------ Rank Mortes GvG ------------";
240 if(!getarraysize(.@cid)||.@cid==0) { dispbottom "Sem rank."; end; }
241 for(.@i=0;.@i<getarraysize(.@cid);.@i++) {
242 dispbottom (.@i+1)+") "+getguildname(.@cid[.@i])+" "+.@pk[.@i]+"";
243 }
244 break;
245 case 6:
246 query_sql "UPDATE mr_gvg SET kd= (kills-deaths)";
247 query_sql "SELECT guild_id,kd FROM mr_pvp ORDER BY kd DESC, kills DESC LIMIT 10",.@cid,.@pk;
248 dispbottom "------------ Rank Ratio GvG ------------";
249 if(!getarraysize(.@cid)||.@cid==0) { dispbottom "Sem rank."; end; }
250 for(.@i=0;.@i<getarraysize(.@cid);.@i++) {
251 dispbottom (.@i+1)+") "+getguildname(.@cid[.@i])+" "+.@pk[.@i]+"";
252 }
253 break;
254 }
255 end;
256
257 //=//
258
259 OnPCKillEvent:
260 if (compare("guild_vs3|pvp_n_1-5", strcharinfo(3))){
261 query_sql "INSERT INTO `mr_pvp` (`char_id`,`name`,`kills`) VALUES ("+getcharid(0)+",'"+strcharinfo(0)+"',1) ON DUPLICATE KEY UPDATE `kills`=`kills`+1 ";
262 set #PPVP,#PPVP+1;
263 dispbottom "+1 ponto PvP.";
264 dispbottom "Você possui "+#PPVP+".";
265 end;
266 }
267 if (compare("guild_vs1|prt_are01", strcharinfo(3))){
268 query_sql "INSERT INTO `mr_gvg` (`guild_id`,`kills`) VALUES ("+getcharid(2)+",1) ON DUPLICATE KEY UPDATE `kills`=`kills`+1 ";
269 end;
270 }
271 end;
272
273 OnPCDieEvent:
274 if (compare("guild_vs3|pvp_n_1-5", strcharinfo(3))){ //=
275 query_sql "INSERT INTO `mr_pvp` (`char_id`,`name`,`deaths`) VALUES ("+getcharid(0)+",'"+strcharinfo(0)+"',1) ON DUPLICATE KEY UPDATE `deaths`=`deaths`+1";
276 end;
277 }
278 if (compare("guild_vs1|prt_are01", strcharinfo(3))){
279 query_sql "INSERT INTO `mr_gvg` (`guild_id`,`kills`) VALUES ("+getcharid(2)+",1) ON DUPLICATE KEY UPDATE `kills`=`kills`+1 ";
280 end;
281 }
282 end;
283
284 OnInit:
285 query_sql "CREATE TABLE IF NOT EXISTS `mr_pvp` (`char_id` mediumint(6) NOT NULL DEFAULT '0',`name` varchar(30) NOT NULL DEFAULT '',`kills` smallint(11) NOT NULL DEFAULT '0',`deaths` smallint(11) NOT NULL DEFAULT '0',`kd` smallint(11) NOT NULL DEFAULT '0',`ord` smallint(6) NOT NULL DEFAULT '0',UNIQUE KEY `char_id` (`char_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
286 query_sql "CREATE TABLE IF NOT EXISTS `mr_gvg` (`guild_id` mediumint(6) NOT NULL DEFAULT '0',`kills` smallint(11) NOT NULL DEFAULT '0',`deaths` smallint(11) NOT NULL DEFAULT '0',`kd` smallint(11) NOT NULL DEFAULT '0',`win` smallint(5) NOT NULL DEFAULT '0',`ord` smallint(11) NOT NULL DEFAULT '0',UNIQUE KEY `guild_id` (`guild_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
287 setarray .itban[0],41136,41500,41534,41554,41538,41256,41471,41556,41109,41533,41529,41131,41550,41193,41423,41517,41027,41051,41062,41553,41389,41457,41540,41388,41132,41172,41013,41543,41472,41321,41065,41050,41516,41227,41531,41201,41228,41387,41260,41545,41521,41159,41294,41539,41361,41264,41063,41138,41555,41401,41292,41152,41345,41520,41542,41519,41070,41069,41258,41072,41066,41530,41019,41020,41021,41022,41144,41145,41146,41147,41148,41149,41587,41558,41559,41576,41577,41582,41580,41575,41557,41581,41577,41586,41578,41583,41579,41707,41966,41925,41585,41277,41640,41087,41085,41112,41084,41086;
288 waitingroom "",0;
289 OnTimer5000:
290 setarray .@RoomDisplay$,"[PvP] Arena","PvP Líder ["+$@Player_Lider$+"]","GvG Líder ["+getguildname($@Guild_Lider)+"]";
291 delwaitingroom;
292 waitingroom .@RoomDisplay$[rand(0,2)],0;
293 initnpctimer;
294
295}
296// Duplicates
297prontera,162,189,2 duplicate(Arena_PvP#JM) [PvP] Arena#1 801
298morocc,152,97,4 duplicate(Arena_PvP#JM) [PvP] Arena#2 801
299geffen,127,65,4 duplicate(Arena_PvP#JM) [PvP] Arena#3 801
300alberta,26,240,4 duplicate(Arena_PvP#JM) [PvP] Arena#4 801
301izlude,122,119,4 duplicate(Arena_PvP#JM) [PvP] Arena#5 801
302aldebaran,147,119,4 duplicate(Arena_PvP#JM) [PvP] Arena#6 801
303xmas,145,136,4 duplicate(Arena_PvP#JM) [PvP] Arena#7 801
304comodo,184,158,4 duplicate(Arena_PvP#JM) [PvP] Arena#8 801
305gonryun,161,126,4 duplicate(Arena_PvP#JM) [PvP] Arena#9 801
306louyang,226,106,4 duplicate(Arena_PvP#JM) [PvP] Arena#10 801
307ayothaya,155,121,4 duplicate(Arena_PvP#JM) [PvP] Arena#11 801
308hugel,87,164,4 duplicate(Arena_PvP#JM) [PvP] Arena#12 801
309moscovia,209,190,5 duplicate(Arena_PvP#JM) [PvP] Arena#13 801
310job3_war01,34,30,5 duplicate(Arena_PvP#JM) [PvP] Arena#14 801
311malangdo,226,273,5 duplicate(Arena_PvP#JM) [PvP] Arena#15 801
312lighthalzen,160,100,5 duplicate(Arena_PvP#JM) [PvP] Arena#16 801
313louyang,106,210,5 duplicate(Arena_PvP#JM) [PvP] Arena#17 801
314umbala,95,160,5 duplicate(Arena_PvP#JM) [PvP] Arena#18 801
315n_castle,106,109,5 duplicate(Arena_PvP#JM) [PvP] Arena#19 801
316job_wiz,118,178,5 duplicate(Arena_PvP#JM) [PvP] Arena#20 801
317jawaii,204,293,5 duplicate(Arena_PvP#JM) [PvP] Arena#21 801
318// Loja PvP
319- shop R_PVP -1,512:100
320
321// Mapflags
322guild_vs3 mapflag noreturn
323guild_vs3 mapflag nosave
324guild_vs3 mapflag noteleport
325guild_vs3 mapflag nowarpto
326guild_vs3 mapflag nowarp
327guild_vs3 mapflag nomemo
328guild_vs3 mapflag nopenalty
329guild_vs3 mapflag nobranch
330
331pvp_n_1-5 mapflag noreturn
332pvp_n_1-5 mapflag nosave
333pvp_n_1-5 mapflag noteleport
334pvp_n_1-5 mapflag nowarpto
335pvp_n_1-5 mapflag nowarp
336pvp_n_1-5 mapflag nomemo
337pvp_n_1-5 mapflag nopenalty
338pvp_n_1-5 mapflag nobranch
339
340guild_vs1 mapflag noreturn
341guild_vs1 mapflag nosave
342guild_vs1 mapflag noteleport
343guild_vs1 mapflag nowarpto
344guild_vs1 mapflag nowarp
345guild_vs1 mapflag nomemo
346guild_vs1 mapflag nopenalty
347guild_vs1 mapflag nobranch
348prt_are01 mapflag gvg
349
350prt_are01 mapflag noreturn
351prt_are01 mapflag nosave
352prt_are01 mapflag noteleport
353prt_are01 mapflag nowarpto
354prt_are01 mapflag nowarp
355prt_are01 mapflag nomemo
356prt_are01 mapflag nopenalty
357prt_are01 mapflag nobranch
358prt_are01 mapflag gvg