Ir para conteúdo
  • 0

(não funciona) NPC de troca


toissaoo

Pergunta

Olá galera, gostaria que vocês me ajudassem em uma coisa simples (não para minha pessoa), eu estou fazendo um script para que o NPC troque um stuffed dragon do id 6566 por uma infernal bolt do id 6529. Mas quando eu falo stuffed dragon, que seria para trocar ele simplesmente nao fala/faz nada. Alguém pode me ajudar? Aqui está o script:

 

 

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
npcHandler:setMessage(MESSAGE_GREET, "Olá, eu troco o seu Stuffed Dragon por uma Infernal Bolt.") -- muda a frase só yes q não muda
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local h = 6566 -- ID do item que vai troca
local j = 6529 -- ID que vai ganhar
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
if(msgcontains(msg, 'infernal bolt')) then
if doPlayerRemoveItem(cid,h,6566) then
doPlayerAddItem(cid,j,6529)
selfSay('Voce recebeu a sua infernal bolt',cid) -- muda a frase
talkState[talkUser] = 1
else
selfSay('Voce nao possui um stuffed dragon',cid) -- muda a frase
talkState[talkUser] = 1
end
return TRUE
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Alguém pode me dizer o que eu estou fazendo de errado por favor? ^^

 

REP +

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
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

item = 'You do not have the required items.'
done = 'Here you are.'

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

if msgcontains(msg, 'stuffed dragon') then
if getPlayerItemCount(cid,6566) >= 1 then
selfSay('Did you bring me the Stuffed Dragon?', cid)
talk_state = 1
else
selfSay('I need a {Stuffed Dragon}, to give you a Infernal Bolt. Come back when you have them.', cid)
talk_state = 0
end

elseif msgcontains(msg, 'yes') and talk_state == 1 then
talk_state = 0
if getPlayerItemCount(cid,6566) >= 1 then
if doPlayerRemoveItem(cid,6566, 10) == TRUE then
selfSay(done, cid)
doPlayerAddItem(cid, 6529, 1)
end
else
selfSay(item, cid)
end
end
return true
end

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

Não cheguei a testar.. Mas né..

Dei um edit por causa dos ids..

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

  • 0

Olá MarcoTheFenix, muito obrigado por estar me ajudando, mas o script que voce me mandou ele não funcionou corretamente ou eu fiz algo de errado.

 

Quando falo "hi" para o NPC ele não diz nada, se eu dizer "Stuffed Dragon" ele me pergunta se eu trouxe o item para ele, e quando eu digo yes é que vem o problema. Ele diz: You do not have the required items.

 

O que será que pode ser ?

 

EDIT: Após usar o novo script editado com o ID da infernla bolt, eu digo "yes" e ele nao responde mais nada.

 

