Postado Agosto 28, 2022 2 anos 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: Mostrar conteúdo oculto [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) Mostrar conteúdo oculto 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 Setembro 4, 2022 2 anos por Maniaco (veja o histórico de edições)
Postado Setembro 5, 2022 2 anos Em 28/08/2022 em 14: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 14: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 14: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) Em 05/09/2022 em 17:27, 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" Em 05/09/2022 em 17:27, 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
Postado Setembro 5, 2022 2 anos Autor Em 05/09/2022 em 17:27, 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: Mostrar conteúdo oculto [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 ?)
Postado Setembro 6, 2022 2 anos Em 28/08/2022 em 14: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
Postado Setembro 6, 2022 2 anos Autor Em 06/09/2022 em 08:10, 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 ?
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.