Ir para conteúdo

Featured Replies

  • Respostas 6
  • Visualizações 1.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @bismarkzika, Qual é a condição a ser satisfeita para parar o damage? O jogador sair do piso?? Caso seja, aqui está o script:   Nome:  [PEDIDO] Tile que da dano em x vocation

Posted Images

Postado

@bismarkzika,

Qual é a condição a ser satisfeita para parar o damage? O jogador sair do piso??

Caso seja, aqui está o script:

 

Nome:  [PEDIDO] Tile que da dano em x vocation

 

Distro utilizada nos testes: Aries Server to Tibia 8.1 - Version 4.0 based on OTServ SVN Version 0.6.0

 

Comportamento: Caso um jogador de uma das vocations especificadas na lista config.vocation pise no local indicado, um contador será inicializado e, a cada tickTime segundos o jogador receberá damagePerTick de dano caso permaneça neste local.

 

Em data/movements/movements.xml, adicione esta tag:

<movevent event="StepIn" actionid="9999" script="vocation_damage.lua" />

 

Em data/movements/scripts crie um arquivo chamado vocation_damage.lua e cole isto dentro dele:

-- [PEDIDO] Tile que da dano em x vocation by marcot

local config = {
  vocation = {4}, -- Lista de Vocations afetadas pelo damage
  damagePerTick = 50, -- Dano recebido a cada tick
  tickTime = 5 -- Tempo do dano (segundos)
}

-- Main
function onStepIn(cid, item, pos)
  if not isPlayer (cid) then
    return false
  end

  if isInArray(config.vocation, getPlayerVocation(cid)) then
    infos = {
      cid = cid,
      pos = getPlayerPosition(cid),
    }
    addEvent (damageCondition, config.tickTime * 1000, infos)
  end

  return true
end

-- Funcao para comparar duas coordenadas (Retorna true caso sejam iguais)
function comparePositions (posA, posB)
  if posA.x == posB.x and posA.y == posB.y and posA.z == posB.z then
    return true
  end
  return false
end

-- Funcao responsavel pela condition do player receber dano
function damageCondition (infos)
  if comparePositions (infos.pos, getPlayerPosition(infos.cid)) then
        doCreatureAddHealth (infos.cid, -config.damagePerTick)
        addEvent (damageCondition, config.tickTime * 1000, infos)
  end
end

 

Editado por marcot (veja o histórico de edições)

Postado

Acredito que sim, o actionID você coloca no piso indicado.

Você estava querendo fazer isso com UM piso em específico ou em uma área completa? Se quiser eu coloco para o efeito se manter em qualquer piso que tiver o action id 9999, não necessariamente o char ficar parado no mesmo piso.

 

Aliás, qual sua versão de TFS? Se não estiver funcionando absolutamente nada pode ser a tag, que é diferente.

Editado por marcot (veja o histórico de edições)

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.9k

Informação Importante

Confirmação de Termo