Ir para conteúdo

Quest Que Nao Funciona


miroking

Posts Recomendados

opa galera eu fiz 1 quest por mim mesmo, e nela contem 4 chests, cada chest da 1 premio mas percebi que as vezes

se duas pessoas fazem ela, o primeiro que a faz recebe os premios e o segundo ao clicar na chest aparece a mensagem "its empty" mesmo sem ele a ter feito

 

nao entendo de scripts entao fui tentano de pouco em pouco entender os scripts só para faze-la

 

nao sei pq esse erro esta ocorrendo, alguem poderia me ajudar a sanar este erro ?

 

para entenderem melhor vou postar os 4 scripts em spoiler aqui

 

Mpa.lua

 

 

function onUse(cid, item, frompos, item2, topos)

 

if item.uid == 15002 then

queststatus = getPlayerStorageValue(cid,15004)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"You have found a Magic Plate Armor.")

doPlayerAddItem(cid,2472,1)

setPlayerStorageValue(cid,15004,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

else

return 0

end

 

return 1

end

 

 

key2089.lua

 

 

function onUse(cid, item, frompos, item2, topos)

 

if item.uid == 15003 then

queststatus = getPlayerStorageValue(cid,15005)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"You have found a strange KEY.")

doPlayerAddItem(cid,2089,1)

setPlayerStorageValue(cid,15005,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

else

return 0

end

 

return 1

end

 

 

key2090.lua

 

 

function onUse(cid, item, frompos, item2, topos)

 

if item.uid == 15009 then

queststatus = getPlayerStorageValue(cid,15010)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"You have found a strange KEY.")

doPlayerAddItem(cid,2090,1)

setPlayerStorageValue(cid,15010,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

else

return 0

end

 

return 1

end

 

 

key2091.lua

 

 

function onUse(cid, item, frompos, item2, topos)

 

if item.uid == 15006 then

queststatus = getPlayerStorageValue(cid,15007)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"You have found a strange KEY.")

doPlayerAddItem(cid,2091,1)

setPlayerStorageValue(cid,15007,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

else

return 0

end

 

return 1

end

 

 

as linhas dessas quests no actions.xml

 

<action uniqueid="15002" script="quests/MPA.lua" /><action uniqueid="15003" script="quests/key2089.lua" /><action uniqueid="15009" script="quests/key2090.lua" /><action uniqueid="15006" script="quests/key2091.lua" />

Editado por miroking
Link para o comentário
Compartilhar em outros sites

O que checa se o player fez a quest é playerstorage

 

Modifique os dois e certamente voltará a funcionar

 

queststatus = getPlayerStorageValue(cid,15004)

 

setPlayerStorageValue(cid,15004,1)

 

Modifique o valor 15004 em todos para um diferente que funcionará

Link para o comentário
Compartilhar em outros sites

O que checa se o player fez a quest é playerstorage

 

Modifique os dois e certamente voltará a funcionar

 

queststatus = getPlayerStorageValue(cid,15004)

 

setPlayerStorageValue(cid,15004,1)

 

Modifique o valor 15004 em todos para um diferente que funcionará

 

nao entendi muito bem mas entao é algo assim :

queststatus = getPlayerStorageValue(cid,15007)
setPlayerStorageValue(cid,15007,1)

 

devo deixalos diferentes por exemplo :

getPlayerStorageValue(cid,15007)

setPlayerStorageValue(cid,15008,1) ?

Link para o comentário
Compartilhar em outros sites

Não não, você deverá trocar estes números por qualquer outro.

Exemplo:

getPlayerStorageValue(cid,15012)

setPlayerStorageValue(cid,15012,1)

 

Nunca coloque números diferentes nessas funções. getPlayerStorageValue deve ser igual à setPlayerStorageValue, só adicione o número 1 na frente da virgula.

Abraços.

Link para o comentário
Compartilhar em outros sites

Não não, você deverá trocar estes números por qualquer outro.

Exemplo:

getPlayerStorageValue(cid,15012)

setPlayerStorageValue(cid,15012,1)

 

Nunca coloque números diferentes nessas funções. getPlayerStorageValue deve ser igual à setPlayerStorageValue, só adicione o número 1 na frente da virgula.

Abraços.

 

hmmm entao devo mudar para 1,2,3 e assim por indiante ?

Link para o comentário
Compartilhar em outros sites

Colocar o valor 1 significa verdadeiro, ou seja, se o jogador não estiver "marcado" por aquele número, ele irá receber a "marcação do número" e então poder fazer a quest. Se ele estiver "marcado" pelo número, ele não poderá fazer a quest. Apenas troque o valor em negrito por qualquer um outro.

 

Grato pela atenção,

Abraços.

Link para o comentário
Compartilhar em outros sites

Olha, vou postar um script que acabei de fazer pra lhe ajudar, então PRESTE ATENÇÃO abaixo.

 


local QUESTS = {{NAME = "Magic Plate Armor", UNIQUEID = 15002, STORAGEID = 15004, ITEMID = 2472},
	{NAME = "strange KEY", UNIQUEID = 15003, STORAGEID = 15005, ITEMID = 2089},
	{NAME = "strange KEY", UNIQUEID = 15009, STORAGEID = 15010, ITEMID = 2090},
	{NAME = "strange KEY", UNIQUEID = 15006, STORAGEID = 15007, ITEMID = 2091}
       }


function onUse(cid, item, fromPosition, itemEx, toPosition)
for i = 1, #QUESTS do
	if (item.uid == QUESTS[i].UNIQUEID) then
		if not(getPlayerStorageValue(cid, QUESTS[i].STORAGEID) == 1) then
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have found a " .. QUESTS[i].NAME".")
			doPlayerAddItem(cid, QUESTS[i].ITEMID, 1)
			setPlayerStorageValue(cid, QUESTS[i].STORAGEID, 1)
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It's empty.")
		end
		return TRUE
	end
end
return TRUE
end

 

Explicando:

{NAME = "Magic Plate Armor", UNIQUEID = 15002, STORAGEID = 15004, ITEMID = 2472},

NAME = nome do item que o player irá ganhar

UNIQUEID = UID do baú, ou o item que seja

STORAGEID = ID do storage, o que vai guardar se o player FEZ ou NÃO a quest

ITEMID = ID do item que o player irá ganhar, caso não fez a quest

 

Resumindo, se você quiser adicionar uma nova quest, basta adicionar uma nova linha..

 

Olhe o exemplo abaixo:

 

local QUESTS = {{NAME = "Magic Plate Armor", UNIQUEID = 15002, STORAGEID = 15004, ITEMID = 2472},
	{NAME = "strange KEY", UNIQUEID = 15003, STORAGEID = 15005, ITEMID = 2089},
	{NAME = "strange KEY", UNIQUEID = 15009, STORAGEID = 15010, ITEMID = 2090},
	{NAME = "strange KEY", UNIQUEID = 15006, STORAGEID = 15007, ITEMID = 2091},
	{NAME = "Sword of Valor", UNIQUEID = 15666, STORAGEID = 15999, ITEMID = 2400}
       }

 

Neste exato momento, tenho mais uma quest feita, a da SOV! =)

 

 

