Ir para conteúdo

Featured Replies

Postado
  Em 04/02/2016 em 20:42, wevertonvrb disse:

ok vou estar aqui te agradeço mt, vou continuar tentando


   query para ser adicionada no creature.xml 
   <event type="statschange" name="stats" script="stats.lua"/> 
   <event type="death" name="deathMonster" script="kill.lua"/> 

 

   query para ser adicionada no monstro: 
   <script> 
      <event name = "stats"/> 
      <event name = "deathMonster"/> 
   </script> 
 

-- Em creaturescripts>scripts>kill.lua, adicione: 

 

--[[ 
   autor = Marcryzius 
   data = sexta-feira, 05 de fevereiro de 2016 
   ]] 
function onDeath(cid, corpse, deathList) 
for _,player in pairs(deathList) do 
   if(isPlayer(player) and isPlayerOn(player))then 
      if(getDamageInMonster(cid,player) > 50)then
      -- aqui você adiciona o que quiser
      end 
   end 
end 
return true 
end 

 

-- Em creaturescripts>scripts>stats.lua, adicione: 

 

--[[ 
   autor = Marcryzius 
   data = sexta-feira, 05 de fevereiro de 2016 
   ]] 
local M = {} 
function getDamageInMonster(monster,cid) 
local monster,cid,m_life,p_dano = tonumber(monster),tonumber(cid),0,0 
if not(monster or cid)then return 0,error('function getDamageInMonster(): monster or cid, not number') end 
if not(isCreature(monster))then return 0,error('function getDamageInMonster(): variavel monster nao e monstro.') end 
   for k,v in pairs(M[monster]) do 
      if(k == cid)then p_dano = v end 
      m_life = m_life + v 
   end 
   return math.floor(p_dano/(m_life/100)) 
end 

function onStatsChange(cid, attacker, tipo, combat, value) 
local atac = attacker 
if not(M[cid])then M[cid] = {} end 
if not(tipo == 1)then return true end 

   if(isPlayer(attacker))then 
      if not(M[cid][attacker])then M[cid][attacker] = 0   end 
      M[cid][attacker] = M[cid][attacker] + value 
   elseif(isMonster(attacker))then -- caso seja um monstro o atacante 
   local get = getCreatureMaster(attacker) -- averigua se n�o � um summon que est� atacando 
      atac = get 
      if(tonumber(get) and isPlayer(get))then -- caso o summon seja de um player, adiciona o dano como se fosse o player 
         if not(M[cid][get])then M[cid][get] = 0   end 
         M[cid][get] = M[cid][get] + value 
      end 
   end 
   return true 
end 
 

  • Respostas 60
  • Visualizações 2.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @xWhiteWolf me ajuda aqui mano http://www.tibiaking.com/forum/topic/67062-subir-escada-bug/#comment-385003

  • Esse error se deu por causa da função isCreature(monster) que está retornando um valor falso, ou seja, não é um monstro que está na variável "monster" da função.    No caso dele estar sumind

  • Fiz uma modificação no script:     Ps: muda "isplayeron ()" por: "getCreatureName ()"

Postado
  • Autor
  Em 06/02/2016 em 11:20, dominus disse:


   query para ser adicionada no creature.xml 
   <event type="statschange" name="stats" script="stats.lua"/> 
   <event type="death" name="deathMonster" script="kill.lua"/> 

 

   query para ser adicionada no monstro: 
   <script> 
      <event name = "stats"/> 
      <event name = "deathMonster"/> 
   </script> 
 

-- Em creaturescripts>scripts>kill.lua, adicione: 

 

--[[ 
   autor = Marcryzius 
   data = sexta-feira, 05 de fevereiro de 2016 
   ]] 
function onDeath(cid, corpse, deathList) 
for _,player in pairs(deathList) do 
   if(isPlayer(player) and isPlayerOn(player))then 
      if(getDamageInMonster(cid,player) > 50)then
      -- aqui você adiciona o que quiser
      end 
   end 
end 
return true 
end 

 

-- Em creaturescripts>scripts>stats.lua, adicione: 

 

--[[ 
   autor = Marcryzius 
   data = sexta-feira, 05 de fevereiro de 2016 
   ]] 
local M = {} 
function getDamageInMonster(monster,cid) 
local monster,cid,m_life,p_dano = tonumber(monster),tonumber(cid),0,0 
if not(monster or cid)then return 0,error('function getDamageInMonster(): monster or cid, not number') end 
if not(isCreature(monster))then return 0,error('function getDamageInMonster(): variavel monster nao e monstro.') end 
   for k,v in pairs(M[monster]) do 
      if(k == cid)then p_dano = v end 
      m_life = m_life + v 
   end 
   return math.floor(p_dano/(m_life/100)) 
end 

function onStatsChange(cid, attacker, tipo, combat, value) 
local atac = attacker 
if not(M[cid])then M[cid] = {} end 
if not(tipo == 1)then return true end 

   if(isPlayer(attacker))then 
      if not(M[cid][attacker])then M[cid][attacker] = 0   end 
      M[cid][attacker] = M[cid][attacker] + value 
   elseif(isMonster(attacker))then -- caso seja um monstro o atacante 
   local get = getCreatureMaster(attacker) -- averigua se n�o � um summon que est� atacando 
      atac = get 
      if(tonumber(get) and isPlayer(get))then -- caso o summon seja de um player, adiciona o dano como se fosse o player 
         if not(M[cid][get])then M[cid][get] = 0   end 
         M[cid][get] = M[cid][get] + value 
      end 
   end 
   return true 
end 
 

deu este erro
 

Mostrar conteúdo oculto

em seguida retirei essa parte do script kill.lua
and isPlayerOn(player)
e gerou este outro erro agora no stats
 

Mostrar conteúdo oculto

   outra coisa é que o pokémon quando é morto não aparece o corpo é como se tivesse dado um /r nele
 

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

Postado
  Em 07/02/2016 em 13:01, wevertonvrb disse:

deu este erro
 

Mostrar conteúdo oculto

em seguida retirei essa parte do script kill.lua
and isPlayerOn(player)
e gerou este outro erro agora no stats
 

Mostrar conteúdo oculto

   outra coisa é que o pokémon quando é morto não aparece o corpo é como se tivesse dado um /r nele
 

 

 

 

 

Substitui o isPlayerOn () por getCreatureName ()

 

Nesse outro caso, tu varia s ter que procurar se não existe outros scripts sendo executados por esse pokemon. 

Testa o sistema em outro monstro neutro apenas por questão de averiguação. 

Postado
  • Autor
  Em 10/02/2016 em 11:44, dominus disse:

 

Substitui o isPlayerOn () por getCreatureName ()

 

Nesse outro caso, tu varia s ter que procurar se não existe outros scripts sendo executados por esse pokemon. 

Testa o sistema em outro monstro neutro apenas por questão de averiguação. 

deixei o script assim
 

Mostrar conteúdo oculto

Testei com outro pokémon que tinha acabado de adicionar que n tem como estar ligado a nenhum outro sistema
Não gerou erro porem continua do mesmo jeito, o jogador não ganha nada, e o pokémon quando é morto some como se tivesse dado um /r nele

um leki me disse que quando se adiciona um evento no xml do monstro o monstro vira o (cid) e o player o (target)
será que isso tem algo a ver? sera q o sistema ta entendendo que o pokemon é que tem que bater no player?

Postado
  Em 11/02/2016 em 18:58, wevertonvrb disse:

deixei o script assim
 

Mostrar conteúdo oculto

Testei com outro pokémon que tinha acabado de adicionar que n tem como estar ligado a nenhum outro sistema
Não gerou erro porem continua do mesmo jeito, o jogador não ganha nada, e o pokémon quando é morto some como se tivesse dado um /r nele

um leki me disse que quando se adiciona um evento no xml do monstro o monstro vira o (cid) e o player o (target)
será que isso tem algo a ver? sera q o sistema ta entendendo que o pokemon é que tem que bater no player?

Sim eu sei disso.

 

Faz o seguinte, testa o sistema em um monstro comum sem ser pokemom.

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.6k

Informação Importante

Confirmação de Termo