Ir para conteúdo

Featured Replies

Postado
Em 04/02/2016 17:42:00, 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.1k
  • 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 09:20:45, 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
 

Spoiler

[07/02/2016 10:48:51] [Error - CreatureScript Interface]
[07/02/2016 10:48:51] data/creaturescripts/scripts/kill.lua:onDeath
[07/02/2016 10:48:51] Description:
[07/02/2016 10:48:51] data/creaturescripts/scripts/kill.lua:7: attempt to call global 'isPlayerOn' (a nil value)
[07/02/2016 10:48:51] stack traceback:
[07/02/2016 10:48:51]     data/creaturescripts/scripts/kill.lua:7: in function <data/creaturescripts/scripts/kill.lua:5>

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

Spoiler

[07/02/2016 10:57:09] [Error - CreatureScript Interface]
[07/02/2016 10:57:09] data/creaturescripts/scripts/kill.lua:onDeath
[07/02/2016 10:57:09] Description:
[07/02/2016 10:57:09] data/creaturescripts/scripts/stats.lua:9: function getDamageInMonster(): variavel monster nao e monstro.
[07/02/2016 10:57:09] stack traceback:
[07/02/2016 10:57:09]     [C]: in function 'error'
[07/02/2016 10:57:09]     data/creaturescripts/scripts/stats.lua:9: in function 'getDamageInMonster'
[07/02/2016 10:57:09]     data/creaturescripts/scripts/kill.lua:8: in function <data/creaturescripts/scripts/kill.lua:5>

   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 10:01:32, wevertonvrb disse:

deu este erro
 

  Mostrar conteúdo oculto

[07/02/2016 10:48:51] [Error - CreatureScript Interface]
[07/02/2016 10:48:51] data/creaturescripts/scripts/kill.lua:onDeath
[07/02/2016 10:48:51] Description:
[07/02/2016 10:48:51] data/creaturescripts/scripts/kill.lua:7: attempt to call global 'isPlayerOn' (a nil value)
[07/02/2016 10:48:51] stack traceback:
[07/02/2016 10:48:51]     data/creaturescripts/scripts/kill.lua:7: in function <data/creaturescripts/scripts/kill.lua:5>

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

  Mostrar conteúdo oculto

[07/02/2016 10:57:09] [Error - CreatureScript Interface]
[07/02/2016 10:57:09] data/creaturescripts/scripts/kill.lua:onDeath
[07/02/2016 10:57:09] Description:
[07/02/2016 10:57:09] data/creaturescripts/scripts/stats.lua:9: function getDamageInMonster(): variavel monster nao e monstro.
[07/02/2016 10:57:09] stack traceback:
[07/02/2016 10:57:09]     [C]: in function 'error'
[07/02/2016 10:57:09]     data/creaturescripts/scripts/stats.lua:9: in function 'getDamageInMonster'
[07/02/2016 10:57:09]     data/creaturescripts/scripts/kill.lua:8: in function <data/creaturescripts/scripts/kill.lua:5>

   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 09:44:51, 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
 

Spoiler

--[[
   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 getCreatureName(player))then
      if(getDamageInMonster(cid,player) > 50)then
      doPlayerAddItem(player, 2160, 3)
      end
   end
end
return true
end 

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
18 horas atrás, wevertonvrb disse:

deixei o script assim
 

  Mostrar conteúdo oculto

--[[
   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 getCreatureName(player))then
      if(getDamageInMonster(cid,player) > 50)then
      doPlayerAddItem(player, 2160, 3)
      end
   end
end
return true
end 

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

Informação Importante

Confirmação de Termo