Será que pode ser algo errado com o script do npc em si e não com o script da troca ?

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

  • 0

 

 

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 creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
if msgcontains(msg, 'hi') then
selfSay('Deseja trocar uma {stuffed dragon} por uma {infernal bolt}?', cid)
end
if msgcontains(msg, 'stuffed dragon') then
if getPlayerItemCount(cid,6566) >= 1 then
selfSay('Did you bring me the Stuffed Dragon?', cid)
talk_state = 1
else
selfSay('I need a {Stuffed Dragon}, to give you a Infernal Bolt. Come back when you have them.', cid)
talk_state = 0
end
elseif msgcontains(msg, 'yes') and talk_state == 1 then
talk_state = 0
if getPlayerItemCount(cid,6566) == 10 then
if doPlayerRemoveItem(cid,6566, 10) == TRUE then
selfSay('Here you are', cid)
doPlayerAddItem(cid, 6529, 1)
end
else
selfSay('You do not have the required items.', 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

 

 

 

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 creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
if msgcontains(msg, 'hi') then
selfSay('Deseja trocar uma {stuffed dragon} por uma {infernal bolt}?', cid)
end
if msgcontains(msg, 'stuffed dragon') then
if getPlayerItemCount(cid,6566) >= 1 then
selfSay('Did you bring me the Stuffed Dragon?', cid)
talk_state = 1
else
selfSay('I need a {Stuffed Dragon}, to give you a Infernal Bolt. Come back when you have them.', cid)
talk_state = 0
end
elseif msgcontains(msg, 'yes') and talk_state == 1 then
talk_state = 0
if getPlayerItemCount(cid,6566) == 10 then
if doPlayerRemoveItem(cid,6566, 10) == TRUE then
selfSay('Here you are', cid)
doPlayerAddItem(cid, 6529, 1)
end
else
selfSay('You do not have the required items.', cid)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Este também não funcionou, ele diz que eu não tenho o stuffed dragon. Será que tem algo errado com essa parte do NPC ?

 

 

<npc name="Cid Estranho" script="data/npc/scripts/stuffeddragon.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>
<look type="134" head="78" body="88" legs="0" feet="88" addons="3"/>
<parameters>
<parameter key="message_greet" value="Yes." />
<parameter key="message_farewell" value="Tchau." />
<parameter key="message_walkaway" value="Tchau." />
</parameters>
</npc>

 

Desculpem minha ignorância no assunto referente a scripts, eu juro que tento entender. haha

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

  • 0

 

 

 

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 creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
if msgcontains(msg, 'hi') then
selfSay('Deseja trocar uma {stuffed dragon} por uma {infernal bolt}?', cid)
end
if msgcontains(msg, 'stuffed dragon') then
if getPlayerItemCount(cid,6566) >= 1 then
selfSay('Did you bring me the Stuffed Dragon?', cid)
talk_state = 1
else
selfSay('I need a {Stuffed Dragon}, to give you a Infernal Bolt. Come back when you have them.', cid)
talk_state = 0
end
elseif msgcontains(msg, 'yes') and talk_state == 1 then
talk_state = 0
if getPlayerItemCount(cid,6566) == 10 then
if doPlayerRemoveItem(cid,6566, 10) == TRUE then
selfSay('Here you are', cid)
doPlayerAddItem(cid, 6529, 1)
end
else
selfSay('You do not have the required items.', cid)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Obrigado por me corrigir mas também tem outro erro, que foi meu inclusive

 

if getPlayerItemCount(cid,6566) == 10 then
if doPlayerRemoveItem(cid,6566, 10) == TRUE then
Substitua essa parte por essa aqui:
if getPlayerItemCount(cid,6566) == 1 then
if doPlayerRemoveItem(cid,6566, 1) == TRUE then

Do jeito que estava, ele estava pedindo 10 stuffed dragon, como você está usando 1 stuffed pra testar, ele logicamente diria que você não tem os items, desculpe pela demora, não estava em frente ao pc

Link para o comentário
Compartilhar em outros sites

  • 0

 

Substitua essa parte por essa aqui:

 

if getPlayerItemCount(cid,6566) == 1 then

if doPlayerRemoveItem(cid,6566, 1) == TRUE then

 

Do jeito que estava, ele estava pedindo 10 stuffed dragon, como você está usando 1 stuffed pra testar, ele logicamente diria que você não tem os items, desculpe pela demora, não estava em frente ao pc

 

Ele continua dizendo que eu não tenho os itens: You do not have the required items.

 

estou com o Stuffed Dragon na Backpack:

03:41 You see a stuffed dragon.
It weighs 8.50 oz.
ItemID: [6566].
Position: [X: 815] [Y: 533] [Z: 7].
Link para o comentário
Compartilhar em outros sites

  • 0

Não tenho certeza de onde errei, acho que é por causa da versão do server, eu estou trabalhando em um 8.50.. kk

Então dei uma editada, configurando os ids e arrumando as falas.. Tente ai.

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 

if(msgcontains(msg, 'list')) then
selfSay('I can change Infernal Bolt for {Stuffed Dragon}', cid)
elseif(msgcontains(msg, 'stuffed dragon')) then
selfSay('Do you want to exchange a Stuffed Dragon for a Infernal Bolt?', cid)
talkState[talkUser] = 1

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then 
if(doPlayerRemoveItem(cid, 6566, 1) == true) then
selfSay('Thank You!', cid)
doPlayerAddItem(cid, 6529, 1)
talkState[talkUser] = 0 
else
selfSay('You dont have the Stuffed Dragon', cid)
talkState[talkUser] = 0 
end 
end 
return TRUE 
end

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

Espero que desta vez funcione.

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

  • 0

Ae !! Agora funcionou certinho, muito obrigado mesmo Marco.

 

Mas aproveitando aqui, posso tirar mais uma dúvida? Acho que essa é mais simples. Quando eu falo "hi" para o npc ele apenas diz: "Yes." e todo o dialogo sobre a troca nao aparece. Você sabe por que?

 

Vou estudar bastante esse script que funcionou, preciso aprender! haha

Link para o comentário
Compartilhar em outros sites

  • 0

Isso não é problema do script e sim do que está localizado no NPC

 

 

 

 

<npc name="Cid Estranho" script="data/npc/scripts/stuffeddragon.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>
<look type="134" head="78" body="88" legs="0" feet="88" addons="3"/>
<parameters>
<parameter key="message_greet" value="Yes." />
<parameter key="message_farewell" value="Tchau." />
<parameter key="message_walkaway" value="Tchau." />
</parameters>
</npc>

 

 

Troque isso:

<parameter key="message_greet" value="Yes." />

Por isso:

<parameter key="message_greet" value="Hello |PLAYERNAME| I can change a {Stuffed Dragon} for a Infernal Bolt"/>
Link para o comentário
Compartilhar em outros sites

  • 0

Sensacional!

 

Nem sei como te agradecer Marco, você me livrou de uma dor de cabeça chata demais! kkk

 

Muito obrigado mesmo pela paciencia e competencia.

 

@Duvida Sanada

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...