Ir para conteúdo
  • 0

checar storage, matar monstro e ganhar outra storage


nbb147

Pergunta

e ai pessoal, eu estava montando um creaturescript pra quando o player matar um monstro checar se ele(o player) possui uma storage e caso ele tenha, ser adicionado uma outra storage por cima, no caso a storage só é adicionada ao matar o monstro, se o player possuir uma devida storage, sou uma bosta em montar creaturescript, eles nunca funcionam como eu imagino que funcionam:AreYouSerious-min:

venho aqui pedir a ajuda de alguém mais experiente  : O 

agradeço desde já qualquer ajuda, script:

 

function onDeath(cid, corpse, deathList)local Storage,monstName,players = 92000, "Ashar", {}if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(monstName) and isPlayer(target) and getCreatureStorage(target, storage) == 2 thendoCreatureSay(cid, "Você matou Ashar o líder da ceita.", TALKTYPE_ORANGE_1)for _, check in pairs(deathList) doif isPlayer(check) thentable.insert(players, check)endendfor _, var in pairs(players) dosetPlayerStorageValue(var, Storage, 3)endend return trueend

 

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 1

Simplesmente por causa do erro que esta acontecendo, dele nao encotrar a criatura.

Citar
getCreatureStorage(check, storage) == 2 

A variavel 'check', nao foi declarada, nao esta visivel para essa funcao ou nao é uma criatura; por isso pedi para remover de la e por no loop onde tem a variavel check valida como criatura.

 

Citar

function onDeath(cid, corpse, deathList)

local monstName,players,storage = "Ashar", {},0000

 

if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(monstName) then

for _, check in pairs(deathList) do

if isPlayer(check) and getCreatureStorage(check, storage) == 2 then

doCreatureSay(check, "Você matou Ashar o líder da ceita.", TALKTYPE_ORANGE_1)

setPlayerStorageValue(check, 92000, 3)

end

end 

end

rerurn true

end 

 

Link para o comentário
Compartilhar em outros sites

  • 0

A variavel 'storage' nao foi declarada:

Citar
getCreatureStorage(target, storage)

 

Pelo o que eu vi no script, existe uma variavel chamada 'Storage', com a primeira letra maiuscula; lembre-se, lua diferencia maiuscula de minuscula.

 

Outra coisa, numca faça isso:

Citar
for _, check in pairs(deathList) doif isPlayer(check) thentable.insert(players, check)endendfor _, var in pairs(players) dosetPlayerStorageValue(var, Storage, 3)end

 

Não ha necessidade de adicionar os valores em uma tabela para depois pecorrer ela, sendo que tudo pode ser feito no mesmo loop.

Citar

for _, check in pairs(deathList) do

if isPlayer(check) then

setPlayerStorageValue(check, Storage, 3)

end

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

concertei a parte da storage, e depois removi essa checagem, já que é inútil, e não funcionou, agora até mesmo sem a checagem da sto o player não recebe a nova sto.

Link para o comentário
Compartilhar em outros sites

  • 0

O parametro da variavel target declarado nas funções getstore e isplayer, não foi declarada.

Citar
getCreatureStorage(target, storage) == 2
Citar
isPlayer(target)

 

Nesse caso, para verificar se o player tem a store, ou se é player, voce teria que varrer a tabela deathlist.

Link para o comentário
Compartilhar em outros sites

  • 0

Numca faça isso.

 

Lembra dessa parte que refiz pra voce?

Citar

for _, check in pairs(deathList) do

if isPlayer(check) then

setPlayerStorageValue(check, Storage, 3)

end

end

 

Então, ele ja esta percorrendo a tabela deathlist, logo, voce so precisa modificar a condição.

Citar

if isPlayer(check) and getCreatureStorage(check, storage) == 2 then

 

Lembre-se de remover a sentença posta no if inicial:

Citar
if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(monstName) and isPlayer(target) and getCreatureStorage(target, storage) == 2 then

 

Remove o isplayer e getstore.

Link para o comentário
Compartilhar em outros sites

  • 0

fiz de uma maneira aqui que ela sem o getsto funciona perfeitamente, agora quando coloco diz que a não reconhece a criatura:

 

[31/07/2016 15:14:36] [Error - CreatureScript Interface] [31/07/2016 15:14:36] data/creaturescripts/scripts/ryuuthemonk.lua:onDeath[31/07/2016 15:14:36] Description: [31/07/2016 15:14:36] (luaGetCreatureStorage) Creature not found

e o script ficou assim:

 

function onDeath(cid, corpse, deathList)local monstName,players = "Ashar", {}if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(monstName) and getCreatureStorage(check, storage) == 2 thendoCreatureSay(cid, "Você matou Ashar o líder da ceita.", TALKTYPE_ORANGE_1)for _, check in pairs(deathList) doif isPlayer(check) thensetPlayerStorageValue(check, 92000, 3)return trueendend endend

agora me explica uma coisa, você disse para eu remover o isplayer e o getsto do if, bom o isplayer eu até entendi o porque, mas o getsto porque eu iria retirar? como eu iria fazer a checagem da storage?
 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...