Ir para conteúdo
  • Cadastre-se

(Resolvido)NPC Que troca storage por itens


Ir para solução Resolvido por gabrielzika,

Posts Recomendados

Olá Tkinganos venho aqui para pedir ajuda a esse grandes membros fodoens  do TK, tenho um npc que e para mim poder falar com ele só se eu tiver umas certa storage, e ele me pede certos itens para me dar outra storage por um tempo de dois dias. A primeira parte de falar com ele apenas se tiver uma storage esta ok, mais a de que ele pede pra mim entregar os items para ele me dar outra estorage por 2 dias não vai.

Eu: Hi.

NPC: Parabens voce provou-me que e um guerreiro promissor. Quer fazer a {mission}?.

Eu: Mission.

NPC: Ok, traga-me 25 protective charm que te darei permissão de dois dias para treinar comigo, boa sorte na busca das protective charm.

EU: yes.

 

alguém poderia consertar pra mim ?

SCRIPT 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 items = {
[1] = {id = 12400, count = 5},
[2] = {id = 12400, count = 5},
[3] = {id = 12400, count = 5},
[4] = {id = 12400, count = 10}
}

if(msgcontains(msg, 'permissao')) then
selfSay('Parabens voce provou-me que e um guerreiro promissor. Quer fazer a {mission}?', cid)
end
local quest = 444454 -- Storage da Quest --garden
if getPlayerStorageValue(cid, quest) < 1 then
selfSay("voce nao completou a quest do vilarejo dos orc ao south da cidade, complete-a e e mostre-me que voce e realmente um guerreiro promissor.", cid)
return true
end    
if(msgcontains(msg, 'mission')) then
selfSay('Diga {yes} para aceitar.', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if getPlayerStorageValue(cid, 99952) >= 1 then
selfSay('Você fez essa missão.', cid)
return true
end
local tempo = 172800 -- tempo que vai durar a storage
local storage = 99952 -- storage   
elseif (getPlayerStorageValue(cid, storage) <= os.time()) then
selfSay('Ok, traga-me 25 protective charm que te darei permissao de dois dias para treinar comigo, boa sorte na busca das protective charm', cid)
elseif getPlayerItemCount(cid, items[1].id) == items[1].count or getPlayerItemCount(cid, items[2].id) == items[2].count or getPlayerItemCount(cid, items[3].id) == items[3].count or getPlayerItemCount(cid, items[4].id) == items[4].count then
setPlayerStorageValue(cid, storage, os.time()+tempo) -- garden 
selfSay('Claro, você foi para a próxima missão. Boa sorte.', cid)
else
selfSay('Você não tem os itens.', cid)
end
return true
end

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

 

Link para o post
Compartilhar em outros sites
  • Solução

@amoxicilina

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 config = {
       
item1 = 12400,
item2 = 12400,
item3 = 12400,
item4 = 12400,
count1 = 5,
count2 = 5,
count3 = 5,
count4 = 10,       
level = 300,    -- Level que precisara para viajar
sto = 99952,    -- Storage não mecher 
tempo = 172800, -- tempo que vai durar a storage
quest = 444454, -- quest necessaria...

}
if msgcontains(msg, 'mission') then
    if (getPlayerStorageValue(cid, config.sto) <= os.time()) then
       if getPlayerStorageValue(cid, config.quest) >= 1 then
        if getPlayerItemCount(cid, config.item1) >= config.count1 and getPlayerItemCount(cid, config.item2) >= config.count2 and getPlayerItemCount(cid, config.item3) >= config.count3 and getPlayerItemCount(cid, config.item4) >= config.count4 then
            selfSay('Claro, você foi para a próxima missão. Boa sorte.', cid)
            setPlayerStorageValue(cid, config.sto, os.time()+config.tempo)
            doPlayerRemoveItem(cid, config.item1, config.count1)
            doPlayerRemoveItem(cid, config.item2, config.count2)
            doPlayerRemoveItem(cid, config.item3, config.count3)
            doPlayerRemoveItem(cid, config.item4, config.count4)
        else
            selfSay('Traga-me os 25 protective charm para poder treinar comigo por dois dias.', cid)
        end
    else
            selfSay("voce nao completou a quest do vilarejo dos orc ao south da cidade, complete-a e e mostre-me que voce e realmente um guerreiro promissor.", cid)
        end
    else    
        selfSay('Você Ja fez essa missão!' , cid)
    return true
    end
end
end

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

 

xml

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="NomeDoNpc" script="NomeDoArquivo.lua" walkinterval="0" floorchange="0">
<health now="150" max="150"/>
<look type="589" head="20" body="100" legs="50" feet="99" corpse="2212"/>]
<parameters>
<parameter key="message_greet" value="Parabens, voce provou-me que e um guerreiro promissor. Se quiser continuar diga {mission}."/>
</parameters>
</npc>

 

Editado por gabrielzika (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Já fiz a quest antes para poder falar com o npc mais ele continua falando que eu não completei ela,  storage da quest está: 444454, oque poderia ser que ele não esta reconhecendo que já completei a primeira quest pra ele poder trocar comigo a storage de 2 dias pelos itens ?

 

-----------------NPC ARRUMADO--------------

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 config = {
       
item1 = 12400,
item2 = 12400,
item3 = 12400,
item4 = 12400,
count1 = 5,
count2 = 5,
count3 = 5,
count4 = 10,       
level = 8,    -- Level que precisara para viajar
sto = 99952,    -- Storage não mecher 
tempo = 172800, -- tempo que vai durar a storage
quest = 39455, -- quest necessaria...

}
if msgcontains(msg, 'mission') then
    if (getPlayerStorageValue(cid, config.sto) <= os.time()) then
       if getPlayerStorageValue(cid, 39455) >= 1 then
        if getPlayerItemCount(cid, config.item1) >= config.count1 and getPlayerItemCount(cid, config.item2) >= config.count2 and getPlayerItemCount(cid, config.item3) >= config.count3 and getPlayerItemCount(cid, config.item4) >= config.count4 then
            selfSay('Claro, você foi para a próxima missão. Boa sorte.', cid)
            setPlayerStorageValue(cid, config.sto, os.time()+config.tempo)
            doPlayerRemoveItem(cid, config.item1, config.count1)
            doPlayerRemoveItem(cid, config.item2, config.count2)
            doPlayerRemoveItem(cid, config.item3, config.count3)
            doPlayerRemoveItem(cid, config.item4, config.count4)
        else
            selfSay('Traga-me os 25 protective charm para poder treinar comigo por dois dias.', cid)
        end
    else
            selfSay("voce nao completou a quest do vilarejo dos orc ao south da cidade, complete-a e e mostre-me que voce e realmente um guerreiro promissor.", cid)
        end
    else    
        selfSay('Você Ja fez essa missão!' , cid)
    return true
    end
end
end

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

vlw.

 

 

Editado por amoxicilina (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Post Corrigido! -.-

Editado por gabrielzika (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 3 months later...
Em 15/12/2017 em 19:22, gabrielzika disse:

Post Corrigido! -.-

 

Desculpe a demora mias é que só percebi ressente mente que o npc não remove a storage apos passar o período de tempo especificado na script, poderia arrumar mim ? =)

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo