//|==================================================================================|
//| ___ ___ ___ ___ ___ |
//| /\ \ /\ \ /\ \ /| | /\ \ |
//| |::\ \ /::\ \ /::\ \ |:| | /::\ \ |
//| |:|:\ \ /:/\:\ \ /:/\:\ \ |:| | /:/\:\ \ |
//| __|:|\:\ \ /:/ \:\ \ /:/ \:\ \ __|:| | /:/ /::\ \ |
//| /::::|_\:\__\ /:/__/ \:\__\ /:/__/ \:\__\ /\ |:|__|____ /:/_/:/\:\__\ |
//| \:\--\ \/__/ \:\ \ /:/ / \:\ \ /:/ / \:\/:::::/__/ \:\/:/ \/__/ |
//| \:\ \ \:\ /:/ / \:\ /:/ / \::/__/ \::/__/ |
//| \:\ \ \:\/:/ / \:\/:/ / \:\ \ \:\ \ |
//| \:\__\ \::/ / \::/ / \:\__\ \:\__\ |
//| \/__/ \/__/ \/__/ \/__/ \/__/ |
//| ================================================================================ |
//| Script Desenvolvido Por Mooka | eAthena | Por Favor, Não Retire Os Créditos. |
//| ================================================================================ |
//| Observação! O MapFlag Está No Final Do Script ! |
//| ================================================================================ |
//|[v1.3.0]: Nova Função de Múltiplas linguagens. (Mooka) |
//| ------ |
//| v1.2.9 : Nova Tabela! (PM_Lang) (Mooka) |
//| v1.2.8 : Alteração na função !exit. (Mooka) |
//| v1.2.7 : Adicionado balão de Chat no npc. (Mooka) |
//| v1.2.6 : Nova opção! Ganhando experiência no PvP! (Mooka) |
//| v1.2.5 : Adicionado !map#list. (Mooka) |
//| v1.2.4 : Mapflags são definidos automaticamente. (Mooka) |
//| v1.2.3 : Novo campo na tabela 'pvpm_map'. (noguild) (Mooka) |
//| v1.2.2 : Alteração na função "Changeleader". (Mooka) |
//| v1.2.1 : Implementada opção para WoE. (Contagem de pontos na WoE) (Mooka) |
//| v1.2.0 : Novo comando remoto. (!map) (Mooka) |
//| ------ |
//| v1.1.9 : Comandos !pvp\!gvg\!baby mergidos no novo comando !warp. (Mooka) |
//| v1.1.8 : Reformulado Sistema das Arenas. (Mooka) |
//| v1.1.7 : Nova tabela no PvP Master. (pvpm_map) (Mooka) |
//| v1.1.6 : Ranking não mostra mais valores com 0. (Mooka) |
//| v1.1.5 : Novos comandos remotos. (!ban;!truncate) (Mooka) |
//| v1.1.4 : Adicionado opção de Ranking Ratio aos Menus e CMD Remotos. (Mooka) |
//| v1.1.3 : Otimizado IF's dos comandos remotos. (Mooka) |
//| v1.1.2 : Desenvolvida nova opção de Ranking. (Ratio) (Mooka) |
//| v1.1.1 : Alteração na tabela pvpm_data. (Adicionado campo 'ratio') (Mooka) |
//| v1.1.0 : Novo comando remoto. (!help) (Mooka) |
//| ------ |
//| v1.0.9 : Adicionado duplicações do npc em todas as cidades. (Mooka) |
//| v1.0.8 : Adicionada opção para retirar buffs. (Mooka) |
//| v1.0.7 : Correção na função Ranking2. (Mooka) |
//| v1.0.6 : Correção no comando !exit. (Mooka) |
//| v1.0.5 : Correção no bug de enviar o som "end" causando erro. (Mooka) |
//| v1.0.4 : Implementado Sons do Unreal Tournament. (Mooka) |
//| v1.0.3 : Adicionado novo tipo de contagem de Pontos com Announce. (Mooka) |
//| v1.0.2 : Adicionada opção para servidores PK. (Mooka) |
//| v1.0.1 : Adicionado PvP Baby. (Mooka) |
//| v1.0.0 : Desenvolvida Versão. (Mooka) |
//| ================================================================================ |
//| Table update (v1.3.0+): |
//| DROP TABLE IF EXISTS `pvpm_lang`; |
//| CREATE TABLE `pvpm_lang` ( |
//| `id` int(11) unsigned NOT NULL default '0', |
//| `lang` int(11) unsigned NOT NULL default '0', |
//| `str` varchar(255) NOT NULL default '', |
//| KEY `id` (`id`) |
//| ) TYPE=MyISAM; |
//| -------------------------------------------------------------------------------- |
//| Table update (v1.2.3+): |
//| alter table pvpm_map add noguild int(11) not null default '0'; |
//| update pvpm_map set noguild=1 where map='guild_vs1'; |
//| -------------------------------------------------------------------------------- |
//| Table update (v1.1.7+): |
//| DROP TABLE IF EXISTS `pvpm_map`; |
//| CREATE TABLE `pvpm_map` ( |
//| `id` int(11) unsigned NOT NULL default '0', |
//| `map` varchar(255) NOT NULL default 'NULL', |
//| `type` int(11) unsigned NOT NULL default '0', |
//| KEY `id` (`id`) |
//| ) TYPE=MyISAM; |
//| insert into pvpm_map (id,map,type) values (0,'guild_vs3',0); |
//| insert into pvpm_map (id,map,type) values (1,'pvp_n_1-5',0); |
//| insert into pvpm_map (id,map,type) values (2,'guild_vs1',2); |
//| insert into pvpm_map (id,map,type) values (3,'prt_are01',2); |
//| insert into pvpm_map (id,map,type) values (4,'guild_vs2',1); |
//| -------------------------------------------------------------------------------- |
//| Table update (v1.1.1+): |
//| alter table pvpm_data add ratio int(11) not null default '0' after dies |
//| -------------------------------------------------------------------------------- |
//| Table update (v1.0.0+): |
//| DROP TABLE IF EXISTS `pvpm_data`; |
//| CREATE TABLE `pvpm_data` ( |
//| `id` int(11) unsigned NOT NULL default '0', |
//| `name` varchar(255) NOT NULL default '', |
//| `kills` int(11) unsigned NOT NULL default '0', |
//| `dies` int(11) unsigned NOT NULL default '0', |
//| `leader` int(11) unsigned NOT NULL default '0', |
//| `annc` int(11) unsigned NOT NULL default '0', |
//| `ban` int(11) unsigned NOT NULL default '0', |
//| `type` int(11) unsigned NOT NULL default '0', |
//| KEY `id` (`id`), |
//| KEY `kills` (`kills`), |
//| KEY `dies` (`dies`) |
//| ) TYPE=MyISAM; |
//| |
//| ================================================================================ |
- script init_PM -1,{ // |
//| |
//| -------------------------------------------------------------------------------- |
//| |!Aviso importante sobre as configurações! | |
//| |O Sistema de Arena terá problemas caso passe de 10 mapas na lista. | |
//| |É possível alterar este limite editando o script, caso queira fale comigo. | |
//| -------------------------------------------------------------------------------- |
//| |
OnInit: // |
//| Configurações: |
//| |
//|=> Nome do npc na janela. |
set $@pvpm_name$,"[ ^FF0000 Arena ^000000 ]"; // |
//| |
//|=> Deseja usar o Ranking Ratio como principal? [ 1 = Sim ] |
//|---> Nota: Ranking Ratio: Pontuação = Kills - Mortes |
set $@mainRanking,1; // |
//| |
//|=> Até onde o Ranking irá mostrar. [ Máximo 127 ] |
set $@showsRankUntil,25; // |
//| |
//|=> Modo PK. Está configurado para alterar automaticamente, mude se necessário. |
set $@PK_Mode,getbattleflag("pk_mode"); // |
//| |
//|=> Deseja que ao player entrar no pvp perca os buff? [ 1 = Sim] |
set $@breakBuffs,1; // |
//| |
//|=> Quando o player matar o outro, deve ganhar experiência? |
//|---> Nota 1: Servidores de rates alta, configure o "quest_exp_rate". (exp.conf) |
//|---> Nota 2: $@lostEXP: Quantidade de EXP perdida ao morrer. ( 0 = Desativado ) |
//|---> Nota 3: Configuração do comando: |
//|--> 0 : Desativado. |
//|--> 1 : Ativado usando fórmula de EXP. ($@getEXP*KilledLVL/KillerLVL) |
//|--> 2 : Ativado, o player sempre irá ganhar a quantia definida no $@getEXP. |
set $@getEXPoption,1; // |
set $@getEXP,115; // 0,1% no level 50. |
set $@lostEXP,0; // |
//| |
//|=> Deseja ativar a contagem de pontos nos mapas da WoE? |
//|---> Nota 1: Não são enviandos sons/broadcast nos mapas da WoE. |
//|---> Nota 2: Opções de contagem. |
//|--> 0: Desativado. |
//|--> 1: Ativar contagem somente do PvP. |
//|--> 2: Ativar contagem somente do GvG. |
//|--> 3: Ativar ambos. |
set $@CountPointsInWoE,0; // |
//| |
//|=> Configuração do Som e Announce! |
//|---> Nota 1: Os sons devem ser colocados na pasta data/wav em formato .wav |
//|---> Nota 2: Se desativar o som do UT, desativará o broadcast dele também.(2) |
//|--> 0 : Desativar Todas Opções. |
//|--> 1 : Ativar somente broadcast Global. |
//|--> 2 : Ativar somente sons/broadcast do Unreal Tournament. |
//|--> 3 : Ativar Ambos. |
set $@sound,3; // |
//| |
//|=> Lista com o nomes dos Sons Unreal Tournament. |
//|---> Nota 1: $@SoundList$[Pontos em que irá tocar o som(Max. 127)],"Nome do Som"; |
//|---> Nota 2: A partir do ultimo, será somado 10 e repetirá o som, o set |
//|---> com "end" indica que o ultimo som será repetido dali em diante. |
//|---> Nota 3: O nome do arquivo é o mesmo que será exibido no announce. |
set $@SoundList$[1],"First Blood"; // |
set $@SoundList$[2],"Double Kill"; // |
set $@SoundList$[3],"Triple Kill"; // |
set $@SoundList$[5],"Mega Kill"; // |
set $@SoundList$[10],"Ultra Kill"; // |
set $@SoundList$[15],"Killing Spree"; // |
set $@SoundList$[20],"Ownage"; // |
set $@SoundList$[25],"Holy Shit"; // |
set $@SoundList$[30],"God Like"; // |
set $@SoundList$[35],"Dominating"; // |
set $@SoundList$[40],"Unstoppable"; // |
set $@SoundList$[50],"Monster Kill"; // |
set $@SoundList$[51],"end"; // |
//|==================================================================================|
query_sql("select name from pvpm_data where leader=1 and type=0 limit 1",$@Player_Lider$);
query_sql("select name from pvpm_data where leader=1 and type=2 limit 1",$@Guild_Lider$);
query_sql("select lang from pvpm_lang where lang=0 and lang=1",.@checkDefaultLang);
if(!.@checkDefaultLang && .@checkDefaultLang[1])
{
debugmes "[PvP Master Ultimate] NO DEFAULT LANGUAGE(LANG0)! LANG1 WAS SET AS DEFAULT!";
query_sql("update pvpm_lang set lang=lang-1");
}
query_sql("select count(lang) from pvpm_lang where id=0",.@c);
if(!.@c) debugmes "[PvP Master Ultimate] NO LANGUAGE DATA!";
for(set .@i,0;.@i<.@c;set .@i,.@i+1)
{
deletearray .@str$,82;
query_sql("select str from pvpm_lang where lang="+.@i,.@str$);
for(set .@y,0;.@y<82;set .@y,.@y+1) setd "$@PM_Lang"+.@i+"$["+.@y+"]",.@str$[.@y];
}
OnReloadListMap:
deletearray $@IDPM,10;
deletearray $@mapPM$,10;
deletearray $@MapTypePM,10;
deletearray $@menu$,10;
query_sql("select * from pvpm_map order by id asc limit 10",$@IDPM,$@mapPM$,$@MapTypePM,$@mfPM);
setarray $@TypeArena$[0],"^CD5C5C<PvP>","^FF4500<PvP Baby>","^8B5742<GvG>","^0047AB<Evento>";
for(set .@j,0;.@j<=(getarraysize($@mapPM$)-1);set .@j,.@j+1)
{
set $@menu$[.@j],"^000000- Arena "+(.@j+1)+" "+$@TypeArena$[$@MapTypePM[.@j]];
setmapflag $@mapPM$[.@j],mf_noreturn;
setmapflag $@mapPM$[.@j],mf_nosave;
setmapflag $@mapPM$[.@j],mf_noteleport;
setmapflag $@mapPM$[.@j],mf_nowarpto;
setmapflag $@mapPM$[.@j],mf_nowarp;
setmapflag $@mapPM$[.@j],mf_nomemo;
setmapflag $@mapPM$[.@j],mf_nopenalty;
setmapflag $@mapPM$[.@j],mf_nobranch;
if(!$@MapTypePM[.@j] && !$@mfPM[.@j]) setmapflag $@mapPM$[.@j],mf_pvp; else
if(!$@MapTypePM[.@j]) setmapflag $@mapPM$[.@j],mf_pvp_noguild;
if($@MapTypePM[.@j]==2) setmapflag $@mapPM$[.@j],mf_gvg;
}
}
- script PM_source -1,{
while(1)
{
mes $@pvpm_name$;
mes callfunc("getMesPM",1);
mes callfunc("getMesPM",2);
mes callfunc("getMesPM",3);
mes "^008B8B< PvP "+callfunc("getMesPM",4)+" - ^FFA500"+$@Player_Lider$+"^008B8B >";
mes "^008B8B< GvG "+callfunc("getMesPM",4)+" - ^FFA500"+$@Guild_Lider$+"^008B8B >";
switch(select("^FFA500- "+callfunc("getMesPM",5)+"^000000:- Ranking:- "+callfunc("getMesPM",6)+":- "+callfunc("getMesPM",7)+":- "+callfunc("getMesPM",79)))
{
case 1:
for(set @i,0;@i<=(getarraysize($@IDPM)-1);set @i,@i+1) set @m$[@i]," ^0000FF["+getmapusers($@mapPM$[@i])+"]";
switch(getarraysize($@IDPM))
{
case 1: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0]));
case 2: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1]));
case 3: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2]));
case 4: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3]));
case 5: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3],$@menu$[4]+@m$[4]));
case 6: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3],$@menu$[4]+@m$[4],$@menu$[5]+@m$[5]));
case 7: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3],$@menu$[4]+@m$[4],$@menu$[5]+@m$[5],$@menu$[6]+@m$[6]));
case 8: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3],$@menu$[4]+@m$[4],$@menu$[5]+@m$[5],$@menu$[6]+@m$[6],$@menu$[7]+@m$[7]));
case 9: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3],$@menu$[4]+@m$[4],$@menu$[5]+@m$[5],$@menu$[6]+@m$[6],$@menu$[7]+@m$[7],$@menu$[8]+@m$[8]));
case 10: callfunc("pvpm_func","Warp",1,select($@menu$[0]+@m$[0],$@menu$[1]+@m$[1],$@menu$[2]+@m$[2],$@menu$[3]+@m$[3],$@menu$[4]+@m$[4],$@menu$[5]+@m$[5],$@menu$[6]+@m$[6],$@menu$[7]+@m$[7],$@menu$[8]+@m$[8],$@menu$[9]+@m$[9]));
} mes "** ERROR ** CHECK THE pm_map TABLE"; close;
case 2:
switch(select("- PvP:- PvP "+callfunc("getMesPM",8)+":- PvP (Ratio):- GvG:- GvG "+callfunc("getMesPM",8)+":- GvG (Ratio):- "+callfunc("getMesPM",9)))
{
case 1: callfunc "pvpm_func","Ranking1","kills",0,"PvP"; next; continue;
case 2: callfunc "pvpm_func","Ranking1","dies",0,"PvP (Mortes)"; next; continue;
case 3: callfunc "pvpm_func","Ranking1","ratio",0,"PvP (Ratio)"; next; continue;
case 4: callfunc "pvpm_func","Ranking1","kills",2,"GvG"; next; continue;
case 5: callfunc "pvpm_func","Ranking1","dies",2,"GvG (Mortes)"; next; continue;
case 6: callfunc "pvpm_func","Ranking1","ratio",2,"GvG (Ratio)"; next; continue;
case 7:
switch(select("- "+callfunc("getMesPM",9)+" PvP:- "+callfunc("getMesPM",9)+" PvP "+callfunc("getMesPM",8)+":- "+callfunc("getMesPM",9)+" PvP (Ratio):- "+callfunc("getMesPM",9)+" GvG:- "+callfunc("getMesPM",9)+" GvG "+callfunc("getMesPM",8)+":- "+callfunc("getMesPM",9)+" GvG (Ratio)"))
{
case 1: callfunc "pvpm_func","Ranking2","kills",0; next; continue;
case 2: callfunc "pvpm_func","Ranking2","dies",0; next; continue;
case 3: callfunc "pvpm_func","Ranking2","ratio",0; next; continue;
case 4: callfunc "pvpm_func","Ranking2","kills",2; next; continue;
case 5: callfunc "pvpm_func","Ranking2","dies",2; next; continue;
case 6: callfunc "pvpm_func","Ranking2","ratio",2; next; continue;
}
}
case 3:
next;
mes $@pvpm_name$;
mes callfunc("getMesPM",10);
mes callfunc("getMesPM",11);
mes callfunc("getMesPM",12);
next; continue;
case 4:
close;
case 5:
next;
mes $@pvpm_name$;
mes callfunc("getMesPM",80);
query_sql("select str from pvpm_lang where id=0",@lang$);
for(set @a,0;@a<getarraysize(@lang$);set @a,@a+1) mes @a+" = "+@lang$[@a];
input @inp;
if(@inp < 0 || @inp > (getarraysize(@lang$)-1))
{
mes callfunc("getMesPM",81);
next; continue;
} set PM_Lang,@inp;
next; continue;
}
}
OnInit:
waitingroom "",0;
OnTimer5000:
setarray .@RoomDisplay$,"[PvP] Arena","PvP "+$@PM_Lang0$[4]+" ["+$@Player_Lider$+"]","GvG "+$@PM_Lang0$[4]+" ["+$@Guild_Lider$+"]";
delwaitingroom;
waitingroom .@RoomDisplay$[rand(0,2)],0;
initnpctimer;
}
- script cmd -1,{
OnWhisperGlobal:
if(compare(@whispervar0$,"!warp"))
{
set @ArenaID,@whispervar1$;
if(!@ArenaID)
{
dispbottom callfunc("getMesPM",13);
end;
} callfunc("pvpm_func","Warp",0,@ArenaID);
}
if(compare(@whispervar0$,"!ranking"))
{ if(compare(@whispervar0$,"2"))
{
if(compare(@whispervar1$,"pvp"))
{ if(compare(@whispervar2$,"ratio")) { callfunc "pvpm_func","Ranking2","ratio",0,"Ratio"; end; }
if(!compare(@whispervar2$,"die")) callfunc "pvpm_func","Ranking2","kills",0; else
callfunc "pvpm_func","Ranking2","dies",0;
end;
}
if(compare(@whispervar1$,"gvg"))
{ if(compare(@whispervar2$,"ratio")) { callfunc "pvpm_func","Ranking2","ratio",2,"Ratio"; end; }
if(!compare(@whispervar2$,"die")) callfunc "pvpm_func","Ranking2","kills",2; else
callfunc "pvpm_func","Ranking2","dies",2;
end;
}
}
if(compare(@whispervar1$,"pvp"))
{ if(compare(@whispervar2$,"ratio")) { callfunc "pvpm_func","Ranking1","ratio",0,"Ratio"; end; }
if(!compare(@whispervar2$,"die")) callfunc "pvpm_func","Ranking1","kills",0,"PvP"; else
callfunc "pvpm_func","Ranking1","dies",0,"PvP ( Mortes )";
end;
}
if(compare(@whispervar1$,"gvg"))
{ if(compare(@whispervar2$,"ratio")) { callfunc "pvpm_func","Ranking1","ratio",2,"Ratio"; end; }
if(!compare(@whispervar2$,"die")) callfunc "pvpm_func","Ranking1","kills",2,"GvG"; else
callfunc "pvpm_func","Ranking1","dies",2,"GvG";
end;
}
}
if ( compare(@whispervar0$,"!exit") )
{
getmapxy(@map$,@x,@y,0);
for(set @i,0;@i!=getarraysize($@mapPM$);set @i,@i+1)
{
if (@map$ != $@mapPM$[@i]) continue;
dispbottom callfunc("getMesPM",14);
sleep2 5000;
warp getsavepoint(0),getsavepoint(1),getsavepoint(2);
end;
}
dispbottom callfunc("getMesPM",15);
end;
}
if (compare(@whispervar0$,"lider"))
{
if(compare(@whispervar0$,"pvp")) dispbottom "PvP "+callfunc("getMesPM",4)+": "+$@Player_Lider$; else
dispbottom "GvG "+callfunc("getMesPM",4)+": "+$@Guild_Lider$;
end;
}
if(compare(@whispervar0$,"!truncate") && getgmlevel()>=70)
{
if(compare(@whispervar1$,"pvp"))
{
query_sql("delete from pvpm_data where type=0");
dispbottom callfunc("getMesPM",16);
end;
}
if(compare(@whispervar1$,"gvg"))
{
query_sql("delete from pvpm_data where type=2");
dispbottom callfunc("getMesPM",16);
end;
} dispbottom callfunc("getMesPM",17);
}
if (compare(@whispervar0$,"!ban"))
{
if(@whispervar1$=="") { dispbottom callfunc("getMesPM",18); end; }
if(@whispervar2$=="") { dispbottom callfunc("getMesPM",19); end; }
if(@whispervar3$=="") { dispbottom callfunc("getMesPM",20); end; }
if(@whispervar2$=="showtime")
{ query_sql("select ban from pvpm_data where name='"+@whispervar1$+"' limit 1",@showtime);
dispbottom callfunc("getMesPM",21)+" ["+@whispervar1$+"] ["+@showtime+" "+callfunc("getMesPM",27)+"]";
end;
} if(@whispervar2$=="unban")
{ query_sql("update pvpm_data set ban=0 where name='"+@whispervar1$+"' limit 1");
dispbottom callfunc("getMesPM",22)+@whispervar1$;
message @whispervar1$,callfunc("getMesPM",23);
end;
} set @time,@whispervar2$;
if(@time==0 && @whispervar2$!="unban" || @time==0 && @whispervar2$!="showtime") { dispbottom callfunc("getMesPM",24); end; }
set @id,0;
query_sql("select id from pvpm_data where name='"+@whispervar1$+"' and type="+@whispervar3$,@id);
if(!@id && @whispervar3$=="0" || !@id && @whispervar3$=="2") { dispbottom callfunc("getMesPM",25); end; }
set @bantime,0;
if(compare(@whispervar2$,"-")) query_sql("update pvpm_data set ban=ban"+@time+" where id="+@id+" limit 1"); else
query_sql("update pvpm_data set ban=ban+"+@time+" where id="+@id+" limit 1");
query_sql("select ban from pvpm_data where id="+@id+" limit 1",@bantime);
dispbottom callfunc("getMesPM",26)+" ("+@bantime+" "+callfunc("getMesPM",27)+")";
message @whispervar1$,callfunc("getMesPM",28)+" "+@bantime+" "+callfunc("getMesPM",27)+".";
warpchar "prontera",150,150,getcharid(0,@whispervar1$);
end;
}
if (compare(@whispervar0$,"!map") && getgmlevel()>=70)
{
if (compare(@whispervar1$,"add"))
{
if(getarraysize($@IDPM)>=10)
{
dispbottom callfunc("getMesPM",29);
dispbottom callfunc("getMesPM",30);
end;
} set @type,@whispervar3$;
if(!@type && @whispervar3$==""||@type>2)
{
dispbottom callfunc("getMesPM",31);
dispbottom callfunc("getMesPM",32);
dispbottom callfunc("getMesPM",33);
end;
} set @mapcheck$,"";
query_sql("select map from pvpm_map where map='"+@whispervar2$+"' limit 1",@mapcheck$);
if(@mapcheck$!="")
{
dispbottom callfunc("getMesPM",34);
end;
} query_sql("insert into `pvpm_map` (id,map,type) values ("+(getarraysize($@IDPM)-1)+",'"+@whispervar2$+"',"+@type+")");
dispbottom callfunc("getMesPM",35)+" ("+@whispervar2$+")";
doevent "init_PM::OnReloadListMap";
}
if (compare(@whispervar1$,"del"))
{
if(getarraysize($@IDPM)<=1)
{
dispbottom callfunc("getMesPM",36);
end;
} query_sql("select map from pvpm_map where map='"+@whispervar2$+"'",@mapcheck$);
if(@mapcheck$=="")
{
dispbottom callfunc("getMesPM",37);
end;
} query_sql("delete from pvpm_map where map='"+@whispervar2$+"'");
dispbottom callfunc("getMesPM",38)+" ("+@whispervar2$+")";
doevent "init_PM::OnReloadListMap";
}
if (compare(@whispervar1$,"list"))
{
for(set @i,0;@i<=(getarraysize($@IDPM)-1);set @i,@i+1) dispbottom "["+(@i+1)+"] "+$@mapPM$[@i];
end;
}
end;
}
if (compare(@whispervar0$,"!help"))
{
if(compare(@whispervar1$,"!warp")) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",40);
dispbottom "- !warp#1;!warp#2;...!warp#5 ..";
dispbottom callfunc("getMesPM",41);
end;
}
if(compare(@whispervar1$,"!ranking")) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",42);
dispbottom "- !ranking#pvp;!ranking#pvp#die;!ranking#gvg;!ranking#gvg#die;!ranking#ratio";
dispbottom "- !ranking2#pvp;!ranking2#pvp#die;!ranking2#gvg;!ranking2#gvg#die;!ranking2#ratio; (Mostra somente sua posição)";
dispbottom callfunc("getMesPM",43);;
end;
}
if(compare(@whispervar1$,"!pvplider") || compare(@whispervar1$,"!gvglider")) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",44);;
end;
}
if(compare(@whispervar1$,"!exit")) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",45);
end;
}
if(compare(@whispervar1$,"!ban") && getgmlevel()>=70) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",46);
dispbottom callfunc("getMesPM",47);
dispbottom callfunc("getMesPM",48);
dispbottom callfunc("getMesPM",49);
dispbottom callfunc("getMesPM",50);
end;
}
if(compare(@whispervar1$,"!map") && getgmlevel()>=70) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",51);
dispbottom callfunc("getMesPM",52);
dispbottom "- Type: 0 = Arena PvP; 1 = Arena PvP Baby; 2 Arena GvG;";
dispbottom callfunc("getMesPM",53);
end;
}
if(compare(@whispervar1$,"!truncate") && getgmlevel()>=70) {
dispbottom callfunc("getMesPM",39);
dispbottom callfunc("getMesPM",54);
dispbottom callfunc("getMesPM",55);
dispbottom callfunc("getMesPM",56);
end;
} dispbottom callfunc("getMesPM",57);
end;
}
dispbottom callfunc("getMesPM",58);
dispbottom callfunc("getMesPM",59);
dispbottom callfunc("getMesPM",60);
dispbottom callfunc("getMesPM",61);
dispbottom callfunc("getMesPM",62);
dispbottom callfunc("getMesPM",63);
dispbottom callfunc("getMesPM",64);
dispbottom callfunc("getMesPM",65);
if(getgmlevel()>=70)
{
dispbottom callfunc("getMesPM",66);
dispbottom callfunc("getMesPM",67);
dispbottom callfunc("getMesPM",68);
dispbottom callfunc("getMesPM",69);
}
}
- script event#pvpm -1,{
OnInit:
OnTimer60000:
query_sql("update pvpm_data set ban=ban-1 where ban>0");
initnpctimer;
end;
OnPCKillEvent:
callfunc("pvpm_func","PCKillEvent");
OnPCDieEvent:
callfunc("pvpm_func","PCDieEvent");
OnPCLoadMapEvent:
callfunc("pvpm_func","PCLoadEvent");
}
function script pvpm_func {
if (getarg(0) == "Ranking1")
{
deletearray @name$[0],getarraysize(@name$);
deletearray @points[0],getarraysize(@points);
query_sql "select name,"+getarg(1)+" from pvpm_data where type="+getarg(2)+" and "+getarg(1)+"!=0 order by "+getarg(1)+" desc limit 125",@name$,@points;
dispbottom "======= Ranking - "+getarg(3)+" =======";
for(set @i,0;@i != $@showsRankUntil;set @i,@i+1)
{
if(@name$[@i]=="") return;
dispbottom (@i+1)+"º | "+@name$[@i]+" | "+@points[@i];
} return;
}
if (getarg(0) == "Ranking2")
{
deletearray @name$[0],getarraysize(@name$);
deletearray @points[0],getarraysize(@points);
query_sql "select id,"+getarg(1)+" from pvpm_data where type="+getarg(2)+" order by "+getarg(1)+" desc limit 125",@id,@points;
for(set @i,0;@i <= 125;set @i,@i+1)
{
if (@id[@i] == getcharid(getarg(2)))
{
dispbottom "- "+strcharinfo(getarg(2))+" | "+(@i+1)+"º | "+@points[@i];
return;
}
}
dispbottom callfunc("getMesPM",70);
return;
}
if(getarg(0)=="Warp")
{
if(getarg(1))
{
if($@MapTypePM[(getarg(2)-1)]==2 && !getcharid(2))
{
mes $@pvpm_name$;
mes callfunc("getMesPM",71);
close;
} if($@MapTypePM[(getarg(2)-1)]==1 && Upper!=2)
{
mes $@pvpm_name$;
mes callfunc("getMesPM",72);
close;
} if($@MapTypePM==0||$@MapTypePM==1) callfunc("pvpm_func","ban",0,1); else callfunc("pvpm_func","ban",2,1);
} else {
getmapxy(@map$,@x,@y,0);
if($@mapPM$[(getarg(2)-1)]==@map$)
{
dispbottom "<!!!> "+callfunc("getMesPM",73);
end;
} if($@MapTypePM[(getarg(2)-1)]==2)
{
dispbottom "<!!!> "+callfunc("getMesPM",71);
end;
} if($@MapTypePM[(getarg(2)-1)]==1 && Upper!=2)
{
dispbottom "<!!!> "+callfunc("getMesPM",72);
end;
} if($@MapTypePM==0||$@MapTypePM==1) callfunc("pvpm_func","ban",0); else callfunc("pvpm_func","ban",2);
} set @MapIDx,(getarg(2)-1);
if($@breakBuffs) sc_end -1;
warp $@mapPM$[(getarg(2)-1)],0,0;
end;
}
if (getarg(0) == "ban")
{
set @bantime,0;
query_sql("select ban from pvpm_data where id="+getcharid(getarg(1))+" limit 1",@bantime);
if(!@bantime) return;
if(!getarg(2,0)) { dispbottom "<!!!> "+callfunc("getMesPM",74)+" "+@bantime+" "+callfunc("getMesPM",27)+"!"; end; } else
{ mes "^FF7F50<!!!> ^FFA500"+callfunc("getMesPM",74)+" ^FF7F50"+@bantime+"^FFA500 "+callfunc("getMesPM",27)+"!"; close; }
}
if (getarg(0) == "Up")
{
if($@getEXPoption) callfunc("pvpm_func","getexp");
set @name$,"";
set @points,0;
query_sql("select name,"+getarg(1)+" from pvpm_data where id="+getcharid(getarg(2))+" and type="+getarg(2)+" limit 1",@name$,@points);
if (@name$=="")
{
query_sql("INSERT INTO pvpm_data (id,"+getarg(1)+",name,annc,type) values ("+getcharid(getarg(2))+",1,'"+strcharinfo(getarg(2))+"',"+getarg(3)+","+getarg(2)+")");
dispbottom "Score: 1";
end;
} query_sql("update pvpm_data set "+getarg(1)+"="+getarg(1)+"+1 where id="+getcharid(getarg(2)));
set @points,@points+1;
if($@mainRanking)
{
set @kills,0;
set @dies,0;
query_sql("select kills,dies from pvpm_data where id="+getcharid(getarg(2))+" and type="+getarg(2)+" limit 1",@kills,@dies);
query_sql("update pvpm_data set ratio="+(@kills-@dies)+" where id="+getcharid(getarg(2))+" and type="+getarg(2)+" limit 1");
set @points,@kills-@dies;
return;
} return;
}
if (getarg(0) == "ChangeLeader")
{
set @L_name$,"";
set @L_points,0;
if(!$@mainRanking) query_sql("select name,kills from pvpm_data where leader=1 and type="+getarg(1)+" limit 1",@L_name$,@L_points); else
query_sql("select name,ratio from pvpm_data where leader=1 and type="+getarg(1)+" limit 1",@L_name$,@L_points);
if (@points > @L_points && @L_name$ != strcharinfo(getarg(1)))
{
query_sql("update pvpm_data set leader=0 where type="+getarg(1));
query_sql("update pvpm_data set leader=1 where id="+getcharid(getarg(1))+" and type="+getarg(1));
mapannounce @map$,strcharinfo(getarg(1))+" | "+callfunc("getMesPM",75)+" !",bc_map,0xFF7F50;
set $@Player_Lider$,"";
set $@Guild_Lider$,"";
query_sql("select name from pvpm_data where leader=1 and type=0 limit 1",$@Player_Lider$);
query_sql("select name from pvpm_data where leader=1 and type=2 limit 1",$@Guild_Lider$);
} return;
}
if (getarg(0) == "Annc")
{
set @points,0;
set @annc,0;
query_sql "select kills,annc from pvpm_data where id="+getcharid(getarg(1))+" and type="+getarg(1),@points,@annc;
if(!@annc) query_sql "update pvpm_data set annc=annc+"+getarg(2)+" where id="+getcharid(getarg(1))+" and type="+getarg(1);
if (@points >= @annc)
{
announce strcharinfo(getarg(1))+" | "+@points+" "+callfunc("getMesPM",76)+"! ["+getarg(3)+"]",bc_all,0xFF7F50;
query_sql "update pvpm_data set annc=annc+"+getarg(2)+" where id="+getcharid(getarg(1))+" and type="+getarg(1);
if($@sound==1||$@sound==3) soundeffectall "Monster Kill.wav",0;
} if(!$@sound||$@sound==1) return;
if(getarg(3)=="PvP")
{
if(@noMoreSounds&&@withoutDying==@withoutDyingAnnc)
{
mapannounce @map$,strcharinfo(0)+" | "+$@SoundList$[@noMoreSounds]+"! [ "+@withoutDying+" "+callfunc("getMesPM",76)+" ]",bc_map,0xFF7F50;
soundeffectall $@SoundList$[@noMoreSounds]+".wav",0,@map$;
set @withoutDyingAnnc,@withoutDyingAnnc+5;
return;
}
if($@SoundList$[@withoutDying]=="end")
{
set @withoutDyingAnnc,@withoutDyingAnnc+5;
set @noMoreSounds,@withoutDying-1;
}
if($@SoundList$[@withoutDying]!=""&&!@noMoreSounds)
{
mapannounce @map$,strcharinfo(0)+" | "+$@SoundList$[@withoutDying]+" ! [ "+@withoutDying+" "+callfunc("getMesPM",76)+" ]",bc_map,0xFF7F50;
soundeffectall $@SoundList$[@withoutDying]+".wav",0,@map$;
}
} return;
}
if(getarg(0) == "PCKillEvent")
{
set @Live,1;
if(@RightWoEMap)
{
if($@CountPointsInWoE==1 || $@CountPointsInWoE==3) callfunc "pvpm_func","Up","kills",0,100;
dispbottom "Player Score: "+@points;
if($@CountPointsInWoE==2 || $@CountPointsInWoE==3) callfunc "pvpm_func","Up","kills",2,1000;
dispbottom "Guild Score: "+@points;
end;
} getmapxy(@map$,@x,@y,0);
if(@map$==$@mapPM$[@MapIDx] && $@MapTypePM[@MapIDx]>=0 && $@MapTypePM[@MapIDx]<=1 || $@PK_Mode)
{
set @withoutDying,@withoutDying+1;
callfunc("pvpm_func","Up","kills",0,100);
dispbottom "Player Score: "+@points;
callfunc("pvpm_func","ChangeLeader",0);
callfunc("pvpm_func","Annc",0,100,"PvP");
}
if(@map$==$@mapPM$[@MapIDx] && $@MapTypePM[@MapIDx]==2 && getcharid(2) || $@PK_Mode && getcharid(2))
{
callfunc("pvpm_func","Up","kills",2,1000);
dispbottom "Guild Score: "+@points;
callfunc("pvpm_func","ChangeLeader",2);
callfunc("pvpm_func","Annc",2,1000,"GvG");
} end;
}
if(getarg(0) == "PCDieEvent")
{
set @Live,0;
if(@RightWoEMap)
{
if($@CountPointsInWoE==1 || $@CountPointsInWoE==3) { callfunc "pvpm_func","Up","dies",0,100; if($@mainRanking) dispbottom "Player Score: "+@points; }
if($@CountPointsInWoE==2 || $@CountPointsInWoE==3) { callfunc "pvpm_func","Up","dies",2,1000; if($@mainRanking) dispbottom "Guild Score: "+@points; }
}
set @withoutDying,0;
set @noMoreSounds,0;
set @withoutDyingAnnc,0;
set @MapIDx,0;
set @RightWoEMap,0;
getmapxy(@map$,@x,@y,0);
if(@map$==$@mapPM$[@MapIDx] && $@MapTypePM[@MapIDx]>=0 && $@MapTypePM[@MapIDx]<=1 || $@PK_Mode) { callfunc "pvpm_func","Up","dies",0,100; if($@mainRanking) dispbottom "Player Score: "+@points; }
if(@map$==$@mapPM$[@MapIDx] && $@MapTypePM[@MapIDx]==2 && getcharid(2) || $@PK_Mode && getcharid(2)) { callfunc "pvpm_func","Up","dies",2,1000; if($@mainRanking) dispbottom "Guild Score: "+@points; }
end;
}
if(getarg(0) == "PCLoadEvent")
{
getmapxy(@map$,@x,@y,0);
if(getcastlename(@map$)=="") { set @RightWoEMap,0; end; }
if(agitcheck() || agitcheck2()) set @RightWoEMap,1;
end;
}
if(getarg(0) == "getexp")
{
if(@Live)
{
attachrid(killedrid);
set .@BaseLevel,BaseLevel;
attachrid(killerrid);
if($@getEXPoption==1) set @EXP,(($@getEXP*.@BaseLevel)/BaseLevel); else set @EXP,$@getEXP;
getexp @EXP,@EXP;
dispbottom callfunc("getMesPM",77)+" "+@EXP+" EXP.";
} else {
if(BaseExp) set BaseExp,BaseExp-$@lostEXP;
if(JobExp) set JobExp,JobExp-$@lostEXP;
dispbottom callfunc("getMesPM",78)+" "+$@lostEXP+" EXP.";;
} return;
}
}
OnPCDieEvent:
set .@t,15;
while(.@t>0){
dispbottom "Você irá renascer em "+.@t+" segundos!";
sleep2 1000;
.@t--;
}
atcommand "@alive"; //tem um comando que ressuscita em script, mas esqueci o nome.
end;
function script getMesPM { return getd("$@PM_Lang"+PM_Lang+"$["+getarg(0)+"]"); }
//================== DUPLICATE =====================
prontera,151,193,4 duplicate(PM_source) [PvP] Arena#1 899
morocc,152,97,4 duplicate(PM_source) [PvP] Arena#2 899
geffen,127,65,4 duplicate(PM_source) [PvP] Arena#3 899
alberta,26,240,4 duplicate(PM_source) [PvP] Arena#4 899
izlude,122,119,4 duplicate(PM_source) [PvP] Arena#5 899
aldebaran,147,119,4 duplicate(PM_source) [PvP] Arena#6 899
xmas,145,136,4 duplicate(PM_source) [PvP] Arena#7 899
comodo,184,158,4 duplicate(PM_source) [PvP] Arena#8 899
gonryun,161,126,4 duplicate(PM_source) [PvP] Arena#9 899
louyang,226,106,4 duplicate(PM_source) [PvP] Arena#10 899
ayothaya,155,121,4 duplicate(PM_source) [PvP] Arena#11 899
hugel,87,164,4 duplicate(PM_source) [PvP] Arena#12 899
moscovia,209,190,5 duplicate(PM_source) [PvP] Arena#13 899
//================== WOE =====================
//Necessário para ativar o sistema de contagem dos pontos na woe.
//caso queira desativar algum mapa, retire-o daqui.
aldeg_cas01 mapflag loadevent
aldeg_cas02 mapflag loadevent
aldeg_cas03 mapflag loadevent
aldeg_cas04 mapflag loadevent
gefg_cas01 mapflag loadevent
gefg_cas02 mapflag loadevent
gefg_cas03 mapflag loadevent
gefg_cas04 mapflag loadevent
gefg_cas05 mapflag loadevent
payg_cas01 mapflag loadevent
payg_cas02 mapflag loadevent
payg_cas03 mapflag loadevent
payg_cas04 mapflag loadevent
payg_cas05 mapflag loadevent
prtg_cas01 mapflag loadevent
prtg_cas02 mapflag loadevent
prtg_cas03 mapflag loadevent
prtg_cas04 mapflag loadevent
prtg_cas05 mapflag loadevent
schg_cas01 mapflag loadevent
schg_cas02 mapflag loadevent
schg_cas03 mapflag loadevent
schg_cas04 mapflag loadevent
schg_cas05 mapflag loadevent
arug_cas01 mapflag loadevent
arug_cas02 mapflag loadevent
arug_cas03 mapflag loadevent
arug_cas04 mapflag loadevent
arug_cas05 mapflag loadevent
//NÃO APAGUE DAQUI PARA BAIXO!
pay_gld mapflag loadevent
prt_gld mapflag loadevent
sch_gld mapflag loadevent
aru_gld mapflag loadevent
gef_fild13 mapflag loadevent
alde_gld mapflag loadevent
n_castle mapflag loadevent