Ir para conteúdo
  • 0

Ajuda nesse NPC.


gabriel28

Pergunta

Estou tentando montar esse NPC em que quando o player aceite ajudar, ele diga "Obrigada, você estará fazendo um grande favor.", depois que o player voltar e disser 'help' de novo, ela verificara se o player está com o item, e dará o novo item para o player e uma storage para ele não fazer a quest de novo. Só que não estou conseguindo fazer desta forma, quando o player diz que aceita ajudar, ela já faz a checagem dos itens.

 

Segue o 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 FUNCAO_NOME(cid, message, keywords, parameters, node)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
     
local storage = 60080

if getPlayerStorageValue(cid, storage) ~= 1 then 
npcHandler:say('Obrigada, você estará fazendo um grande favor.', cid) -- MENSAGEM AO REMOVER O ITEM
setPlayerStorageValue(cid, storage, 1)
end

if getPlayerStorageValue(cid, storage) ~= 2 then 
if getPlayerItemCount(cid,5944) >= 2 then -- SE TIVER 1 OU MAIS ITEM COM ID 2516
if doPlayerRemoveItem(cid,5944,2) then -- remove 1 ITEM DO ITEM COM ID 2516
npcHandler:say('Obrigao, ja fazia ideia de que isso iria acontecer. Pegue isso em forma de gratidao!', cid) -- MENSAGEM AO REMOVER O ITEM
doPlayerAddItem(cid,5908,2) -- ADD 1 ITEM COM ID 5908
setPlayerStorageValue(cid, storage, 2)
end
else
npcHandler:say('Isso nao eh do meu irmao, nao brinque comigo!', cid)
end
else
npcHandler:say('Você ja me ajudou!', cid)
end
end

local node2 = keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Meu irmao que se perdeu, pode encontra-lo e trazer alguma informaçao para mim?.'})
    node2:addChildKeyword({'yes'}, FUNCAO_NOME, {npcHandler = npcHandler, onlyFocus = true, reset = true})
    node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Até mais.', reset = true})

local node3 = keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce trouxe alguma informaçao dele?.'})
    node3:addChildKeyword({'yes'}, FUNCAO_NOME, {npcHandler = npcHandler, onlyFocus = true, reset = true})
    node3:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Até mais.', reset = true})

npcHandler:addModule(FocusModule:new())

 

 

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

7 respostass a esta questão

Posts Recomendados

  • 0

@,

 

XML do NPC:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="XXXXX" script="data/npc/scripts/xxxxx.lua" walkinterval="2000" floorchange="0" access="5" lookdir="1" >
    <health now="150" max="150"/>
    <look type="139" head="20" body="39" legs="45" feet="7" addons="0"/>
    <parameters>
        <parameter key="message_greet" value="Ola |PLAYERNAME|! Voce pode me ajudar? Se puder diga {help}."/>
        <parameter key="message_alreadyfocused" value="Voce ja esta falando comigo."/>
        <parameter key="message_farewell" value="Ate logo!"/>
    </parameters>
</npc>
Altere os xxxxx pelo nome e script do npc.

 

Agora o script:

local config = {
	stg = 99487, -- STORAGE	
	item = {5944, 2}, -- itemid e quantidade que o player deve entregar ao npc
	prize = {5908, 2} -- prêmio que o npc dará ao player após concluir a missão
}

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)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	if not npcHandler:isFocused(cid) then
		return false
	end

	if msgcontains(msg, "help") then
		if getPlayerStorageValue(cid, config.stg) > 1 then
			selfSay('Você ja me ajudou!', cid)
			return true
		elseif getPlayerStorageValue(cid, config.stg) == 1 then
			if doPlayerRemoveItem(cid, config.item[1], config.item[2]) then
				doPlayerAddItem(cid, config.prize[1], config.prize[2])
				setPlayerStorageValue(cid, config.stg, 2)
				selfSay('Obrigada, ja fazia ideia de que isso iria acontecer. Pegue isso em forma de gratidao!', cid)
				return true
			else
				selfSay('Isso nao e do meu irmao, nao brinque comigo!', cid)
				return true
			end
		elseif getPlayerStorageValue(cid, config.stg) <= 1 then
			selfSay('Obrigada, você estará fazendo um grande favor.', cid)
			setPlayerStorageValue(cid, config.stg, 1)
			return true
		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

