Metin2 Posted August 16, 2017 Share Posted August 16, 2017 (edited) Ola pessoal queria uma ajudinha eu instalei a Quest pvp_manager foi feito os teste in game ,mais estou com problema para receber o item e gold apostado no jogador quando ganho a batalha eu não ganho oque me fala no chat! Hidden Content Give reaction to this post to see the hidden content. Quest: Spoiler quest pvp_manager begin state start begin when 20011.chat."O Torneio PVP Drk" with pc.get_map_index() != 90 begin say_title("Torneio Drk PvP") say("") if game.get_event_flag("budokan_open") == 2 then if pc.count_item(72725) > 0 then say("Tem Bensão de Helong de sol em seu inventário, Removê-los") elseif pc.count_item(72724) > 0 then say("Tem Bensão de Helong de sol em seu inventário, Removê-los") elseif pc.count_item(72723) > 0 then say("Tem Bensão de Helong de sol em seu inventário, Removê-los") else say("A arena de duelo esta aberta") say("") say("Junte-se a uma das categorias (Level 65-80,") say("80-94 e 95+) para lutar comtra outro") say("jogador implacável.") say("A competição para a riqueza e glória!") say("") local s = select("Leva-me lá agora!"," Não obrigado") if s == 1 then if party.is_party() then say("Você está em um grupo, você não pode entrar.") return end pc.warp(844800,0) end end else say("O duelo Arena vai abrir em breve!") say("") say("Junte-se a uma das categorias (Level 65-80,") say("80-94 e 95+) para lutar contra outro") say("jogador implacável.") say("A competição por riqueza e glória!") say("") say("Quando a entrada está aberta,") say(" Você pode se inscrever através") say("do NPC dentro de mapa que o levarei!.") say("") end end when login with pc.get_map_index() == 90 and (pvp_attenders == nil or pvp_attenders[pvp_manager.get_my_attender_id()] == nil or (pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 1 and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 2)) begin if pvp_attenders == nil then pvp_manager.guard_check_position() timer("pvp_guard_1", 20) return end if pvp_attenders[pvp_manager.get_my_attender_id()] == nil then pvp_manager.guard_check_position() timer("pvp_guard_1", 20) return end if pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 1 and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 2 then pvp_manager.guard_check_position() timer("pvp_guard_1", 20) end end when pvp_guard_1.timer begin if pc.get_map_index() != 90 then return end pvp_manager.guard_check_position() timer("pvp_guard_2", 20) end when pvp_guard_2.timer begin if pc.get_map_index() != 90 then return end pvp_manager.guard_check_position() timer("pvp_guard_1", 20) end function guard_check_position() if pc.get_local_x() >= 84 and pc.get_local_y() >= 84 and pc.get_local_x() <= 116 and pc.get_local_y() <= 116 then --arena 1 pvp_manager.guard_reset() end if pc.get_local_x() >= 84 and pc.get_local_y() >= 136 and pc.get_local_x() <= 116 and pc.get_local_y() <= 168 then --arena 2 pvp_manager.guard_reset() end if pc.get_local_x() >= 136 and pc.get_local_y() >= 84 and pc.get_local_x() <= 168 and pc.get_local_y() <= 116 then --arena 3 pvp_manager.guard_reset() end if pc.get_local_x() >= 136 and pc.get_local_y() >= 136 and pc.get_local_x() <= 168 and pc.get_local_y() <= 168 then --arena 4 pvp_manager.guard_reset() end end function guard_reset() notice_in_map("AUTOPVP-GUARDIA: "..pc.getname().." foi expulsado da arena.") pc.warp_local(pc.get_map_index(), 126*100, 24*100) end when 20088.chat."GM: fechar entradas a PvP" with pc.is_gm() and pc.get_map_index() == 90 begin say_title("Budokan:") say("A entrada para o mapa de duelo foi fechado") say("") game.set_event_flag("budokan_open", 0) end when 20088.chat."GM: fechar mapa PvP" with pc.is_gm() and pc.get_map_index() == 90 begin say_title("Budokan:") say("A entrada para mapear duelos foi fechado") say("Todos os jogadores será teletransportado para a cidade.") say("") warp_all_to_village( pc.get_map_index() , 1 ) end when 20088.chat."Voltar para a cidade" with pc.get_map_index() == 90 begin say_title("Mestre da Batalha") say("") say("Você quer sair da arena e volta") say("voutar a city ?") say("") local s = select("Sim", "Não") if s == 1 then warp_to_village() end end when 20088.chat."GM: Abortar torneo PvP" with pc.get_map_index() == 90 and pc.is_gm() and game.get_event_flag("pvp") != 0 begin say_title("Abortar Torneo PvP") say("Desesa realmente cancelar Torneio PVP?") say("") local s = select("Sim", "Não") if s == 1 then game.set_event_flag("pvp", 0) game.set_event_flag("budokan_open", 0) pvp_attenders = nil notice_all("O torneio PVP foi cancelado!") say_title("Torneo PvP cancelado") say("O torneio PVP foi cancelado.") say("") end end when 20088.chat."GM: Iniciar torneo PvP" with pc.get_map_index() == 90 and pc.is_gm() and game.get_event_flag("pvp") == 0 begin say_title("Iniciar Torneo PvP") say("Por favor tenha o Level minimo para o torneio") say("PvP.") say("") say_reward("Level minimo (minimo 15):") local str_min_level = input() say_title("Iniciar Torneo PvP") local min_level = tonumber(str_min_level) if min_level == nil then say("Não introduziu um numero.") say("") return end if tonumber(str_min_level) < 15 then min_level = 15 end say("O Level minimimo é "..tostring(min_level)..".") say("Por favor insira Level maximo:") local str_max_level = input() say_title("Iniciar Torneo PvP") local max_level = tonumber(str_max_level) if max_level == nil then say("Não introduziu um numero.") say("") return end if tonumber(str_max_level) < min_level then say("O Level maximo dever ser maio que") say("o Level minimo.") say("") return end game.set_event_flag("pvp_minlevel", min_level) game.set_event_flag("pvp_maxlevel", max_level) say("O Level minimo é "..tostring(min_level)..".") say("O Level máximo é "..tostring(max_level)..".") say("") local s = select("Iniciar agora", "Cancelar") if s == 2 then return end say_title("Iniciar Torneo PvP") say("O torneio PVP foi iniciado.") say("Todo mundo que quer participar") say("pode se inscrever aqui.") say("Lembre-se que deve cobrir o nível adequado..") say("") say_reward("Level limite atual: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel")) game.set_event_flag("pvp", 1) game.set_event_flag("budokan_open", 2) attender_count = 0 game.set_event_flag("pvp_tournament", get_global_time()) pvp_attenders = nil pvp_attenders = { } arena = { -- arena 1 { { 113, 100 }, { 88, 100 }, 0, "SLEEPING", 0, }, -- arena 2 { { 113, 152 }, { 88, 152 }, 0, "SLEEPING", 0, }, -- arena 3 { { 140, 152 }, { 164, 152 }, 0, "SLEEPING", 0, }, -- arena 4 { { 164, 100 }, { 140, 100 }, 0, "SLEEPING", 0, }, } notice_all("As inscrições para o torneio foi aberto!") notice_all("Level límite atual: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel")) end when 20088.chat."Inscreva-se para o torneio PvP" with pc.get_map_index() == 90 and game.get_event_flag("pvp") == 1 begin say_title(mob_name(20088)..":") say("") if game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") then say("Já está registado para o torneio.") say("") return end if pc.get_level() < 15 then say("O seu Level é muito baixo.") say("") return end if pc.get_level() < game.get_event_flag("pvp_minlevel") or pc.get_level() > game.get_event_flag("pvp_maxlevel") then say("Seu Level tem que estar entre"..game.get_event_flag("pvp_minlevel").." e "..game.get_event_flag("pvp_maxlevel")) say("") return end ----"123456789012345678901234567890123456789012345678901234567890"| say("Bem Vindo ao torneio PvP onde você luta contra jogadores") say("ao Level similar ao seu.") say("") say("Derrotar todos os adversários para ganhar um prêmio e digite o") say("nome da fama") say("") say("Você deseja inserir o desafio?") say("") local s = select("Sim, vou participar.", "Não, Eu não estou pronto.") say_title(mob_name(20088)..":") say("") if s == 1 then say("Vai ser chamado quando chegou sua vez, mas você precisa estar aqui;") say("caso contrário, será desclassificado.") say("") say("Boa Sorte") say("") pvp_attenders[attender_count+1] = {name = pc.getname(), level = pc.get_level(), partner = nil, winner = true, fight_mode = 0, arena = 0} pc.setqf("attender_id", attender_count+1) pc.setqf("pvp_tournament", game.get_event_flag("pvp_tournament")) attender_count = attender_count + 1 elseif s == 2 then say("Parece muito fraco..") say("Nós também foram mortos aqui.") say("") end end when 20088.chat."Registro do torneio PvP" with pc.get_map_index() == 90 and pc.is_gm() and game.get_event_flag("pvp") == 1 begin say_title("Torneo PvP") say("atualmente "..tostring(attender_count).." players registrado.") say("O registro será fechado e") say("batalhas começar?") say("") local s = select("Fechar registro", "Continuar com os registros") if s == 1 then say_title("Fechar registros:") say("Os registos foi fechadas.") say("Os jogadores podem apostar agora.") say("") game.set_event_flag("pvp", 2) betting_list = {} betting_state = {} end end when 20088.chat."Apostas para o torneio PvP." with pc.get_map_index() == 90 and pc.is_gm() and game.get_event_flag("pvp") == 2 begin say_title("Torneo PVP") say("Apostas terminou para o torneio PvP") say("iniciar?") say("") local s = select("Iniciar torneo agora", "Continuar com as apostas") if s == 1 then say_title("Fim das apostas:") say("Se acabou o tempo de apostas.") say("As batalha começara agora.") say("") game.set_event_flag("pvp", 3) pvp_manager.make_duel_list() duel_list_index = 0 playerless_mode = false notice_all("A inscrição para torneo PvP ja foi enceradas") notice_all("A batalha começara agora.") pvp_round_num = 1 pvp_manager.refresh_arenas() end end when 20088.chat."Façam suas apostas" with pc.get_map_index() == 90 and game.get_event_flag("pvp") == 2 and betting_state != nil and betting_state[pc.get_player_id()] == nil begin say_title("Realizar apostas:") say("Em que jogador quer apostar ?") say("") local player = input() say_title("Realizar apostas:") say("") if pvp_manager.get_attender_id_by_name(player) == 0 then say("O jogador não esta registrado.") say("") return end say("Quamto de GOLD quer apostar ?") say("") local bet_amount = tonumber(input()) if bet_amount < 1 then say_title("Error:") say("Quamtidade Certa.") say("") return end say_title("Confirmar:") say("Quer apostar "..bet_amount.." GOLD no") say(jugador.."?") say("") if select("Sim", "Não") == 2 then return end betting_state[pc.get_player_id()] = 1 table.insert(betting_list, {pc.get_name(), bet_amount, player}) say_title("Realizar apostas:") say("Tua aposta foi realizada.") say("Obrigado Boa sorte !") say("") end when 20088.chat."Quer participar ?" with pc.get_map_index() == 90 and game.get_event_flag("pvp") == 2 begin setskin(NOWINDOW) chat("As seguintes pessoas participam do torneo PvP:") for i = 1, attender_count, 4 do local chatline = "" for j = i, 4, 1 do if pvp_attenders[j] != nil then chatline = chatline..pvp_attenders[j].name.." " end end syschat(chatline) end syschat("Participantes "..attender_count.." totales") end when 20088.chat."Quer lutar comigo na proxima batalha ?" with pc.get_map_index() == 90 and game.get_event_flag("pvp") == 3 and game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") begin say_title(mob_name(20088)..":") say("") if pvp_manager.get_duel_partner() == nil then say("Não há adversário disponível agora.") say("") say("Se não encontrar um adversário adequado para você, ") say("Ela se move automaticamente para a próxima batalha.") say("") return end say("De acordo com o plano atual está lutando:") say("") say_reward(""..pvp_manager.get_duel_partner().."") say("") end function make_duel_list() duel_list = { } local i = 0 for ai = 1, attender_count, 1 do if pvp_attenders[ai] != nil and pvp_attenders[ai].partner == nil and pvp_attenders[ai].winner == true then local partner_id = pvp_manager.findpartner(tostring(pvp_attenders[ai].name), pvp_attenders[ai].level) if partner_id != nil then pvp_attenders[ai].partner = tostring(pvp_attenders[partner_id].name) pvp_attenders[partner_id].partner = tostring(pvp_attenders[ai].name) duel_list = {fighter_id1 = ai, fighter_id2 = partner_id} i = i + 1 end end end for ai = 1, attender_count, 1 do if pvp_attenders[ai] != nil and pvp_attenders[ai].partner == nil and pvp_attenders[ai].winner == true then local partner_id = pvp_manager.findpartner_for_partnerless(tostring(pvp_attenders[ai].name), pvp_attenders[ai].level) if partner_id != nil then pvp_attenders[ai].partner = tostring(pvp_attenders[partner_id].name) pvp_attenders[partner_id].partner = tostring(pvp_attenders[ai].name) duel_list = {fighter_id1 = ai, fighter_id2 = partner_id} i = i + 1 end end end end function findpartner(name, level) local closest_level = nil local partner_id = nil for ai = 1, attender_count, 1 do if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true and tonumber(pvp_attenders[ai].level) <= level + 30 and tonumber(pvp_attenders[ai].level) >= level - 30 and tostring(pvp_attenders[ai].name) != name and pvp_attenders[ai].partner == nil and pvp_manager.is_player_in_map(tostring(pvp_attenders[ai].name)) == true then if closest_level == nil then closest_level = pvp_attenders[ai].level partner_id = ai elseif tonumber(pvp_attenders[ai].level) == tonumber(level) then closest_level = pvp_attenders[ai].level partner_id = ai elseif tonumber(level) < tonumber(closest_level) and tonumber(pvp_attenders[ai].level) < tonumber(closest_level) then closest_level = pvp_attenders[ai].level partner_id = ai elseif tonumber(level) > tonumber(closest_level) and tonumber(pvp_attenders[ai].level) > tonumber(closest_level) then closest_level = pvp_attenders[ai].level partner_id = ai end end end return tonumber(partner_id) end function findpartner_for_partnerless(name, level) local closest_level = nil local partner_id = nil for ai = 1, attender_count, 1 do if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true and tostring(pvp_attenders[ai].name) != name and pvp_attenders[ai].partner == nil and pvp_manager.is_player_in_map(tostring(pvp_attenders[ai].name)) == true then if closest_level == nil then closest_level = pvp_attenders[ai].level partner_id = ai elseif pvp_attenders[ai].level == level then closest_level = pvp_attenders[ai].level partner_id = ai elseif tonumber(level) < tonumber(closest_level) and pvp_attenders[ai].level < closest_level then closest_level = pvp_attenders[ai].level partner_id = ai elseif tonumber(level) > tonumber(closest_level) and pvp_attenders[ai].level > closest_level then closest_level = pvp_attenders[ai].level partner_id = ai end end end return partner_id end function is_player_in_map(name) if pc.getname() == name then return true end local myname = pc.getname() local target = find_pc_by_name(name) local t = pc.select(target) if pc.getname() == myname then pc.select(t) return false end pc.select(t) return true end when 20088.chat."GM: Atualizar a arena de batalha" with pc.is_gm() and game.get_event_flag("pvp") == 3 begin for aArena = 1, 4, 1 do arena[aArena][3] = 0 arena[aArena][4] = "SLEEPING" end pvp_manager.refresh_arenas() end -- not working --[[ when 20088.chat."GM: Terminar Batalla" with pc.is_gm() and game.get_event_flag("pvp") == 2 begin say_title("Terminar Batalla:") say("¿En qué estadio se debía acabar con la lucha?") local s = select("Arena 1", "Arena 2", "Arena 3", "Arena 4", "Cerrar") if s == 5 then return end local fighter1 = nil local fighter2 = nil for ai = 1, attender_count, 1 do if pvp_attenders[ai].arena == s and pvp_attenders[ai].fight_mode != 0 then if fighter1 == nil then fighter1 = ai else fighter2 = ai end end end if fighter1 == nil then say_title("Terminar Batalla:") say("No hay batalla actual en este ámbito.") say("") return end say_title("Terminar Batalla:") say("¿Quién debe ser considerado ganador cuando lucha en arena "..s.." ") say("debe ser terminado?") local w = select(tostring(pvp_attenders[fighter1].name), tostring(pvp_attenders[fighter1].name), "Cancel") if w == 3 then return end if w == 1 then pvp_attenders[fighter2].winner = false notice_in_map(tostring(pvp_attenders[fighter1].name).." has won the battle against "..tostring(pvp_attenders[fighter2].name).."!", pc.get_map_index()) pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 234)) pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 24)) else pvp_attenders[fighter1].winner = false notice_in_map(tostring(pvp_attenders[fighter2].name).." has won the battle against "..tostring(pvp_attenders[fighter1].name).."!", pc.get_map_index()) pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 24)) pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 234)) end pvp_attenders[fighter1].fight_mode = 0 pvp_attenders[fighter2].fight_mode = 0 arena[3] = 0 pvp_manager.refresh_arenas() say_title("End fight:") say("The battle has been ended.") end --]] when 20088.chat."GM: Recompensa ao Torneio PvP" with pc.is_gm() begin say_title("Recompensa:") say("Recompensa atual: "..game.get_event_flag("pvp_price_count").."x "..item_name(game.get_event_flag("pvp_price_vnum")).." (vnum: "..game.get_event_flag("pvp_price_vnum")..")") say("") local s = select("Alterar recompensa", "Fechar") if s == 2 then return end say_title("Alterar recompensa:") say("Por favor introduza o vnum da nova recompensa") say("") local vnum = input() say_title("Alterar recompensa:") say("Por favor introduza a quantidade da nova recompensa") say("") local count = input() game.set_event_flag("pvp_price_count", count) game.set_event_flag("pvp_price_vnum", vnum) say_title("Alterar recompensa:") say("A recompensa foi alterado.") say("nova recompensa: "..count.."x "..item_name(vnum).." (vnum: "..vnum..")") say("") end when 20088.chat."GM: Anel de Gold Torneo-PvP" with pc.is_gm() begin say_title("Recompensa anel de gold:") say("Quamtidade atual: "..game.get_event_flag("pvp_round_gold")) say("") local s = select("Alterar", "Fechar") if s == 2 then return end say_title("Quamtidade:") say("por favor incira a quamtidade") say("para o ganhador da rodada:") say("") local gold = input() game.set_event_flag("pvp_round_gold", gold) say_title("A quantidade de mudança:") say("A quantidade de base foi alterado.") say("nova base: "..gold) say("") end function refresh_arenas() for aArena = 1, 4, 1 do if duel_list[duel_list_index] == nil then if playerless_mode == true then pvp_manager.init_next_round() else pvp_manager.fight_playerless() end return end if arena[aArena][3] == 0 then arena[aArena][3] = 1 pvp_manager.fight_init(duel_list[duel_list_index].fighter_id1, duel_list[duel_list_index].fighter_id2, aArena) end end end function fight_init(pid1, pid2, arena_id) duel_list_index = duel_list_index + 1 if pvp_manager.is_player_in_map(tostring(pvp_attenders[pid1].name)) == false then notice_in_map(tostring(pvp_attenders[pid1].name).." Não está online e foi desqualificado.", pc.get_map_index()) pvp_attenders[pid1].winner = false pvp_attenders[pid2].partner = nil arena[arena_id][3] = 0 pvp_manager.refresh_arenas() return end if pvp_manager.is_player_in_map(tostring(pvp_attenders[pid2].name)) == false then notice_in_map(tostring(pvp_attenders[pid2].name).." Não está online e foi desqualificado.", pc.get_map_index()) pvp_attenders[pid2].winner = false pvp_attenders[pid1].partner = nil arena[arena_id][3] = 0 pvp_manager.refresh_arenas() return end notice_in_map(tostring(pvp_attenders[pid1].name).." Vs "..tostring(pvp_attenders[pid2].name).." Por favor, entrar na arena!", pc.get_map_index()) pvp_attenders[pid1].fight_mode = 1 pvp_attenders[pid2].fight_mode = 1 pvp_attenders[pid1].arena = arena_id pvp_attenders[pid2].arena = arena_id pvp_manager.local_pc_warp(tostring(pvp_attenders[pid1].name), arena[arena_id][1][1], arena[arena_id][1][2]) pvp_manager.local_pc_warp(tostring(pvp_attenders[pid2].name), arena[arena_id][2][1], arena[arena_id][2][2]) end when login with pc.get_map_index() == 90 and game.get_event_flag("pvp") == 3 and pvp_manager.get_fight_mode() == 1 begin affect.add(apply.MOV_SPEED, -10000, 2) affect.add_collect(apply.HP_REGEN, 5000, 30) affect.add_collect(apply.SP_REGEN, 5000, 30) pvp_manager.set_fight_mode(2) if arena[pvp_manager.get_arena()][3] == 2 then arena[pvp_manager.get_arena()][5] = 60 loop_timer("fight_start_countdown", 1) else timer("partner_timeout", 30) end arena[pvp_manager.get_arena()][3] = 2 end when partner_timeout.timer begin if pvp_manager.is_player_in_map(pvp_manager.get_duel_partner()) == true or game.get_event_flag("pvp") != 2 or pvp_manager.get_fight_mode() != 2 then return end pvp_manager.set_fight_mode(3) if arena[pvp_manager.get_arena()][3] == 3 then return end arena[pvp_manager.get_arena()][3] = 3 notice_in_map(pc.getname().." Ele ganhou a luta contra o "..pvp_manager.get_duel_partner().." por padrão!", pc.get_map_index()) pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3 pvp_attenders[pvp_manager.get_my_attender_id()].winner = true pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = false pc.warp_local(pc.get_map_index(), 12600, 23400) end when fight_start_countdown.timer begin if arena[pvp_manager.get_arena()][5] == -1 then return end local partner_vid = find_pc_by_name(pvp_manager.get_duel_partner()) local my_vid = pc.get_vid() if arena[pvp_manager.get_arena()][5] == 0 then arena[pvp_manager.get_arena()][5] = -1 pc.select(partner_vid) command("pvp "..my_vid) pc.select(my_vid) command("pvp "..partner_vid) notice_in_map("A luta entre "..pvp_manager.get_duel_partner().." e "..pc.get_name().." começa!", pc.get_map_index()) timer("fight_start_countdown_shutdown", 1) else pc.select(partner_vid) if math.mod(arena[pvp_manager.get_arena()][5], 5) == 0 then syschat("A batalha começa em "..tostring(arena[pvp_manager.get_arena()][5]).." seconds.") end affect.add(apply.MOV_SPEED, -10000, 2) pc.select(my_vid) if math.mod(arena[pvp_manager.get_arena()][5], 5) == 0 then syschat("A luta começa em"..tostring(arena[pvp_manager.get_arena()][5]).." seconds.") end affect.add(apply.MOV_SPEED, -10000, 2) arena[pvp_manager.get_arena()][5] = arena[pvp_manager.get_arena()][5] - 1 end end when fight_start_countdown_shutdown.timer begin cleartimer("fight_start_countdown") end when logout with game.get_event_flag("pvp") == 3 and pc.get_map_index() == 90 and pvp_manager.get_fight_mode() == 2 begin pvp_manager.set_fight_mode(3) arena[pvp_manager.get_arena()][3] = 3 notice_in_map(pvp_manager.get_duel_partner().."Ele ganhou a luta contra o "..pc.getname().."!", pc.get_map_index()) pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3 pvp_attenders[pvp_manager.get_my_attender_id()].winner = false pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = true local target = find_pc_by_name(pvp_manager.get_duel_partner()) local t = pc.select(target) pc.change_gold(game.get_event_flag("pvp_round_gold")*pvp_round_num) pc.select(t) pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), 126, 24) end when kill with game.get_event_flag("pvp") == 3 and pc.get_map_index() == 90 and npc.is_pc() and pvp_manager.get_fight_mode() == 2 begin pvp_manager.set_fight_mode(3) if arena[pvp_manager.get_arena()][3] == 3 then return end arena[pvp_manager.get_arena()][3] = 3 notice_in_map(pc.getname().." Ele ganhou a luta contra o "..pvp_manager.get_duel_partner().."!", pc.get_map_index()) pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3 pvp_attenders[pvp_manager.get_my_attender_id()].winner = true pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = false pc.change_gold(game.get_event_flag("pvp_round_gold")*pvp_round_num) timer("fight_end", 5) end when fight_end.timer begin pc.warp_local(pc.get_map_index(), 12600, 23400) pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), 126, 24) end when letter with pc.get_map_index() == 90 and game.get_event_flag("pvp") == 3 and pvp_manager.get_fight_mode() == 3 begin pvp_manager.set_fight_mode(0) if pvp_attenders[pvp_manager.get_my_attender_id()].winner == true then arena[pvp_manager.get_arena()][3] = 0 pvp_manager.refresh_arenas() end end function fight_playerless() for aArena = 1, 4, 1 do if arena[aArena][3] != 0 then return end end playerless_mode = true pvp_manager.make_duel_list() pvp_manager.refresh_arenas() end function init_next_round() for aArena = 1, 4, 1 do if arena[aArena][3] != 0 then return end end playerless_mode = false local winner_count = 0 local winner_id = 0 for ai = 1, attender_count, 1 do pvp_attenders[ai].partner = nil pvp_attenders[ai].fight_mode = 0 if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true then winner_count = winner_count + 1 winner_id = ai end end if winner_count == 1 then notice_all(pvp_attenders[winner_id].name.." Ele ganhou o torneio PvP!") notice_all(pvp_attenders[winner_id].name.." recebera "..game.get_event_flag("pvp_price_count").."x "..item_name(game.get_event_flag("pvp_price_vnum")).." como recompensa!") pvp_manager.distribute_bets(pvp_attenders[winner_id].name) local target = find_pc_by_name(pvp_attenders[winner_id].name) local t = pc.select(target) pc.give_item2(game.get_event_flag("pvp_price_vnum"), game.get_event_flag("pvp_price_count")) pc.select(t) notice_all("O tornei foi terminado.") game.set_event_flag("pvp", 0) pvp_attenders = nil return end pvp_manager.make_duel_list() duel_list_index = 0 if winner_count == 2 then notice_all("¡A rodada final do torneio está começando agora!") elseif winner_count <= 4 then notice_all("A rodada semifinal do torneio está começando agora!") else notice_all("A próxima rodada do torneio está começando agora!") end pvp_round_num = pvp_round_num + 1 pvp_manager.refresh_arenas() end function distribute_bets(winner_name) table.insert(betting_list, {pc.get_name(), bet_amount, player}) local jackpot = 0 local jackpot_winner_only = 0 local winners = 0 for i = 1, table.getn(betting_list), 1 do if betting_list[3] == winner_name then jackpot_winner_only = jackpot_winner_only + betting_list[2] end jackpot = jackpot + betting_list[2] winners = winners + 1 end for i = 1, table.getn(betting_list), 1 do if betting_list[3] == winner_name then pvp_manager.give_jackpot_gold(betting_list[1], math.ceil( (betting_list[2] / jackpot_winner_only)*jackpot )) end end end function give_jackpot_gold(name, amount) local target = find_pc_by_name(name) if target == 0 then return end local t = pc.select(target) pc.change_money(amount) pc.select(t) end function local_pc_warp(name, x, y) local target = find_pc_by_name(name) local t = pc.select(target) pc.warp_local(pc.get_map_index(), x*100, y*100) pc.select(t) end function setqf_by_name(name, flag, value) local target = find_pc_by_name(name) local t = pc.select(target) pc.setqf(flag, value) pc.select(t) end function getqf_by_name(name, flag) local target = find_pc_by_name(name) local t = pc.select(target) local rflag = pc.getqf(flag) pc.select(t) return rflag end function get_attender_id_by_name(name) for ai = 1, attender_count, 1 do if tostring(pvp_attenders[ai].name) == name then return ai end end return 0 end function get_my_attender_id() return pvp_manager.get_attender_id_by_name(pc.get_name()) end function get_duel_partner() if pvp_attenders[pvp_manager.get_my_attender_id()] != nil and pvp_attenders[pvp_manager.get_my_attender_id()].partner != nil then return pvp_attenders[pvp_manager.get_my_attender_id()].partner else return nil end end function get_fight_mode() if pvp_attenders != nil and pvp_manager.get_my_attender_id() != 0 and pvp_attenders[pvp_manager.get_my_attender_id()] != nil and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != nil then return pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode else return 0 end end function set_fight_mode(fmode) pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode = fmode end function get_arena() return pvp_attenders[pvp_manager.get_my_attender_id()].arena end function set_arena(id) pvp_attenders[pvp_manager.get_my_attender_id()].arena = id end function ask_fight(asker, target) return confirm(find_pc_by_name(target), "va a luta contra "..asker.. "?", 15) end endend Edited August 16, 2017 by Darkness 1 Link to comment Share on other sites More sharing options...
Radamanthos Posted January 4, 2018 Share Posted January 4, 2018 Tenho o mesmo problema Link to comment Share on other sites More sharing options...
Radamanthos Posted January 14, 2018 Share Posted January 14, 2018 Amigo, tentei usar essa sua quest, mas quando inicio o evento buga as janelas do cliente, sabe dizer o porque ? Link to comment Share on other sites More sharing options...
Mário. Posted January 15, 2018 Share Posted January 15, 2018 (edited) Utiliza a que usava no servidor passado. Testada e funcional para aquilo que vocês querem. Hidden Content Give reaction to this post to see the hidden content. Edited January 15, 2018 by Mário. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now