/*.-----------------------------------------------------------------------------. . ____ __ . . /\ _`\ /\ \__ __ . . \ \ \/\_\ _ __ __ __ \ \ ,_\/\_\ __ __ __ . . \ \ \/_/_/\`'__\/'__`\ /'__`\ \ \ \/\/\ \/\ \/\ \ /'__`\ . . \ \ \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. // // , , , ...; setarray $pvp_reward_1[0], 501, 10, 502, 20, 503, 30; // Recompensa para o 2º colocado. // // , , , ...; setarray $pvp_reward_2[0], 501, 5, 502, 10, 503, 15; // Recompensa para o 3º colocado. // // , , , ...; 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", , , , , ; // 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$; }