atakashi 11 Postado Novembro 5, 2017 Share Postado Novembro 5, 2017 (editado) Estou com um problema nesse script, ele funciona mas as vezes da esse erro dizendo que não encontrou a criatura do jogador. [Error - CreatureScript Interface] In a timer event called from: data/creaturescripts/scripts/exp2.0.lua:onStatsChange Description: (luaGetCreatureMaster) Creature not found o script é este. if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then addEvent(function() if isCreature(getCreatureMaster(cid)) then doPlayerSendCancel(getCreatureMaster(cid), "%PokeHealth@" .. getCreatureHealth(cid) .. "@" .. getCreatureMaxHealth(cid)) end end, 100) end ... botei ("...") pq continua, está parte ai que da o erro. Editado Novembro 5, 2017 por atakashi Link para o comentário Compartilhar em outros sites More sharing options...
Crypter 136 Postado Novembro 6, 2017 Share Postado Novembro 6, 2017 if isSummon(cid) or isPlayer(getCreatureMaster(cid)) then addEvent(function() if isCreature(getCreatureMaster(cid)) then doPlayerSendCancel(getCreatureMaster(cid), "%PokeHealth@" .. getCreatureHealth(cid) .. "@" .. getCreatureMaxHealth(cid)) end end, 100) end Link para o comentário Compartilhar em outros sites More sharing options...
atakashi 11 Postado Novembro 7, 2017 Autor Share Postado Novembro 7, 2017 (editado) Acho que não adianta crypter, pelo fato de eu ter tirado o " isPlayer(getCreatureMaster(cid))" e continuado dando erro. Editado Novembro 7, 2017 por atakashi Link para o comentário Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Novembro 7, 2017 Share Postado Novembro 7, 2017 Não tão repassando o cid pro addEvent ... if isSummon(cid) or isPlayer(getCreatureMaster(cid)) then addEvent(function(cid) if isCreature(getCreatureMaster(cid)) then doPlayerSendCancel(getCreatureMaster(cid), "%PokeHealth@" .. getCreatureHealth(cid) .. "@" .. getCreatureMaxHealth(cid)) end end, 100, cid) end Link para o comentário Compartilhar em outros sites More sharing options...
atakashi 11 Postado Novembro 7, 2017 Autor Share Postado Novembro 7, 2017 (editado) provavel seja isso mesmo, vou testa e volto com o resultado, desde ja obrigado :). Edit: continuo mesmo erro Editado Novembro 7, 2017 por atakashi Link para o comentário Compartilhar em outros sites More sharing options...
Kydrai 146 Postado Novembro 8, 2017 Share Postado Novembro 8, 2017 O erro é pq a criatura (cid) não existe (morreu ou foi removida) quando executa a função dentro do addEvent. Teria que passar o getCreatureMaster(cid) como parâmetro pro addEvent, ao invés de somente o cid. Ainda sim, se o cid não existe no momento que executa o addEvent você não vai conseguir executar as funções getCreatureHealth e getCreatureMaxHealth dentro do addEvent, teria que ter outra forma de pegar o hp dele. Seria algo como: if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then addEvent(function(cid, master) if isCreature(master) then if isCreature(cid) then doPlayerSendCancel(master, "%PokeHealth@" .. getCreatureHealth(cid) .. "@" .. getCreatureMaxHealth(cid)) else -- outro comando para pegar o hp end end end, 100, cid, getCreatureMaster(cid)) end Sobre o hp, se o max health não muda, você pode passar ele como parâmetro junto com o cid e o master. Já o health, por ser onStatsChange, dependendo dos scripts do servidor, da pra saber o hp após executar este script somando o valor do dano com o hp. Caso contrário, imagino que você tenha algum comando pra pegar o hp da criatura que não existe (direto da pokeball, por exemplo). Link para o comentário Compartilhar em outros sites More sharing options...
atakashi 11 Postado Novembro 8, 2017 Autor Share Postado Novembro 8, 2017 (editado) Pelo que percebi o HP da pokeball é dado assim, doItemSetAttribute(item.uid, "hp", ) local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon)) if edit then doItemSetAttribute(pokeball.uid, "happy", happy) doItemSetAttribute(pokeball.uid, "hunger", hunger) doItemSetAttribute(pokeball.uid, "hp", pokelife) end porem volta pro mesmo lugar. Editado Novembro 8, 2017 por atakashi Link para o comentário Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Novembro 9, 2017 Share Postado Novembro 9, 2017 não se pode adicionar o cid a eventos pois o mesmo muda a cada ação da criatura. Envie ao evento o parametro com o id GUID do player, assim ele poderá pegar o cid do player mesmo ele tendo mudado. Link para o comentário Compartilhar em outros sites More sharing options...
Kydrai 146 Postado Novembro 10, 2017 Share Postado Novembro 10, 2017 (editado) 2 horas atrás, Poccnn disse: não se pode adicionar o cid a eventos pois o mesmo muda a cada ação da criatura. Envie ao evento o parametro com o id GUID do player, assim ele poderá pegar o cid do player mesmo ele tendo mudado. O cid não altera a cada ação, ele é gerado quando a criatura é "colocada no mapa" (login, /m, /s, etc). E nesse caso dele o cid é um monstro, o erro é porque não localiza o monstro. Não da pra saber exatamente tudo que ocorre no serv só com essas linhas, mas supondo que nada influencie no dano após esse script, você poderia trocar tudo isso por algo similar a isso: if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then local hp = getCreatureHealth(cid) if type == STATSCHANGE_HEALTHLOSS then hp = hp - value elseif type == STATSCHANGE_HEALTHGAIN then hp = hp + value end doPlayerSendCancel(getCreatureMaster(cid), "%PokeHealth@" .. hp .. "@" .. getCreatureMaxHealth(cid)) end Isso é só um exemplo, vai depender do que tem no seu serv. Editado Novembro 10, 2017 por Kydrai Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 19, 2018 Share Postado Abril 19, 2018 A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados