Postado Junho 13, 2022 2 anos Alguém me ajuda a otimizar essa function para otx 2.12, ela funciona porém ao roda a function o servidor "congela" e após a function completar sua verificação o servidor "descongela" Você tem o código disponível? Se tiver publique-o aqui: addEvent(function (removeMonsterInArea) if not isCreature(cid) then return end local positionsCheck = {} for i = config.from.x, config.to.x do positionsCheck[#positionsCheck+1] = {x=i, y = config.from.y, z = config.from.z, stackpos = 0} for j = config.from.y+1, config.to.y do positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.from.z, stackpos = 0} end end for j=1, #positionsCheck do for i = 0, 255 do positionsCheck[j].stackpos = i local tile = getTileThingByPos(positionsCheck[j]) if isMonster(tile.uid) then doRemoveCreature(tile.uid) end end end return true end, config.time*60*1000, cid) Script utilizado foi do tópico [0.3.6] Quest Anihi 8.54 100% configuravel - Otimizado - Action, MoveEvent, TalkAction & Spell - Tibia King - Tudo sobre Tibia, OTServ e Bots!
Postado Junho 15, 2022 2 anos Ela funciona em qual script? Posta o script aqui para verificarmos. E o que você deseja que essa função faça? Remova monstros de uma área específica?
Postado Junho 15, 2022 2 anos Autor Em 15/06/2022 em 19:01, daviscript disse: Ela funciona em qual script? Posta o script aqui para verificarmos. E o que você deseja que essa função faça? Remova monstros de uma área específica? Funciona no padrão que foi postado. Desejo que ela faça exatamente oque está fazendo, mas acho que está com erro pois toda vez que é executada ela congela o server
Postado Julho 11, 2022 2 anos Em 15/06/2022 em 20:52, XGaduX disse: Funciona no padrão que foi postado. Desejo que ela faça exatamente oque está fazendo, mas acho que está com erro pois toda vez que é executada ela congela o serve mas claro, fica checando a area toda varias vezes kkkkkk, eu tenho uma função no meu server, muito mais clean mano... bota essas 2 funtions na sua lib function doCleanArea(pos_superior_esquerda, pos_inferior_direita) local monsters = getMonstersInArea(pos_superior_esquerda, pos_inferior_direita) for _, cid in pairs(monsters) do doRemoveCreature(cid) end end function getMonstersInArea(pos1,pos2) local monsters = {} if pos1.x and pos1.y and pos2.x and pos2.y and pos1.z == pos2.z then for a = pos1.x, pos2.x do for b = pos1.y,pos2.y do local pos = {x=a,y=b,z=pos1.z} if isMonster(getTopCreature(pos).uid) and not isSummon(getTopCreature(pos).uid) then table.insert(monsters,getTopCreature(pos).uid) end end end return monsters else return false end end ai no teu script ó chamar a função doCleanArea ex: doCleanArea( {x=1000, y=1000, z=7}, {x=1010, y=1010, z=7} ) ou pode setar antes e colocar no script só a variável. ps: caso queira que remova até summon tira o " and not isSummon(getTopCreature(pos).uid) "
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.