/*.-----------------------------------------------------------------------------.
. ____ __ .
. /\ _`\ /\ \__ __ .
. \ \ \/\_\ _ __ __ __ \ \ ,_\/\_\ __ __ __ .
. \ \ \/_/_/\`'__\/'__`\ /'__`\ \ \ \/\/\ \/\ \/\ \ /'__`\ .
. \ \ \s\ \ \ \//\ __//\ \d\.\_\ \ \_\ \ \ \ \_/ |/\ __/ .
. \ \____/\ \_\\ \____\ \__/.\_\\ \__\\ \_\ \___/ \ \____\ .
. \/___/ \/_/ \/____/\/__/\/_/ \/__/ \/_/\/__/ \/____/ .
. .
. 2014~2017 © Creative Services and Developent .
. www.creativesd.com.br .
.-----------------------------------------------------------------------------.
. Script: .
. Arena PvP .
.-----------------------------------------------------------------------------.
. Autor: Romulo SM (sbk_) Versão: 1.0 .
. .
. Compatível: Hercules. .
*------------------------------------------------------------------------------*/
- script Arena PvP#main FAKE_NPC,{
OnInit:
setarray $@PvP_Maps$[0],
"pvp_y_1-1", 156, 191, // Coordenadas para Arena PvP não ranqueada.
"pvp_y_2-1", 156, 191, // Coordenadas para Arena PvP Ranqueada.
"pvp_y_3-1", 156, 191, // Coordenadas para Arena GvG não ranqueada.
"pvp_y_4-1", 156, 191, // Coordenadas para Arena GvG Ranqueada.
"pvp_y_5-1", 156, 191, // Coordenadas para Arena Grupo vs Grupo 2x2
"pvp_y_6-1", 156, 191, // Coordenadas para Arena Grupo vs Grupo 3x3
"pvp_y_7-1", 156, 191, // Coordenadas para Arena Grupo vs Grupo 4x4
"pvp_y_8-1", 156, 191 // Coordenadas para Arena Grupo vs Grupo 5x5
;
// Recompensa para o 1º colocado.
//
// <item_id1>, <quantidade1>, <item_id2>, <quantidade2>...;
setarray $pvp_reward_1[0], 501, 10, 502, 20, 503, 30;
// Recompensa para o 2º colocado.
//
// <item_id1>, <quantidade1>, <item_id2>, <quantidade2>...;
setarray $pvp_reward_2[0], 501, 5, 502, 10, 503, 15;
// Recompensa para o 3º colocado.
//
// <item_id1>, <quantidade1>, <item_id2>, <quantidade2>...;
setarray $pvp_reward_3[0], 501, 2, 502, 4, 503, 3;
bindatcmd "pvpexit", "Arena PvP#main::OnExit", 0, 0;
end;
OnExit:
if( strcharinfo(3) && $@PvP_Maps$[0] && strcharinfo(3) != $@PvP_Maps$[3] && strcharinfo(3) != $@PvP_Maps$[6] && strcharinfo(3) != $@PvP_Maps$[12] && strcharinfo(3) != $@PvP_Maps$[15] && strcharinfo(3) != $@PvP_Maps$[18] && strcharinfo(3) != $@PvP_Maps$[21] && strcharinfo(3) != $@PvP_Maps$[24] && strcharinfo(3) != $@PvP_Maps$[27] )
end;
warp "SavePoint", 0, 0;
end;
OnPCKillEvent:
set .@killer_id, getcharid(0);
set .@killer_name$, strcharinfo(0);
set .@map$, strcharinfo(3);
set .@killed_id, getcharid(0, rid2name(killedrid));
set .@killed_name$, rid2name(.@killed_id);
if( .@map$ == $@PvP_Maps$[0] || .@map$ == $@PvP_Maps$[6] )
end;
set PVP_D_Con, 0;
set PVP_V_Con, PVP_V_Con + 1;
if( PVP_V_Con == 2 )
set .@points, 1;
else if( PVP_V_Con == 5 )
set .@points, 10;
else if( PVP_V_Con == 10 )
set .@points, 25;
else if( PVP_V_Con == 20 ) {
set .@points, 50;
set PVP_V_Con, 0;
}
else
set .@points, 0;
if( .@points )
dispbottom "Você recebeu " + .@points + " por derrotar " + PVP_V_Con + " jogadores na Arena.";
set #PVP_Points, #PVP_Points + .@points;
if( .@map$ == $@PvP_Maps$[3] || .@map$ == $@PvP_Maps$[9] )
{
// Ranking individual do jogador.
callfunc "PVP_Update_Rank", getcharid(0), 0, 0, .@points, 1;
// Ranking individual do jogador na Sala PvP Ranqueada.
if( .@map$ == $@PvP_Maps$[3] )
callfunc "PVP_Update_Rank", getcharid(0), 0, 1, .@points, 1;
// Ranking individual do jogador e do Clã na Sala de GvG Ranqueada.
if( .@map$ == $@PvP_Maps$[9] )
{
callfunc "PVP_Update_Rank", getcharid(0), 0, 2, .@points, 1;
if( getcharid(3) ) {
callfunc "PVP_Update_Rank", getcharid(3), 1, 0, .@points, 1;
callfunc "PVP_Update_Rank", getcharid(3), 1, 2, .@points, 1;
}
}
}
end;
OnPCDieEvent:
set .@map$, strcharinfo(3);
if( .@map$ == $@PvP_Maps$[0] || .@map$ == $@PvP_Maps$[6] )
end;
recovery;
set PVP_D_Con, PVP_D_Con+1;
set PVP_V_Con, 0;
if( PVP_D_Con == 2 )
set .@points, 1;
else if( PVP_D_Con == 5 )
set .@points, 3;
else if( PVP_D_Con == 10 )
set .@points, 5;
else if( PVP_D_Con == 20 )
{
set .@points, 10;
set PVP_D_Con, 0;
}
else
set .@points, 0;
if( .@points )
dispbottom "Você perdeu " + .@points + " por ser derrotado " + PVP_D_Con + " consecutivamente na Arena.";
set #PVP_Points, #PVP_Points - .@points;
if( #PVP_Points < 0 )
set #PVP_Points, 0;
if( .@map$ == $@PvP_Maps$[3] || .@map$ == $@PvP_Maps$[9] )
{
// Ranking individual do jogador.
callfunc "PVP_Update_Rank", getcharid(0), 0, 0, .@points, 0;
// Ranking individual do jogador na Sala PvP Ranqueada.
if( .@map$ == $@PvP_Maps$[3] )
callfunc "PVP_Update_Rank", getcharid(0), 0, 1, .@points, 0;
// Ranking individual do jogador e do Clã na Sala de GvG Ranqueada.
if( .@map$ == $@PvP_Maps$[9] )
{
callfunc "PVP_Update_Rank", getcharid(0), 0, 2, .@points, 0;
if( getcharid(3) ) {
callfunc "PVP_Update_Rank", getcharid(3), 1, 0, .@points, 0;
callfunc "PVP_Update_Rank", getcharid(3), 1, 2, .@points, 0;
}
}
}
end;
OnMinute01:
if( gettime(2) == 1 && gettime(3) == 0 && gettime(5) == 1 ) {
setarray $pvp_winner[0], 0, 0, 0;
setarray $pvp_winner_flag[0], 0, 0, 0;
query_sql "SELECT `a`.`object_id` FROM `pvp_ranking` AS a WHERE `a`.`room`='0' AND `a`.`type`='0' AND (SELECT COUNT(*) FROM `char` WHERE `char_id`=`a`.`object_id`) ORDER BY `ration` DESC LIMIT 3", .@object_id;
for( set .@i, 0; .@i < getarraysize(.@object_id) && .@i <= 2; set .@i, .@i + 1 ) {
set $pvp_winner[.@i], .@object_id[.@i];
set .@name$, callfunc("PVP_GetCharInfo", "name", .@object_id[.@i]);
announce "[Arena PvP]: O Jogador " + .@name$ + " ficou em " + (.@i+1) + "º Lugar na Arena PvP. Parabéns!!!", bc_all, 0x00FF00;
}
// Empty PvP Ranking.
query_sql "DELETE FROM `pvp_ranking`";
}
end;
}
prontera,152,152,5 trader Loja PvP#pvp_ranking 4_F_KAFRA7,{
OnInit:
tradertype(NST_CUSTOM);
sellitem 501,30;
sellitem 502,40;
sellitem 503,50;
end;
OnCountFunds:
setcurrency(#PVP_Points);
end;
OnPayFunds:
if( #PVP_Points < @price )
end;
set #PVP_Points, #PVP_Points - @price;
purchaseok();
end;
}
prontera,150,150,5 script Arena PvP#custom 4_M_EIN_SOLDIER,{
mes "^800000[Arena PvP]^000000";
if( $pvp_winner[0] || $pvp_winner[1] || $pvp_winner[2] )
{
mes "Bem-vindo a ^0000FFArena PvP^000000, os ^006400Capeões^000000 desse mês são:";
if( $pvp_winner[0] )
{
set .@name$, callfunc("PVP_GetCharInfo", "name", $pvp_winner[0]);
mes "^FFD7001º Lugar:^000000 " + .@name$;
}
if( $pvp_winner[1] )
{
set .@name$, callfunc("PVP_GetCharInfo", "name", $pvp_winner[1]);
mes "^7080902º Lugar:^000000 " + .@name$;
}
if( $pvp_winner[2] )
{
set .@name$, callfunc("PVP_GetCharInfo", "name", $pvp_winner[2]);
mes "^FFA5003º Lugar:^000000 " + .@name$;
}
mes " ";
mes "^FF0000Pontos atuais:^000000 " + #PVP_Points;
mes "Em que posso ajudar?";
}
else {
mes "Bem-vindo a ^0000FFArena PvP^000000 em que posso ajudar?";
mes "^FF0000Pontos atuais:^000000 " + #PVP_Points;
}
next;
set .@build$, "- Arena PvP ^0000FF[" + getmapusers($@PvP_Maps$[0]) + " jogadores]^000000.:";
if( gettime(3) > 17 && gettime(3) < 20 )
set .@build$, .@build$ + "- Arena PvP ^FF0000Ranqueada^000000 ^0000FF[" + getmapusers($@PvP_Maps$[3]) + " jogadores]^000000.";
set .@build$, .@build$ + ":- Arena GvG ^0000FF[" + getmapusers($@PvP_Maps$[6]) + " jogadores]^000000.:";
if( gettime(3) > 17 && gettime(3) < 20 )
set .@build$, .@build$ + "- Arena GvG ^FF0000Ranqueada^000000 ^0000FF[" + getmapusers($@PvP_Maps$[9]) + " jogadores]^000000.";
set .@build$, .@build$ + ":- Grupo vs Grupo.:^0000FF- Ranking.^000000:";
if( $pvp_winner[0] || $pvp_winner[1] || $pvp_winner[2] )
set .@build$, .@build$ + "^8A2BE2- Pegar premiação.^000000";
set .@build$, .@build$ + ":^FF0000- Cancelar.^000000";
switch( select(.@build$) )
{
case 1:
// Arena PvP (Não ranqueada).
mes "^800000[Arena PvP]^000000";
mes "Deseja ir a Arena PvP ^FF0000não ranqueada^000000?";
next;
if( select("- Sim, por favor.", "^FF0000- Não obrigado.^000000") == 1 )
{
mes "^800000[Arena PvP]^000000";
mes "Muito bem irei te mandar para lá!";
close2;
warp $@PvP_Maps$[0], atoi($@PvP_Maps$[1]), atoi($@PvP_Maps$[2]);
end;
}
break;
case 2:
// Arena PvP (ranqueada).
mes "^800000[Arena PvP]^000000";
mes "Deseja ir a Arena PvP ^FF0000Ranqueada^000000?";
next;
if( select("- Sim, por favor.", "^FF0000- Não obrigado.^000000") == 1 )
{
mes "^800000[Arena PvP]^000000";
mes "Muito bem irei te mandar para lá!";
close2;
warp $@PvP_Maps$[3], atoi($@PvP_Maps$[4]), atoi($@PvP_Maps$[5]);
end;
}
break;
case 3:
// Arena GvG (Não ranqueada).
mes "^800000[Arena PvP]^000000";
if( getcharid(2) <= 0 )
{
mes "É necessário estar em um Clã para entrar em ^FF0000Arenas GvG^000000.";
close;
}
mes "Deseja ir a Arena GvG ^FF0000não ranqueada^000000?";
next;
if( select("- Sim, por favor.", "^FF0000- Não obrigado.^000000") == 1 )
{
mes "^800000[Arena PvP]^000000";
mes "Muito bem irei te mandar para lá!";
close2;
warp $@PvP_Maps$[6], atoi($@PvP_Maps$[7]), atoi($@PvP_Maps$[8]);
end;
}
break;
case 4:
// Arena GvG (Não ranqueada).
mes "^800000[Arena PvP]^000000";
if( getcharid(2) <= 0 )
{
mes "É necessário estar em um Clã para entrar em ^FF0000Arenas GvG^000000.";
close;
}
mes "Deseja ir a Arena GvG ^FF0000Ranqueada^000000?";
next;
if( select("- Sim, por favor.", "^FF0000- Não obrigado.^000000") == 1 )
{
mes "^800000[Arena PvP]^000000";
mes "Muito bem irei te mandar para lá!";
close2;
warp $@PvP_Maps$[9], atoi($@PvP_Maps$[10]), atoi($@PvP_Maps$[11]);
end;
}
break;
case 5:
// Arena Grupo vs Grupos
mes "^800000[Arena PvP]^000000";
mes "Escolha a Arena:";
next;
set .@choose, select("- Arena 2x2 ^0000FF[" + getmapusers($@PvP_Maps$[12]) + " jogadores]^000000.", "- Arena 3x3 ^0000FF[" + getmapusers($@PvP_Maps$[15]) + " jogadores]^000000.", "- Arena 4x4 ^0000FF[" + getmapusers($@PvP_Maps$[18]) + " jogadores]^000000.", "- Arena 5x5 ^0000FF[" + getmapusers($@PvP_Maps$[21]) + " jogadores]^000000.", "^FF0000- Cancelar.^000000");
if( .@choose >= 5 )
break;
mes "^800000[Arena PvP]^000000";
if( getcharid(1) <= 0 )
{
mes "É necessário estar em um Grupo para entrar em ^FF0000Arenas de Grupo vs Grupo^000000.";
close;
}
switch( .@choose )
{
default:
case 1:
set .@an, 2;
set .@idx, 12;
break;
case 2:
set .@an, 3;
set .@idx, 15;
break;
case 3:
set .@an, 4;
set .@idx, 18;
break;
case 4:
set .@an, 5;
set .@idx, 21;
break;
}
getpartymember(getcharid(1));
if( $@partymembercount < .@an )
{
mes "Você não pode entrar na Arena de ^FF0000Grupos " + .@an + "x" + .@an + "^000000 pois seu Grupo não tem jogadores suficientes.";
close;
}
if( $@partymembercount > .@an )
{
mes "Você não pode entrar na Arena de ^FF0000Grupos " + .@an + "x" + .@an + "^000000 pois seu Grupo ultrapassa a quantidade de jogadores.";
close;
}
mes "Deseja ir a Arena de ^FF0000Grupos " + .@an + "x" + .@an + "^000000?";
next;
if( select("- Sim, por favor.", "^FF0000- Não obrigado.^000000") == 1 )
{
mes "^800000[Arena PvP]^000000";
mes "Muito bem irei te mandar para lá!";
close2;
warp $@PvP_Maps$[.@idx], atoi($@PvP_Maps$[.@idx+1]), atoi($@PvP_Maps$[.@idx+2]);
end;
}
break;
case 6:
mes "^800000[Arena PvP]^000000";
mes "Selecione o ^0000FFRanking^000000 que deseja visualizar:";
next;
switch( select("- Ranking de Jogadores.", "- Ranking de Clãs.", "^FF0000- Cancelar.^000000") )
{
case 1:
//mes "^800000[Arena PvP]^000000";
//mes "Como deseja filtrar o ^0000FFRanking^000000?";
//next;
//set .@filter, select("- Vitórias.", "- Derrotas.", "- Vitórias por Derrotas.", "- Pontos Ganhos.", "- Pontos Perdidos.", "- Pontos Ganhos por Perdidos.", "^FF0000- Cancelar.^000000");
set .@filter, 3;
if( .@filter == 7 )
break;
mes "^800000[Arena PvP]^000000";
mes "Deseja visualizar o ^0000FFRanking de uma Sala especifica^000000?";
next;
set .@room, select("- Ranking Geral.", "- PvP Ranqueada.", "- GvG Ranqueada.", "^FF0000- Cancelar.^000000")-1;
if( .@room == 3 )
break;
setarray .@order$[1], "wins", "loss", "ration", "points_gained", "points_lost", "points_ration";
set .@row_init, 0;
set .@row_end, 10;
set .@prev, 0;
set .@loop_1, 1;
set .@pos,0;
while(.@loop_1)
{
deletearray .@object_id;
deletearray .@wins;
deletearray .@loss;
deletearray .@ration;
deletearray .@p_gained;
deletearray .@p_lost;
deletearray .@p_ration;
query_sql "SELECT `a`.`object_id`, `a`.`wins`, `a`.`loss`, `a`.`ration`, `a`.`points_gained`, `a`.`points_lost`, `a`.`points_ration` FROM `pvp_ranking` AS a WHERE `a`.`room`='" + .@room + "' AND `a`.`type`='0' AND (SELECT COUNT(*) FROM `char` WHERE `char_id`=`a`.`object_id`) ORDER BY " + .@order$[.@filter] + " DESC LIMIT " + .@row_init + ", " + .@row_end + "", .@object_id, .@wins, .@loss, .@ration, .@p_gained, .@p_lost, .@p_gained;
if( !getarraysize(.@object_id) )
{
mes "^800000[Arena PvP]^000000";
mes "Não há mais resultados no Ranking.";
close;
}
dispbottom "[ Ranking de Jogadores ]";
dispbottom "Posição <~> Jogador <~> Nome do Clã <~> Vitórias <~> Derrotas <~> Proporção";
for( set .@i,0; .@i < getarraysize(.@object_id); set .@i, .@i + 1 )
{
set .@name$, callfunc("PVP_GetCharInfo", "name", .@object_id[.@i]);
set .@guild_id, callfunc("PVP_GetCharInfo", "guild_id", .@object_id[.@i]);
set .@message$, (.@pos+1);
set .@message$, .@message$ + " <~> " + .@name$ + " <~> ";
if( .@guild_id )
{
set .@guild_name$, callfunc("PVP_GetGuildInfo", "name", .@guild_id);
set .@message$, .@message$ + .@guild_name$;
}
else {
set .@message$, .@message$ + "N/a";
}
set .@message$, .@message$ + " <~> " + .@wins[.@i] + " <~> ";
set .@message$, .@message$ + .@loss[.@i] + " <~> ";
set .@message$, .@message$ + .@ration[.@i];
//dispbottom "^0000FFProporção:^000000 " + .@ration[.@i];
//dispbottom "^0000FFPontos Ganhos:^000000 " + .@p_gained[.@i];
//dispbottom "^0000FFPontos Perdidos:^000000 " + .@p_lost[.@i];
//dispbottom "^0000FFProporção:^000000 " + .@p_ration[.@i];
//dispbottom " ";
dispbottom .@message$;
set .@pos, .@pos+1;
}
query_sql "SELECT COUNT(*) FROM `pvp_ranking` AS a WHERE `a`.`room`='" + .@room + "' AND `a`.`type`='0' AND (SELECT COUNT(*) FROM `char` WHERE `char_id`=`a`.`object_id`) ORDER BY " + .@order$[.@filter] + " DESC LIMIT " + (.@row_init+10) + ", " + (.@row_end+10) + "", .@check_next;
mes "^800000[Arena PvP]^000000";
if( .@check_next )
mes "Selecione ^FF0000Próximo^000000 para exibir mais resultados.";
else
mes "Não há mais resultados a ser exibidos.";
next;
switch( select((.@check_next>0?"^FF0000- Próximo.^000000":""), (.@prev?"^FF8C00- Anterior.^000000":""), "^FF0000- Cancelar.^000000") )
{
case 1:
set .@row_init, .@row_init + 10;
set .@row_end, .@row_init + 10;
set .@pos, .@row_init;
set .@prev, 1;
break;
case 2:
set .@row_init, .@row_init - 10;
set .@row_end, .@row_init + 10;
set .@pos, .@row_init;
if( .@row_init <= 0 )
set .@prev, 0;
break;
case 3:
set .@loop_1,0;
break;
}
}
break;
case 2:
//mes "^800000[Arena PvP]^000000";
//mes "Como deseja filtrar o ^0000FFRanking^000000?";
//next;
//set .@filter, select("- Vitórias.", "- Derrotas.", "- Vitórias por Derrotas.", "- Pontos Ganhos.", "- Pontos Perdidos.", "- Pontos Ganhos por Perdidos.", "^FF0000- Cancelar.^000000");
//if( .@filter == 7 )
// break;
set .@filter, 3;
mes "^800000[Arena PvP]^000000";
mes "Deseja visualizar o ^0000FFRanking de uma Sala especifica^000000?";
next;
set .@room, select("- Ranking Geral.", "", "- GvG Ranqueada.", "^FF0000- Cancelar.^000000")-1;
if( .@room == 3 )
break;
setarray .@order$[1], "wins", "loss", "ration", "points_gained", "points_lost", "points_ration";
set .@row_init, 0;
set .@row_end, 10;
set .@prev, 0;
set .@loop_1, 1;
set .@pos,0;
while(.@loop_1)
{
deletearray .@object_id;
deletearray .@wins;
deletearray .@loss;
deletearray .@ration;
deletearray .@p_gained;
deletearray .@p_lost;
deletearray .@p_ration;
query_sql "SELECT `a`.`object_id`, `a`.`wins`, `a`.`loss`, `a`.`ration`, `a`.`points_gained`, `a`.`points_lost`, `a`.`points_ration` FROM `pvp_ranking` AS a WHERE `a`.`room`='" + .@room + "' AND `a`.`type`='1' AND (SELECT COUNT(*) FROM `guild` WHERE `guild_id`=`a`.`object_id`) ORDER BY " + .@order$[.@filter] + " DESC LIMIT " + .@row_init + ", " + .@row_end + "", .@object_id, .@wins, .@loss, .@ration, .@p_gained, .@p_lost, .@p_gained;
if( !getarraysize(.@object_id) )
{
mes "^800000[Arena PvP]^000000";
mes "Não há mais resultados no Ranking.";
close;
}
dispbottom "[ Ranking de Clãs ]";
dispbottom "Posição <~> Clã <~> Vitórias <~> Derrotas <~> Proporção";
for( set .@i,0; .@i < getarraysize(.@object_id); set .@i, .@i + 1 )
{
set .@guild_name$, callfunc("PVP_GetGuildInfo", "name", .@object_id[.@i]);
set .@message$, (.@pos+1);
set .@message$, .@message$ + " <~> " + .@guild_name$ + " <~> ";
set .@message$, .@message$ + .@wins[.@i];
set .@message$, .@message$ + " <~> " + .@loss[.@i] + " <~> ";
set .@message$, .@message$ + .@ration[.@i];
//dispbottom "^0000FFPontos Ganhos:^000000 " + .@p_gained[.@i];
//dispbottom "^0000FFPontos Perdidos:^000000 " + .@p_lost[.@i];
//dispbottom "^0000FFProporção:^000000 " + .@p_ration[.@i];
//mes " ";
set .@pos, .@pos+1;
dispbottom .@message$;
}
query_sql "SELECT COUNT(*) FROM `pvp_ranking` AS a WHERE `a`.`room`='" + .@room + "' AND `a`.`type`='1' AND (SELECT COUNT(*) FROM `char` WHERE `char_id`=`a`.`object_id`) ORDER BY " + .@order$[.@filter] + " DESC LIMIT " + (.@row_init+10) + ", " + (.@row_end+10) + "", .@check_next;
mes "^800000[Arena PvP]^000000";
if( .@check_next )
mes "Selecione ^FF0000Próximo^000000 para exibir mais resultados.";
else
mes "Não há mais resultados a ser exibidos.";
next;
switch( select((.@check_next>0?"^FF0000- Próximo.^000000":""), (.@prev?"^FF8C00- Anterior.^000000":""), "^FF0000- Cancelar.^000000") )
{
case 1:
set .@row_init, .@row_init + 10;
set .@row_end, .@row_init + 10;
set .@pos, .@row_init;
set .@prev, 1;
break;
case 2:
set .@row_init, .@row_init - 10;
set .@row_end, .@row_init + 10;
set .@pos, .@row_init;
if( .@row_init <= 0 )
set .@prev, 0;
break;
case 3:
set .@loop_1,0;
break;
}
}
break;
default:
break;
}
break;
case 7:
mes "^800000[Arena PvP]^000000";
if( getcharid(0) != $pvp_winner[0] && getcharid(0) != $pvp_winner[1] && getcharid(0) != $pvp_winner[2] )
mes "Você não venceu o ^FF0000Top 3^000000 na Arena PvP portanto não pode pegar um premio.";
else if( getcharid(0) == $pvp_winner[0] && $pvp_winner_flag[0] || getcharid(0) == $pvp_winner[1] && $pvp_winner_flag[1] || getcharid(0) == $pvp_winner[2] && $pvp_winner_flag[2] )
mes "Você já pegou sua recompensa!";
else {
if( getcharid(0) == $pvp_winner[0] ) {
set .@idx, 0;
copyarray .@item_reward, $pvp_reward_1, getarraysize($pvp_reward_1);
}
else if( getcharid(0) == $pvp_winner[1] ) {
set .@idx, 1;
copyarray .@item_reward, $pvp_reward_2, getarraysize($pvp_reward_2);
}
else if( getcharid(0) == $pvp_winner[2] ) {
set .@idx, 2;
copyarray .@item_reward, $pvp_reward_3, getarraysize($pvp_reward_3);
}
else {
mes "Você não está autorizado a pegar recompensas.";
close;
}
if( !getarraysize(.@item_reward) )
{
mes "Não há recompensas neste momento, retorne mais tarde.";
close;
}
for( set .@i, 0; .@i < getarraysize(.@item_reward); set .@i, .@i + 2 )
{
if( !checkweight(.@item_reward[.@i],.@item_reward[(.@i+1)]) )
{
mes "Você não pode carregar ^FF0000" + .@item_reward[(.@i+1)] + "x " + getitemname(.@item_reward[.@i]) + "^000000.";
mes "Por favor, coloque alguns itens no seu ^0000FFArmazém Pessoal^000000 e fale comigo novamente para pegar sua recompensa.";
close;
}
}
set $pvp_winner_flag[.@idx], 1;
mes "Você recebeu como recompensa de ^0000FF" + (.@idx+1) + "º lugar^000000:";
for( set .@i, 0; .@i < getarraysize(.@item_reward); set .@i, .@i + 2 ) {
getitem .@item_reward[.@i], .@item_reward[(.@i+1)];
mes "^FF0000- " + .@item_reward[(.@i+1)] + "x " + getitemname(.@item_reward[.@i]) + "^000000";
}
close;
}
close;
default:
break;
}
mes "^800000[Arena PvP]^000000";
mes "Muito bem, volte quando deseja entrar em uma ^0000FFArena PvP ou visualizar o Ranking^000000.";
close;
}
// * callfunc "PVP_Update_Rank", <object_id>, <type>, <room>, <points>, <flag>;
//
function script PVP_Update_Rank {
deletearray .@check_update;
query_sql "SELECT `auto_id` FROM `pvp_ranking` WHERE `object_id`='" + getarg(0) + "' AND `type`='" + getarg(1) + "' AND `room`='" + getarg(2) + "'", .@check_update;
if( !getarraysize(.@check_update) )
query_sql "INSERT INTO `pvp_ranking` (object_id, type, room) VALUES (" + getarg(0) + ", " + getarg(1) + ", " + getarg(2) + ")";
if( getarg(4) )
query_sql "UPDATE `pvp_ranking` SET `wins`=`wins`+'1', `ration`=`ration`+'1', `points_gained`=`points_gained`+'" + getarg(3) + "', `points_ration`=`points_ration`+'" + getarg(3) + "' WHERE `object_id`='" + getarg(0) + "' AND `type`='" + getarg(1) + "' AND `room`='" + getarg(2) + "'";
else
query_sql "UPDATE `pvp_ranking` SET `loss`=`loss`+'1', `ration`=`ration`-'1', `points_lost`=`points_lost`-'" + getarg(3) + "', `points_ration`=`points_ration`-'" + getarg(3) + "' WHERE `object_id`='" + getarg(0) + "' AND `type`='" + getarg(1) + "' AND `room`='" + getarg(2) + "'";
return 1;
}
function script PVP_GetCharInfo {
deletearray .@result$;
query_sql "SELECT `" + getarg(0) + "` FROM `char` WHERE `char_id`='" + getarg(1) + "'", .@result$;
if( !getarraysize(.@result$) )
return 0;
return .@result$;
}
function script PVP_GetGuildInfo {
deletearray .@result$;
query_sql "SELECT `" + getarg(0) + "` FROM `guild` WHERE `guild_id`='" + getarg(1) + "'", .@result$;
if( !getarraysize(.@result$) )
return 0;
return .@result$;
}