Postado Dezembro 13, 2023 1 ano Autor Muito obrigado amigo pela atenção uso tfs 1.3 Esses que você comento otg 11 aí eles tem mesmo os script, mais só o script da arena não funciona, deve ter mais completo o script aí não consigo
Postado Dezembro 13, 2023 1 ano https://github.com/otg-br/global/blob/main/data/creaturescripts/scripts/arenapvp.lua https://github.com/otg-br/global/blob/main/data/actions/scripts/arena_pvp/arena2x2.lua https://github.com/otg-br/global/tree/main/data Se você não conseguir, eu tenho uma arena PvP para o TFS 1.x, mas está em casa. Estou no trabalho agora, mas assim que chegar em casa, enviarei o script completo.
Postado Dezembro 13, 2023 1 ano Autor Ok 2 horas atrás, GM Vortex disse: https://github.com/otg-br/global/blob/main/data/creaturescripts/scripts/arenapvp.lua https://github.com/otg-br/global/blob/main/data/actions/scripts/arena_pvp/arena2x2.lua https://github.com/otg-br/global/tree/main/data Se você não conseguir, eu tenho uma arena PvP para o TFS 1.x, mas está em casa. Estou no trabalho agora, mas assim que chegar em casa, enviarei o script completo. Ok amigo se puder me mandar agradeço muito Também tou serviço, em casa testo melhor obrigado.
Postado Dezembro 13, 2023 1 ano data/creaturescripts/scripts, pvparena.lua local arena = { frompos = {x = 720, y = 660, z = 7}, -- Posição inicial da arena. topos = {x = 727, y = 666, z = 7}, -- Posição final da arena. exitpos = {x = 718, y = 664, z = 7}, -- Posição de teleporte ao sair da arena. exitpos2 = {x = 729, y = 664, z = 7} -- Segunda posição de teleporte para um jogador específico. } -- Verifica se o jogador está dentro da arena function isPlayerInArena(position) return position.x >= arena.frompos.x and position.x <= arena.topos.x and position.y >= arena.frompos.y and position.y <= arena.topos.y and position.z == arena.frompos.z end function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) local player = Player(cid) if player then local playerPos = player:getPosition() if isPlayerInArena(playerPos) then local killer = Player(lastHitKiller) if killer then killer:sendTextMessage(MESSAGE_STATUS_WARNING, "[Arena]: Parabéns, você venceu!") killer:teleportTo(arena.exitpos2) end player:setDropLoot(false) player:teleportTo(arena.exitpos) player:sendTextMessage(MESSAGE_STATUS_WARNING, "[Arena]: Você perdeu!") player:addHealth(player:getMaxHealth() + 65500) player:addMana(player:getMaxMana() + 65500) else end end return true end function onLogin(player) player:registerEvent("pvparena") return true end TAG XML. <!-- pvp arena --> <event type="preparedeath" name="pvparena" script="pvparena.lua"/> <event type="login" name="pvparena_r" script="pvparena.lua"/> data/actions/scripts. pvparena.lua function onUse(cid, item, frompos, item2, topos) local player = Player(cid) if iswar() then player:sendCancelMessage('Outra luta está em andamento.') return false end local poss1 = configs_arena.pos_tile1 local poss2 = configs_arena.pos_tile2 local pos1 = { x = poss1.x, y = poss1.y, z = poss1.z, stackpos = 255 } local pos2 = { x = poss2.x, y = poss2.y, z = poss2.z, stackpos = 255 } local uid1 = Tile(pos1):getTopCreature() local uid2 = Tile(pos2):getTopCreature() if item:getId() == 1945 then if not Player(uid1) or not Player(uid2) then player:say("Você precisa de dois jogadores para entrar na arena.", TALKTYPE_ORANGE_1) return false end if player:getLevel(uid1) < 50 or player:getLevel(uid2) < 50 then player:sendCancelMessage('Todos os jogadores precisam estar no mínimo no nível 50!') return false end start_arena(uid1.uid, uid2.uid) -- Assuming start_arena receives player UIDs return true end return false end TAG XML. <action uniqueid="1245" event="script" value="pvparena.lua"/> data/lib. pvparena.lua configs_arena = { pos_tile1 = {x = 722, y = 658, z = 7}, pos_tile2 = {x = 724, y = 658, z = 7}, pos_dest_player1 = {x = 722, y = 663, z = 7}, pos_dest_player2 = {x = 725, y = 663, z = 7}, storage1 = 31000, storage2 = 31001, global_storage = 31000, pos_lose = {x = 718, y = 664, z = 7}, pos_gain = {x = 729, y = 664, z = 7}, pos_busy = {x = 718, y = 664, z = 7} } function iswar() return Game.getStorageValue(configs_arena.global_storage) == 1 end function stop_arena(uid) local player = Player(uid) if player:getStorageValue(configs_arena.storage1) == 1 then player:addHealth(player:getMaxHealth()) player:removeCondition(CONDITION_INFIGHT) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'A partida terminou empatada!') player:teleportTo(configs_arena.pos_busy) player:setStorageValue(configs_arena.storage2, -1) end return true end function start_arena(uid1, uid2) if iswar() then return false end local player1 = Player(uid1) local player2 = Player(uid2) if not(player1 and player2) then return false end if player1:getLevel() < 50 or player2:getLevel() < 50 then return false end player1:setStorageValue(configs_arena.storage2, 1) player2:setStorageValue(configs_arena.storage2, 1) player1:setStorageValue(configs_arena.storage1, addEvent(stop_arena, (5 * 60 * 1000), uid1)) player2:setStorageValue(configs_arena.storage1, addEvent(stop_arena, (5 * 60 * 1000), uid2)) player1:removeCondition(CONDITION_INFIGHT) player2:removeCondition(CONDITION_INFIGHT) player1:addHealth(player1:getMaxHealth()) player2:addHealth(player2:getMaxHealth()) player1:teleportTo(configs_arena.pos_dest_player1) player2:teleportTo(configs_arena.pos_dest_player2) Game.setStorageValue(configs_arena.global_storage, 1) player1:say("Fight!", TALKTYPE_MONSTER_SAY) player2:say("Fight!", TALKTYPE_MONSTER_SAY) return true end data/global.lua. -- Arena Pvp. dofile('data/lib/pvparena.lua') Esses scripts foram originalmente desenvolvidos para o TFS 0.4 e adaptados por mim para funcionar no TFS 1.x. Eles foram testados e funcionam perfeitamente, sem problemas. Esses scripts são destinados ao uso na arena PvP, e é isso.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.