Ir para conteúdo

[ Resolvido ]Storagevalue


Brody Dalle

Posts Recomendados

to com um problema, eu to criando um servidor e a maioria das quests são missões pegas em npcs, a cada parte da missão eu adiciono um sotagevalue no player pra ele continuar de onde parou, o problema eh que eu quero fazer missões longas e qnd o player loga parece que da um problema nos storages que faz com que o player não consiga completar a quest e nem recomeçar, o npc simplesmente não responde a nenhuma msg programada.

alguem conhece esse problema e sabe se tem como resolver?

Link para o comentário
Compartilhar em outros sites

Storage values não somem quando loga... A não ser que exista algum creaturescripts fazendo isso ou as storages usadas sejam as mesmas da arena (alguns servidores vem configurados para resetar a arena quando loga-se). Talvez você esteja usando alguma função errada... A sintaxe do storage value pode ser:

 

 setPlayerStorageValue(cid, storage, value) 

 

ou

 

 getPlayerStorageValue(cid, storage) 

 

flw

Link para o comentário
Compartilhar em outros sites

o script é esse:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local storage = 80150



function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
       return false
   end

   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


   if msgcontains(msg, 'quest')  then
if getPlayerStorageValue(cid, storage) == -1 then
	npcHandler:say("Hello, I am a fisherman, now my work is stopped because someone stole my {worms}", cid)
	talkState[talkUser] = 1
       end

   elseif talkState[talkUser] == 1 then
       if msgcontains(msg, 'worms') then
               npcHandler:say("Some days ago I went out to buy a new fishing rod, when I returned someone had taken all my worms, I have no money to buy more worms because I spent all the new rod, you can get some for me?", cid)
			talkState[talkUser] = 2
	end



   elseif talkState[talkUser] == 2 then
       if msgcontains(msg, 'yes') then
	npcHandler:say("Thank you young man, this task should not be difficult for you, I see that you carry weapons and shield, is an adventurer, killing rats is easy for you, I will reward you, I promise. Bring {200 worms} for me", cid)
       setPlayerStorageValue(cid,storage,1)
	talkState[talkUser] = 3
       end

   elseif talkState[talkUser] == 3 then
       if msgcontains(msg, "worms") or msgcontains (msg, "itens") then
		if getPlayerItemCount(cid,3976)  >= 200 then
				doPlayerRemoveItem(cid,3976,200)
				local cclub = doPlayerAddItem(cid,2448,1)
				doItemSetAttribute(cclub,"name","Studded Club of Sea")
				doItemSetAttribute(cclub,"attack",10)
				doItemSetAttribute(cclub,"defense",10)
				doItemSetAttribute(cclub,"description","A club forged by ancient pirates")
				doPlayerAddExp(cid,200)
			npcHandler:say("Thank you young man, now I can go back to my work, take this club that I found on the seabed... {you received 300xp and a Studded club}")
			setPlayerStorageValue(cid,storage,2)
			talkState[talkUser] = 4
		else
               npcHandler:say("You don't have the {worms} yet. come back when you have",cid)
           end
           end
           end
   return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

no caso se eu quiser logar e pegar os itens e entregar depois, eu não consigo.. o npc não fala mais com o char se ele logar, soh fala a msg

Link para o comentário
Compartilhar em outros sites

if getPlayerStorageValue(cid, storage) == -1 then npcHandler:say("Hello, I am a fisherman, now my work is stopped because someone stole my {worms}", cid) talkState[talkUser] = 1 end

 

elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') then npcHandler:say("Thank you young man, this task should not be difficult for you, I see that you carry weapons and shield, is an adventurer, killing rats is easy for you, I will reward you, I promise. Bring {200 worms} for me", cid) setPlayerStorageValue(cid,storage,1) talkState[talkUser] = 3 end

 

por causa disso.

setPlayerStorageValue(cid,storage,1)

 

creio que isso esteja errado.

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
Link para o comentário
Compartilhar em outros sites

@Marcryzius

O erro não é somente este. Note que no primeiro status da conversação, ele checa se há storage ou não... Este é o erro maior.

 

@Topic

Estou tentando refazer seu npc. Caso consiga, postarei.

 

 

@Edited

Aqui está seu npc:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
       return false
   end

   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

--------------------------------------------------------------------------------

local storage = 80150

     if msgcontains(msg, 'quest') and getPlayerStorageValue(cid, storage) == -1 then
        selfSay("Hello, I am a fisherman, now my work is stopped because someone stole my {worms}", cid)
        talk_state = 1

     elseif msgcontains(msg, 'worms') and talk_state == 1 then
        selfSay("Some days ago I went out to buy a new fishing rod, when I returned someone had taken all my worms, I have no money to buy more worms because I spent all the new rod, you can get some for me?", cid)
        talk_state = 2

     elseif msgcontains(msg, 'yes') and talk_state == 3 then         
        selfSay("Thank you young man, this task should not be difficult for you, I see that you carry weapons and shield, is an adventurer, killing rats is easy for you, I will reward you, I promise. Bring {200 worms} for me", cid)
        setPlayerStorageValue(cid,storage,1)
        talk_state = 0      

     elseif msgcontains(msg,'quest') and getPlayerStorageValue(cid, storage) == 1 then
        selfSay("Did you bring my worms?", cid)
        talk_state = 3

     elseif msgcontains(msg, 'yes') and talk_state == 3 then   
         if getPlayerItemCount(cid,3976)  >= 200 then
                                       doPlayerRemoveItem(cid,3976,200)
                                       local cclub = doPlayerAddItem(cid,2448,1)
                                       doItemSetAttribute(cclub,"name","Studded Club of Sea")
                                       doItemSetAttribute(cclub,"attack",10)
                                       doItemSetAttribute(cclub,"defense",10)
                                       doItemSetAttribute(cclub,"description","A club forged by ancient pirates")
                                       doPlayerAddExp(cid,200)
                               selfSay("Thank you young man, now I can go back to my work, take this club that I found on the seabed... {you received 300xp and a Studded club}")
                               setPlayerStorageValue(cid,storage,2)
                               talk_state = 0
                       else
                               selfSay("You don't have the {worms} yet. come back when you have",cid)
                               talk_state = 0
                       end   


     elseif msgcontains(msg, 'quest') and getPlayerStorageValue(cid, storage) == 2 then
        selfSay("Oh, i am thankful, but i have no missions now.", cid)
        talk_state = 0


     elseif msg == "no" and talk_state == 2 or msg == "no" and talk_state == 3 then
        selfSay("I will find someone who can help me.", cid)
        talk_state = 0 
        end   
   return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Não testei, porém acho que funciona.

 

 

flw

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

Funcionou, ta perfeito agora, da pra logar e continuar a quest depois, tinha um errinho basico na parte dos talk_states, na parte que falava "yes" ele n ia pra proxima parte, mas isso eh só um detalhe comparado ao problema anterior, vlw mesmo, me ajudou muito =)

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...