Postado Dezembro 23, 2018 6 anos TFS 1.3 - Mark Samman Olá a todos, Estou com esse problema e não consigo resolver: Quando o player dá exit nos trainers ele não leva kick. Já fiz várias pesquisas aqui e em outros fóruns, mas nenhuma das possibilidades apresentadas me serviu. Tentei esse script: Mas não funcionou porque aparentemente o meu TFS não possui a função getCreatureNoMove(cid). Tentei também através do config.lua, mas ele não tem nenhuma dessas funções: idleWarningTime idleKickTime stopAttackingAtExit Tentei adicioná-las mas elas não funcionam. Bom, tenho algumas ideias para resolver o problema, mas não sei por onde começar. 1- A melhor opção seria se eu de fato conseguisse fazer o char parar de atacar quando desse exit. Mas já que não consigo configurar isso pelo confi.lua, como poderia fazer? 2- Posso criar uma rotina que checa se o player está "dançando", mas como verifico se ele mudou de direção? Existe alguma função que verifica o movimento do char no mesmo sqm? 3- Aceito ideias que não sejam complexas demais (rsrs). Editado Dezembro 23, 2018 6 anos por jefersonzc (veja o histórico de edições)
Postado Dezembro 30, 2018 6 anos Autor Solução Bom, resolvi desenvolver eu mesmo uma solução, me baseando nos scripts que encontrei pelo caminho Segue abaixo. 1. Em data/creaturescripts/scripts/login.lua, acrescente: player:registerEvent("Idle") 2. Em data/creaturescripts/creaturescripts.xml, acrescente: <event type="think" name="Idle" script="idle.lua"/> 3. Na pasta data/creaturescripts/scripts, crie o arquivo idle.lua, com o seguinte código: local room = { x1 = 1542, x2 = 1608, y1 = 1528, y2 = 1556, z1 = 8, z2 = 8 } function onThink(player, interval) local target = player:getTarget() if (player:getIp() > 0) then return true else local pos = player:getPosition() if ((pos.x >= room.x1 and pos.x <= room.x2) and (pos.y >= room.y1 and pos.y <= room.y2) and (pos.z >= room.z1 and pos.z <= room.z2)) then doRemoveCreature(player) end end return true end Depois é só configurar o script com as coordenadas da sua room (onde ficam os trainers). Pronto, qualquer player que der quit ali dentro, esteja ele atacando os trainers ou não, vai levar kick alguns segundos depois. Podem fechar como resolvido
Postado Dezembro 30, 2018 6 anos você poderia resolver também da seguinte forma, se você não atacar o mob ele desloga, então é só parar o ataque ao da exit. troca sua função onTargetCombat function Creature:onTargetCombat(target) if not self then return true end if(self:getPlayer() and self:getPlayer():getIp() == 0) then self:setTarget(nil) end Eu estava com o mesmo problema e um dançarino brabo me ajudou! @Lyu
Postado Dezembro 31, 2018 6 anos Autor 10 horas atrás, Yinz disse: você poderia resolver também da seguinte forma, se você não atacar o mob ele desloga, então é só parar o ataque ao da exit. troca sua função onTargetCombat function Creature:onTargetCombat(target) if not self then return true end if(self:getPlayer() and self:getPlayer():getIp() == 0) then self:setTarget(nil) end Eu estava com o mesmo problema e um dançarino brabo me ajudou! @Lyu Opa, bom saber dessa segunda saída. Poderá ser útil ainda. Obrigado.
Postado Maio 6, 2020 5 anos Em 30/12/2018 em 12:39, Yinz disse: você poderia resolver também da seguinte forma, se você não atacar o mob ele desloga, então é só parar o ataque ao da exit. troca sua função onTargetCombat function Creature:onTargetCombat(target) if not self then return true end if(self:getPlayer() and self:getPlayer():getIp() == 0) then self:setTarget(nil) end Eu estava com o mesmo problema e um dançarino brabo me ajudou! @Lyu Poderia me mandar uma pra tfs 1.3? A minha está na data/lib/core/combat está correta? Ela está assim: function Combat:getPositions(creature, variant) local positions = {} function onTargetTile(creature, position) positions[#positions + 1] = position end self:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile") self:execute(creature, variant) return positions end function Combat:getTargets(creature, variant) local targets = {} function onTargetCreature(creature, target) targets[#targets + 1] = target end self:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") self:execute(creature, variant) return targets end
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.