O problema tá na storages que não estão batendo...

 

Segue o 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 FUNCAO_NOME(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end

local storage = 60080

if getPlayerStorageValue(cid, storage) < 1 then
npcHandler:say('Obrigada, você estará fazendo um grande favor.', cid) -- MENSAGEM AO REMOVER O ITEM
setPlayerStorageValue(cid, storage, 1)
else
setPlayerStorageValue(cid, storage, -1) -- pra não bugar
end

if getPlayerStorageValue(cid, storage) == 1 then
if getPlayerItemCount(cid,5944) >= 2 then -- SE TIVER 1 OU MAIS ITEM COM ID 2516
if doPlayerRemoveItem(cid,5944,2) then -- remove 1 ITEM DO ITEM COM ID 2516
npcHandler:say('Obrigao, ja fazia ideia de que isso iria acontecer. Pegue isso em forma de gratidao!', cid) -- MENSAGEM AO REMOVER O ITEM
doPlayerAddItem(cid,5908,2) -- ADD 1 ITEM COM ID 5908
setPlayerStorageValue(cid, storage, 2)
end
else
npcHandler:say('Isso nao eh do meu irmao, nao brinque comigo!', cid)
end
else
npcHandler:say('Você ja me ajudou!', cid)
end
end

local node2 = keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Meu irmao que se perdeu, pode encontra-lo e trazer alguma informaçao para mim?.'})
node2:addChildKeyword({'yes'}, FUNCAO_NOME, {npcHandler = npcHandler, onlyFocus = true, reset = true})
node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Até mais.', reset = true})

local node3 = keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce trouxe alguma informaçao dele?.'})
node3:addChildKeyword({'yes'}, FUNCAO_NOME, {npcHandler = npcHandler, onlyFocus = true, reset = true})
node3:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Até mais.', reset = true})

npcHandler:addModule(FocusModule:new())
Link para o comentário
Compartilhar em outros sites

  • 0

Como já tinha feito, e só tinha esquecido de posta ta aqui:

Eu meio que refiz.

 

.xml

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Jasinto Pinto" script="NOME_DO_SCRIPT.lua" walkinterval="2000" floorchange="0">
    <health now="100" max="100"/>
    <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/>
    <parameters>
        <parameter key="message_greet" value="Ola, gostaria de fazer uma mission"/>
    </parameters>
</npc>
.lua
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 = 60081
 
    if msgcontains(msg, 'missão') and getPlayerStorageValue(cid, storage) == -1 then
        selfSay('Você poderia ajudar a achar o briquedo do meu irmão?', cid)
        talkState[talkUser] = 1
    elseif msgcontains(msg, 'yes') and getPlayerStorageValue(cid, storage) == -1 and talkState[talkUser] == 1 then
        selfSay('Obrigada, você estará fazendo um grande favor.', cid)
        setPlayerStorageValue(cid, storage, 1)
        talkState[talkUser] = 0
    end
 
    if msgcontains(msg, 'mission') and getPlayerStorageValue(cid, storage) == 1 then
        selfSay('Você acho o briquedo?', cid)
        talkState[talkUser] = 1
    elseif msgcontains(msg, 'yes') and getPlayerStorageValue(cid, storage) == 1 and talkState[talkUser] == 1 then
        if getPlayerItemCount(cid, 5944) >= 2 then
            selfSay('Obrigao, ja fazia ideia de que isso iria acontecer. Pegue isso em forma de gratidao!', cid)
            doPlayerAddItem(cid, 5908, 2)
            setPlayerStorageValue(cid, storage, 2)
            doPlayerRemoveItem(cid, 5944, 2)
            talkState[talkUser] = 0
        else
            selfSay('Isso nao eh do meu irmao, nao brinque comigo!', cid)
        end
    end
 
    if msgcontains(msg, 'mission') and getPlayerStorageValue(cid, storage) == 2 then
        selfSay('Você ja me ajudou!', cid)
    end
    return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...