Ir para conteúdo
  • 0

[Resolvido] npc não da storage


nbb147

Pergunta

Galera, eu modifiquei um npc em busca de fazer com que ele receba uma quantidade de um item especifico e em seguida dê uma storage ao player, porém, por mais que o jogador tenha os itens na bolsa, ele não os recebe e não da a storage ao player, alguem saberia como arrumar isso? Observação, não da nenhum erro na distro, script:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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 addStorage(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if getPlayerItemCount(cid, 5897) >= 10 then -- 10 wolf paws

return true,npcHandler:say('Desculpe, mas voce nao trouxe as 10 rat paws.', cid)

elseif not doPlayerRemoveItem(cid, 5897, 10) then

return true,npcHandler:say('Voce precisa me trazer 10 rat paws.', cid)

end

setPlayerStorageValue(var, storage, 1)

npcHandler:say('Otimo servico, voce tem minha autorizacao.', cid)

npcHandler:resetNpc()

return true

end


keywordHandler:addKeyword({'vengard'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja comprar uma das montarias do Vengard? Ele esta devendo muitos impostos a vila, então, eu o proibi de vender. Ele ainda ira me pagar com dinheiro ou servicos.'})

local node0 = keywordHandler:addKeyword({'servicos'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Se voce fizer alguns servicos para mim, eu te darei a permissao para comprar uma mount. Temos um acordo?'})
node0:addChildKeyword({'yes'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'A cidade esta infestada de ratos, provavelmente eles estão saindo dos esgotos, traga-me 10 rat paws como prova de que voce os matou, e eu te darei a autorizacao.'})
node0:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, ate mais.', reset = true})

local node1 = keywordHandler:addKeyword({'rats'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Você trouxe as 10 rat paws?'})
node1:addChildKeyword({'yes'}, addStorage, {storage = 10105})
node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Entao me traga.', reset = true})

npcHandler:addModule(FocusModule:new())

Qualquer ajuda, agradeço desde já.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 1

@nbb147

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


local item = 5897 -- item AQui
local storage = xxxxxx  ---storage Aqui
function creatureSayCallback(cid, type, msg)


if msgcontains(msg, 'sim') or msgcontains(msg, 'yes') then

if getPlayerStorageValue(cid,  storage) == -1 then

if getPlayerItemCount(cid, item) > 10 then

setPlayerStorageValue(cid, storage, 1)
selfSay('Otimo serviço, você tem minha autorização.', cid)
else
selfSay('Você precisa me trazer 10 rat paws', cid)
end
else
selfSay('Você já fez minha missão', cid)
end
end

return true

end


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

 

Link para o comentário
Compartilhar em outros sites

  • 0

@nbb147 Dei uma Simplificada nesse script, ficou um pouco bagunçado...

Spoiler

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


local item = 5897 -- item AQui
local storage = xxxxxx  ---storage Aqui
function creatureSayCallback(cid, type, msg)


if msgcontains(msg, 'sim') or msgcontains(msg, 'yes') then

if getPlayerItemCount(cid, item) > 10 then
setPlayerStorageValue(cid, storage, 1)
selfSay('Otimo serviço, você tem minha autorização.', cid)
else
selfSay('Você precisa me trazer 10 rat paws', cid)
end

end

return true

end


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

 

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou, porém o jogador pode repetir a missão quando quiser, o que não é legal, como eu poderia criar uma condição para que q ele não pudesse repeti-la? Pois tentei através de storages e não consegui.

Link para o comentário
Compartilhar em outros sites

  • 0

@nbb147 Foi mal eu esqueci disso haha

Spoiler

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


local item = 5897 -- item AQui
local storage = xxxxxx  ---storage Aqui
function creatureSayCallback(cid, type, msg)


if msgcontains(msg, 'sim') or msgcontains(msg, 'yes') then

if getPlayerItemCount(cid, item) > 10 then
setPlayerStorageValue(cid, storage, 1)
selfSay('Otimo serviço, você tem minha autorização.', cid)
elseif getPlayerStorageValue(cid, storage) > 0 then
selfSay('Você já fez minha missão', cid)
else
selfSay('Você precisa me trazer 10 rat paws', cid)
end

end

return true

end


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

 

Link para o comentário
Compartilhar em outros sites

  • 0

amigo, eu coloquei desta forma, mas ele não recebe a storage inicialmente, apenas quando eu saio do personagem e entro novamente, e mesmo estando com a storage ele continua fazendo a missão repetidamente.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

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