Ir para conteúdo
  • Cadastre-se

(Resolvido)Boss Spawn Apos Matar X Quantidade de Creature! (Ajuda) Resolvido 90%


Ir para solução Resolvido por FeeTads,

Posts Recomendados

 

Bom Dia! TK! 

 

TFS 0.4 8.60

Estou com um problema no script e gostaria de uma solucao!

Ele funciona da Seguinte forma apos matar x Creatures Spawn Boss na Regiao! 

Porem nao esta contabilizando as creatures no chat!
Acredito que tenho que alterar algo na

function para identificar o player e soltar o aviso para ele!


Error Distro:

Spoiler

[11:34:38.369] [Error - CreatureScript Interface]
[11:34:38.371] data/creaturescripts/scripts/BossCreature.lua:onDeath
[11:34:38.372] Description:
[11:34:38.372] (luaGetCreatureName) Creature not found

[11:34:38.373] [Error - CreatureScript Interface]
[11:34:38.373] data/creaturescripts/scripts/BossCreature.lua:onDeath
[11:34:38.374] Description:
[11:34:38.374] data/creaturescripts/scripts/BossCreature.lua:39: attempt to concatenate a boolean value
[11:34:38.374] stack traceback:
[11:34:38.375]  data/creaturescripts/scripts/BossCreature.lua:39: in function <data/creaturescripts/scripts/BossCreature.lua:16>



Se possivel onde esta  doBroadcastMessage("O monstro ".. r.boss .." nasceu!", 20) Colocar para aparecer apenas para quem matou a creature e tem a Storage no momento!

Script : BossCreature.Lua (CreatureScript)

Spoiler

function doCreateMonsterWalkableAreaPosition(name, from, to)
   local pos = {x=math.random(from.x, to.x), y=math.random(from.y, to.y), z=math.random(from.z, to.z)}
   if isWalkable(pos, false, false, false) then
      doSummonCreature(name, pos)
   else
      doCreateMonsterWalkableAreaPosition(name, from, to)
   end
end

local t = {
   [{"Dragon", "Dragon lord"}] = {storage = 741320, amount = 10, boss = "Boss Dragon", from = {x = 80, y = 187, z = 8}, to = {x = 85, y = 191, z = 8}},
   [{"Black Dragon", " Black Dragon lord"}] = {storage = 741321, amount = 10, boss = "Boss Black Dragon", from = {x = 800, y = 1817, z = 8}, to = {x = 851, y = 1911, z = 8}},
}


function onDeath(cid, corpse, deathList)
   local killer = deathList[1]
   if not isMonster(cid) or not isPlayer(killer) then
      return true
   end
   for v , r in pairs(t) do
      if isInArray(v, getCreatureName(cid)) then
         local contador = getGlobalStorageValue(r.storage) <= 0 and 0 or getGlobalStorageValue(r.storage)
         if contador >= r.amount then
            for x = r.from.x - 1, r.to.x + 1 do
               for y = r.from.y - 1, r.to.y + 1 do
                  local pos = {x=x, y=y, z=r.from.z}
                  local m = getTopCreature(pos).uid
                  if m ~= 0 and isMonster(m) then
                     doRemoveCreature(m)
                  end
               end
            end
            doCreateMonsterWalkableAreaPosition(r.boss, r.from, r.to)
            setGlobalStorageValue(r.storage, 0)
            doBroadcastMessage("O monstro ".. r.boss .." nasceu!", 20)
         else
            setGlobalStorageValue(r.storage, contador + 1)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Boss Spawning: '..(getGlobalStorageValue(r.storage)+1)..' of '..r.amount..' '..getCreatureName(target)..'s killed to spawn boss.') 
         end
      end
   end
   return true
end

 

Creature Script xml
    <event type="Death" name="BossSpawn" event="script" value="BossCreature.lua"/>

Login.lua
registerCreatureEvent(cid, "BossSpawn")

Editado por Maniaco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Maniaco mudou o título para Boss Spawn Apos Matar X Quantidade de Creature! (Ajuda) Resolvido 90%
Em 28/08/2022 em 11:16, Maniaco disse:

doBroadcastMessage("O monstro ".. r.boss .." nasceu!", 20)

pra:

doPlayerSendTextMessage(killer, MESSAGE_STATUS_WARNING, "o Boss "..r.boss.." nasceu!")

 

também pode se usar o "MESSAGE_STATUS_CONSOLE_RED" pra mostrar no default em vermelho

