· 9 years ago · Nov 27, 2016, 05:52 PM
1// ________________________________________________________
2// / \
3// | __ __ __ __ |
4// | \ \ / / _| \/ |___ |
5// | \ V / | | | |\/| / __| |
6// | | || |_| | | | \__ \ |
7// | |_| \__,_|_| |_|___/ |
8// | |
9// | | Geek Emulator [Script] | |
10// |--------------------------------------------------------|
11// | Nome do Script: Arena da Morte |
12// |--------------------------------------------------------|
13// | Criado por: Luann Peixe - Khan / Yum / YuMs |
14// |--------------------------------------------------------|
15// | Versão do Script: 1.0 |
16// |--------------------------------------------------------|
17// | Descrição: Uma arena com PvP/GvG simples e funcional. |
18// | Agora com diversos addons para lhe ajudar. |
19// |--------------------------------------------------------|
20// | Changelog: |
21// | 1.0 Script Optimizado e Reestruturado [YuMs] |
22// | - Anotações |
23// |--------------------------------------------------------|
24// | Contato: www.luannpeixe.com.br |
25// | www.geeknetwork.com.br |
26// \________________________________________________________/
27/*===== Tabela SQL ==========================================*/
28- script cristabpvp -1,{
29OnInit:
30 query_sql ("CREATE TABLE IF NOT EXISTS `pvp` (`char_id` int(11) unsigned NOT NULL auto_increment,`nick` varchar(255) NOT NULL default '0',`vitorias` int(11) unsigned NOT NULL default '0',`derrotas` int(11) unsigned NOT NULL default '0',KEY `char_id` (`char_id`),KEY `vitorias` (`vitorias`),KEY `derrotas` (`derrotas`)) ENGINE=MyISAM;");
31 query_sql ("CREATE TABLE IF NOT EXISTS `gvg` (`guild_id` int(11) unsigned NOT NULL auto_increment,`nome` varchar(255) NOT NULL default '0',`vitorias` int(11) unsigned NOT NULL default '0',`derrotas` int(11) unsigned NOT NULL default '0',KEY `guild_id` (`guild_id`),KEY `vitorias` (`vitorias`),KEY `derrotas` (`derrotas`)) ENGINE=MyISAM;");
32 end;
33}
34/*===== Addon: Portais de SaÃda ===========================*/
35
36 //= SaÃda (portais)
37 //= PvP
38 //guild_vs3,12,50,0 warp gvs01 1,1,prontera,155,191
39 //guild_vs3,50,87,0 warp gvs02 1,1,prontera,155,191
40 //guild_vs3,87,49,0 warp gvs03 1,1,prontera,155,191
41 //guild_vs3,50,12,0 warp gvs04 1,1,prontera,155,191
42 //= GvG
43 //guild_vs1,50,8,0 warp gvs05 1,1,prontera,155,191
44 //guild_vs1,91,49,0 warp gvs06 1,1,prontera,155,191
45 //guild_vs1,49,91,0 warp gvs07 1,1,prontera,155,191
46 //guild_vs1,8,49,0 warp gvs08 1,1,prontera,155,191
47
48 //= SaÃda (10sg)
49 //guild_vs3,36,69,4 script SaÃda#gvs09::Sair 4_M_CRU_KNT,{
50 // dispbottom "Você sairá em 15 segundos.";
51 // addtimer 15000,"Sair::On5EC";
52 // end;
53 //
54 // On5EC:
55 // warp "prontera",155,191; end;
56 //}
57 //guild_vs1,33,72,4 duplicate(Sair) SaÃda#gvs10 4_M_CRU_KNT
58//===========================================================
59//= Remova as barras para que o portal funcione.
60// Exemplo:
61// Antes: //guild_vs3,12,50,0...
62// Depois: guild_vs3,12,50,0...
63//===========================================================
64
65//===== Configurações =======================================
66
67 //= Localização
68 prontera,151,193,5 script Arena da Morte 4_NFCOFFIN,{
69 //= Configurações [ PvP ]
70 //= Mapa da Arena PvP
71 set $PvP$[0],"guild_vs3"; //= Padrão: guild_vs3
72 //= Customizável (Para desativar coloque duas barras na frente.) Ex: //setmapflag ...
73 setmapflag $PvP$, 0; //= [ nomemo ] Aqui você citara o mapa ou dungeon aonde o "acolyte" ou "noviço" não usara o comando /memo.
74 setmapflag $PvP$, 2; //= [ nosave ] Aqui você citara o mapa ou dungeon aonde não é possivel salvar.
75 setmapflag $PvP$, 1; //= [ noteleport ] Aqui você citara o mapa ou dungeon aonde o player não podera usar a magia "Teleport".
76 setmapflag $PvP$, 3; //= [ nobranch ] Aqui você citara o mapa ou dungeon aonde o player não podera usar o galho seco(dead branch).
77 setmapflag $PvP$, 4; //= [ nopenalty ] Aqui você citara o mapa ou dungeon aonde o player ao morrer não perdera nada. Obs: Nada de Nada(EXP/JOB/ITENS)
78 setmapflag $PvP$, 8; //= [ pvp_noguild ] Aqui você citara o mapa aonde sera o PvP sem ser GvG.
79 setmapflag $PvP$, 13; //= [ nowarp ] Aqui você citara o mapa ou dungeon aonde o player não podera usar a magia "Warp Portal".
80 setmapflag $PvP$, 34; //= [ nowarpto ] Aqui você citara o mapa ou dungeon onde o Player não poderá usar um portal para lá. Obs: Apenas pra servidor com @warp
81 gvgoff $PvP$; //= [ gvgoff ] Aqui você citará o mapa onde o GvG ficará desativado (GvG Off)
82 // Obs: Não remova essa linha! Essa função fará com que o dano causado no jogador apareça. Com o GvG ligado ficará igual a WoE
83 pvpon $PvP$; //= [ pvpon ] Aqui você citará o mapa onde o PvP ficará ativado. (PvP On)
84 //= Retirar os buffs ao entrar na arena?
85 set .PvPbuff,0; //= [ 0 = Não / 1 = Sim ]
86 //= Configurações [ GvG ]
87 //= Mapa da Arena GvG
88 set $GvG$[0],"guild_vs1"; //= Padrão: guild_vs1
89 //= Customizável (Para desativar coloque duas barras na frente.) Ex: //setmapflag ...
90 setmapflag $GvG$, 0; //= [ nomemo ] Aqui você citara o mapa ou dungeon aonde o "acolyte" ou "noviço" não usara o comando /memo.
91 setmapflag $GvG$, 2; //= [ nosave ] Aqui você citara o mapa ou dungeon aonde não é possivel salvar.
92 setmapflag $GvG$, 1; //= [ noteleport ] Aqui você citara o mapa ou dungeon aonde o player não podera usar a magia "Teleport".
93 setmapflag $GvG$, 3; //= [ nobranch ] Aqui você citara o mapa ou dungeon aonde o player não podera usar o galho seco(dead branch).
94 setmapflag $GvG$, 4; //= [ nopenalty ] Aqui você citara o mapa ou dungeon aonde o player ao morrer não perdera nada. Obs: Nada de Nada(EXP/JOB/ITENS)
95 setmapflag $GvG$, 8; //= [ pvp_noguild ] Aqui você citara o mapa aonde sera o PvP sem ser GvG.
96 setmapflag $GvG$, 13; //= [ nowarp ] Aqui você citara o mapa ou dungeon aonde o player não podera usar a magia "Warp Portal".
97 setmapflag $GvG$, 34; //= [ nowarpto ] Aqui você citara o mapa onde ou dungeon onde o Player não poderá usar um portal para lá. Obs: Apenas pra servidor com @warp
98 pvpoff $GvG$; //= [ pvpoff ] Aqui você citará o mapa onde o PvP ficará desativado. (PvP Off)
99 gvgon $GvG$; //= [ gvgon ] Aqui você citará o mapa onde o GvG ficará ativado. (GvG On)
100 //= Retirar os buffs ao entrar na arena?
101 set .GvGbuff,1; //= [ 0 = Não / 1 = Sim ]
102 //= Nome do NPC
103 set $arena$,"[ ^FF0000 Arena da Morte ^000000 ]";
104 //= Sistema de Segurança (Free Kill)
105 //= Level necessário para entrar nas arenas
106 set .FreeKill, 60; //= Padrão: 60
107 //= Quantidade de Jogadores que devem estar no grupo para a GvG
108 set .QNTgrupo, 6; //= Padrão: 6
109 //= NÃvel de GM que não irá ganhar pontos no PvP/GvG
110 set .GMrank, 5; //= Padrão: 5 [ Superior a 5 não irá aparecer no ranking ]
111//===========================================================
112
113 mes $arena$;
114 mes "Olá "+strcharinfo(0);
115 mes "Para qual destino deseja ir?";
116 next;
117 switch(select("- Playes vs Player ^0000FF["+getmapusers($PvP$[$PvP])+"]^000000:- Guild vs Guild ^0000FF["+getmapusers($GvG$[$GvG])+"]^000000"))
118 {
119 case 1:
120 if ( BaseLevel < .FreeKill || Class <= 6 || (Class >= 4001 && Class <= 4007) || Class == 22 || Class == 26 ){
121 mes $arena$;
122 mes "Apenas jogadores de level maior ou igual a "+.FreeKill+" podem entrar na arena.";
123 mes "Também é proibido a entrada das Classes Iniciais, Extendidas, Aprendizes, Natal e Casamento";
124 close;
125 }else{
126 if(.PvPbuff) sc_end -1;
127 warp $PvP$,0,0; end;
128 }
129
130 case 2:
131 mes $arena$;
132 if ( BaseLevel < .FreeKill || Class <= 6 || (Class >= 4001 && Class <= 4007) || Class == 22 || Class == 26 ){
133 mes "Apenas jogadores de level maior ou igual a "+.FreeKill+" podem entrar na arena.";
134 mes "Também é proibido a entrada das Classes Iniciais, Extendidas, Aprendizes, Natal e Casamento";
135 close;
136 }
137 if (getcharid(1) == 0){
138 mes "Você precisa estar em um Grupo!";
139 close;
140 }
141 if (getcharid(2) == 0){
142 mes "Você precisa estar em um Clã!";
143 close;
144 }
145 getpartymember(getcharid(1));
146 if($@partymembercount < .QNTgrupo){
147 mes "Seu grupo precisa ter "+.QNTgrupo+" ou mais competidores para poder participar da Arena GvG";
148 close;
149 }
150 set .@lider,getcharid(3);
151 set .@cla,getcharid(2);
152 set .@count, 0;
153 for (set .@i,0; .@i < $@partymembercount; set .@i,.@i+1){
154 if(isloggedin(getcharid(3,$@partymembername$[.@i]))){
155 attachrid(getcharid(3,$@partymembername$[.@i]));
156
157 if (getcharid(2) != .@cla){
158 set .@banido$,strcharinfo(0);
159 attachrid(.@lider);
160 mes "O Player "+.@banido$+" não faz parte do seu Clã.";
161 close;
162 }
163 if ( BaseLevel < .FreeKill || Class <= 6 || (Class >= 4001 && Class <= 4007) || Class == 22 || Class == 26 ){
164 set .@banido$,strcharinfo(0);
165 attachrid(.@lider);
166 mes "Apenas jogadores de level maior ou igual a "+.FreeKill+" podem entrar na arena.";
167 mes "Também é proibido a entrada das Classes Iniciais, Extendidas, Aprendizes, Natal e Casamento";
168 mes "O jogador "+.@banido$+" não está qualificado para esta modalidade.";
169 close;
170 }
171 set .@count, .@count +1;
172 }
173 }
174 attachrid(.@lider);
175 if(.@count < .QNTgrupo){
176 mes "Todos os componentes do seu grupo precisam estar online.";
177 close;
178 }
179 if (getpartyleader(getcharid(1),1) != getcharid(3)){
180 mes "Espero que esteja preparado pois brevemente você será enviado para a arena.";
181 close2;
182 if(.GvGbuff) sc_end -1;
183 warp $GvG$,0,0; end;
184 }else{
185 mes "Espero que seu grupo esteja preparado pois brevemente vocês serão enviados para a arena.";
186 close2;
187 if(.GvGbuff) sc_end -1;
188 warpparty $GvG$, 0, 0, getcharid(1); end;
189 }
190 }
191}
192
193//===== InÃcio do Script de Vitórias ========================
194
195
196 - script Arena#Vitorias -1,{
197
198 OnPCKillEvent:
199
200 getmapxy .@map$,.@x,.@y,0;
201 if ( .@map$ == $PvP$[$PvP] ) {
202 if (getgroupid() > .GMrank) end;
203
204 set .@CID,getcharid(0); set .@nick$,""; set .@pPontos,0;
205 query_sql "SELECT `vitorias` FROM `pvp` WHERE `char_id`="+.@CID+"",.@pPontos;
206 query_sql "SELECT `nick` FROM `pvp` WHERE `char_id`="+.@CID+"",.@nick$;
207 if ( .@nick$ == "" ) { query_sql "INSERT INTO `pvp` (`char_id`,`nick`,`vitorias`) VALUES ("+.@CID+",'"+strcharinfo(0)+"',1)",.@confirm$; dispbottom "Você derrotou seu primeiro adversário!"; end; }
208 query_sql "UPDATE `pvp` SET `vitorias` = `vitorias` +1 WHERE `char_id`="+.@CID+"",.@confirm$;
209 set .@pPontos,.@pPontos+1;
210 announce "Você matou [ "+rid2name(killedrid)+" ] e chegou a "+.@pPontos+" adversários derrotados!",bc_self,0x87CEEB; end;
211 }
212
213 if ( .@map$ == $GvG$[$GvG] ) {
214 if (getgroupid() > .GMrank) end;
215
216 set .@GID,getcharid(2);set .@nome$,"";set .@gPontos,0;
217 query_sql "SELECT `vitorias` FROM `gvg` WHERE `guild_id`="+.@GID+"",.@gPontos;
218 query_sql "SELECT `nome` FROM `gvg` WHERE `guild_id`="+.@GID+"",.@nome$;
219 if ( .@nome$ == "" ) { query_sql "INSERT INTO `gvg` (`guild_id`,`nome`,`vitorias`) VALUES ("+.@GID+",'"+strcharinfo(2)+"',1)",.@confirm$; dispbottom "Primeiro frag do clã!"; end; }
220 query_sql "UPDATE `gvg` SET `vitorias` = `vitorias` + 1 WHERE `guild_id`="+.@GID+"",.@confirm$;
221 set .@gPontos,.@gPontos+1;
222 mapannounce .@map$,"O Clã [ "+.@nome$+" ] empilhou "+.@gPontos+" caveiras!",bc_self,0x87CEEB; end;
223 dispbottom "Pontuação da Guild: "+.@gPontos;
224 end;
225 }
226 }
227
228//===== InÃcio do Script de Derrotas ========================
229
230 - script Arena#Derrotas -1,{
231
232 OnPCDieEvent:
233
234 getmapxy .@map$,.@x,.@y,0;
235 if ( .@map$ == $PvP$[$PvP] ) {
236 if (getgroupid() > .GMrank) end;
237
238 set .@CID,getcharid(0);set .@nick$,"";set .@pPontos,0;
239 query_sql "SELECT `derrotas` FROM `pvp` WHERE `char_id`="+.@CID+"",.@pPontos;
240 query_sql "SELECT `nick` FROM `pvp` WHERE `char_id`="+.@CID+"",.@nick$;
241 if ( .@nick$ == "" ) { query_sql "INSERT INTO `pvp` (`char_id`,`nick`,`derrotas`) VALUES ("+.@CID+",'"+strcharinfo(0)+"',1)",.@confirm$; }
242 query_sql "UPDATE `pvp` SET `derrotas` = `derrotas` + 1 WHERE `char_id`="+.@CID+"",.@confirm$;
243 end;
244 }
245
246 if ( .@map$ == $GvG$[$GvG] ) {
247 if (getgroupid() > .GMrank) end;
248
249 set .@GID,getcharid(2);set .@nome$,"";set .@gPontos,0;
250 query_sql "SELECT `derrotas` FROM `gvg` WHERE `guild_id`="+.@GID+"",.@gPontos;
251 query_sql "SELECT `nome` FROM `gvg` WHERE `guild_id`="+.@GID+"",.@nome$;
252 if ( .@nome$ == "" ) { query_sql "INSERT INTO`gvg` (`guild_id`,`nome`,`derrotas`) VALUES ("+.@GID+",'"+strcharinfo(2)+"',1)",.@confirm$; }
253 query_sql "UPDATE `gvg` SET `derrotas` = `derrotas` + 1 WHERE `guild_id`="+.@GID+"",.@confirm$;
254 end;
255 }
256 }