PS: Lembre-se, sempre o último, não devera ter VÍRGULA (,) no final.. no caso é a Sword of Valor.

 

 

Não esqueça de adicionar no XML:

<action uniqueid="15002" script="quests/system.lua" />
<action uniqueid="15003" script="quests/system.lua" />
<action uniqueid="15009" script="quests/system.lua" />
<action uniqueid="15006" script="quests/system.lua" />

 

No caso system.lua, é um nome de arquivo que eu escolhi, escolha o seu e substitua.. =)

 

 

Espero ter ajudado, Kazz.

Link para o comentário
Compartilhar em outros sites

hmm entendi mas nao sei se expliquei certo estava com sono na hora que fiz esse topico, eu estava invisivel a ver 2 players fazendo uma mesma quest, o primeiro player que clicou nos baus recebeu os itens da quest no caso (mpa e golden key) por algum motivo o segundo player que nao havia feito a quest tambem ao clicar nos baus apareceu para ele a mensagem "its empty" e ele nao recebeu nenhum item como se ja tivesse feito essa quest

 

e por isso estou tentando achar aonde errei para esse erro acontecer

 

agora expliquei certinho :D

Link para o comentário
Compartilhar em outros sites

hmm entendi mas nao sei se expliquei certo estava com sono na hora que fiz esse topico, eu estava invisivel a ver 2 players fazendo uma mesma quest, o primeiro player que clicou nos baus recebeu os itens da quest no caso (mpa e golden key) por algum motivo o segundo player que nao havia feito a quest tambem ao clicar nos baus apareceu para ele a mensagem "its empty" e ele nao recebeu nenhum item como se ja tivesse feito essa quest

 

e por isso estou tentando achar aonde errei para esse erro acontecer

 

agora expliquei certinho :D

Provavelmente o storage ID que você utilizou, já estava sendo utilizado por algo.. E com isso deu um simples "It's empty!", ou no caso um simples erro ao checar (if blabla then)!

 

Enfim, use o "sisteminha" que eu fiz, vai lhe facilitar a vida! ^^

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...