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