Metin2 Posted August 16, 2017 at 01:16 AM Share Posted August 16, 2017 at 01:16 AM (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! 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 at 01:16 AM by Darkness 1 Link to comment
Radamanthos Posted January 4, 2018 at 09:05 PM Share Posted January 4, 2018 at 09:05 PM Tenho o mesmo problema Link to comment
Radamanthos Posted January 14, 2018 at 07:59 PM Share Posted January 14, 2018 at 07:59 PM Amigo, tentei usar essa sua quest, mas quando inicio o evento buga as janelas do cliente, sabe dizer o porque ? Link to comment
Mário. Posted January 15, 2018 at 08:21 PM Share Posted January 15, 2018 at 08:21 PM (edited) Utiliza a que usava no servidor passado. Testada e funcional para aquilo que vocês querem. pvp_manager.lua Edited January 15, 2018 at 08:22 PM by Mário. 1 Link to comment
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