Em 28/08/2022 em 11:16, Maniaco disse:

[11:34:38.374] data/creaturescripts/scripts/BossCreature.lua:39: attempt to concatenate a boolean value

E Esse erro acontece por causa disso:

Em 28/08/2022 em 11:16, Maniaco disse:

getCreatureName(target)

na linha 39, se é uma função onDeath, ela só existe após o monstro morrer, como a creature vai ter "target" após morrer?
o target n existe mais e ele retorna false, que não pode concatenar, o certo eh colocar:

getCreatureName(killer)

 

7 minutos atrás, FeeTads disse:

(target)

alias...
"target" nem existe nessa função
o mais certo de tudo seria usar "getCreatureTarget(cid)" o "target" só existe em função "onKill"

9 minutos atrás, FeeTads disse:

"getCreatureTarget(cid)"

obs: que no caso também não existe em função onDeath
pra função onDeath, sempre utilizar "deathlist[1]" =ULTIMO DANO ou "deathlist[2]" = MAIOR DANO

Link para o post
Compartilhar em outros sites
6 horas atrás, FeeTads disse:

pra:


doPlayerSendTextMessage(killer, MESSAGE_STATUS_WARNING, "o Boss "..r.boss.." nasceu!")

 

também pode se usar o "MESSAGE_STATUS_CONSOLE_RED" pra mostrar no default em vermelho

E Esse erro acontece por causa disso:

na linha 39, se é uma função onDeath, ela só existe após o monstro morrer, como a creature vai ter "target" após morrer?
o target n existe mais e ele retorna false, que não pode concatenar, o certo eh colocar:


getCreatureName(killer)

 

alias...
"target" nem existe nessa função
o mais certo de tudo seria usar "getCreatureTarget(cid)" o "target" só existe em função "onKill"

obs: que no caso também não existe em função onDeath
pra função onDeath, sempre utilizar "deathlist[1]" =ULTIMO DANO ou "deathlist[2]" = MAIOR DANO

@FeeTads Obrigado Pela explicação estavam olhando no forum sobre OnDeath para entender melhor como funciona!

Porem Algo que você falou sobre o PlayerSendText
o Script não reconhece quem matou a criatura para dar o aviso, no caso n localiza o player!
Error Distro:
 

Spoiler

[20:37:17.383] [Error - CreatureScript Interface]
[20:37:17.384] data/creaturescripts/scripts/BossCreature.lua:onDeath
[20:37:17.385] Description:
[20:37:17.385] (luaDoPlayerSendTextMessage) Player not found

[20:37:17.823] [Error - CreatureScript Interface]
[20:37:17.824] data/creaturescripts/scripts/BossCreature.lua:onDeath
[20:37:17.825] Description:
[20:37:17.825] (luaDoPlayerSendTextMessage) Player not found

Teriamos alguma forma de contonar para ele identificar o player ? (E Poderia detalhar para meu melhor entendimento ?)

Link para o post
Compartilhar em outros sites
Em 28/08/2022 em 11:16, Maniaco disse:

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Boss Spawning: '..(getGlobalStorageValue(r.storage)+1)..' of '..r.amount..' '..getCreatureName(target)..'s killed to spawn boss.') 

 creio que o que ta dando erro seja esse aqui mano, "cid" eh a criature que morreu, não eh nem player pro cid receber essa msg

Link para o post
Compartilhar em outros sites
7 horas atrás, FeeTads disse:

 creio que o que ta dando erro seja esse aqui mano, "cid" eh a criature que morreu, não eh nem player pro cid receber essa msg

e Qual seria o caminho para resolvermos ?

Link para o post
Compartilhar em outros sites
  • Solução
Em 06/09/2022 em 12:24, Maniaco disse:

e Qual seria o caminho para resolvermos ?

uai trocando o cid por killer
 

doPlayerSendTextMessage(killer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Boss Spawning: '..(getGlobalStorageValue(r.storage)+1)..' of '..r.amount..' '..getCreatureName(cid)..'s killed to spawn boss.') 


 

Link para o post
Compartilhar em outros sites
17 horas atrás, FeeTads disse:

uai trocando o cid por killer
 


doPlayerSendTextMessage(killer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Boss Spawning: '..(getGlobalStorageValue(r.storage)+1)..' of '..r.amount..' '..getCreatureName(cid)..'s killed to spawn boss.') 


 

Agora entendi melhor como funciona!

Obrigado! 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo