Ir para conteúdo

Featured Replies

Postado

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 por jefersonzc (veja o histórico de edições)

Resolvido por jefersonzc

Ir para solução
  • Respostas 9
  • Visualizações 2.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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(ta

  • Opa! Então meu amigo, vc não precisa configurar ID de tile nenhum. Essa função é executada em tempo real, o que ela faz é ficar checando o player para ver se o IP de conexão dele é igual a 0. Se o IP

  • Essas coordenadas são a posição onde começa e termina a sua sala. O ideal é que vc abra o seu Map Editor e imagine um retângulo grande o suficiente para envolver toda a sua área de treino (já que nem

Posted Images

Postado
  • 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

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
  • 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. 

  • 1 year later...
Postado
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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo