Ir para conteúdo
  • 0

Erro em Npc


koete

Pergunta

pow eu to tentando fazer um npc que pega 10 items seu e te da 1 outro

 

ele começa falando quando vc diz Hi assim:

 

<parameter key="message_greet" value="Ola, deseja que eu purifique qual tipo de pedra? {Turquoise}, {Diamond}, {Onix}, {Emerald}, {Ruby}, {Jasmine}, {Gold} ou {Chairo}?" /> 

 

 

mas... eu não consigo fazer com que o player escolha um desses sempre da error no end... ou if...

alguem pode me ajudar? o script ta aqui

 

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

msg = string.lower(msg)

---------

 

 

 

if (msgcontains(msg, 'chairo') or msgcontains(msg, 'trocar chairo')) then

selfSay("Okay, lhe darei 1 [Chairo Fusu Ma] a cada 10 [Chairo] que você me der. Deseja que eu purifique 10 Chairos para voce?", cid)

talkState[talkUser] = 1

return true

end

 

if (msgcontains(msg, 'turquoise') or msgcontains(msg, 'trocar turquoise')) then

selfSay("Okay, lhe darei 1 [Turquoise Fusu Ma] a cada 10 [Turquoise] que você me der. Deseja que eu purifique 10 Turquoise para voce?", cid)

talkState[talkUser] = 3

return true

end

 

if (msgcontains(msg, 'onix') or msgcontains(msg, 'trocar onix')) then

selfSay("Okay, lhe darei 1 [Onix Fusu Ma] a cada 10 [Onix] que você me der. Deseja que eu purifique 10 Onix para voce?", cid)

talkState[talkUser] = 5

return true

end

 

if (msgcontains(msg, 'diamond') or msgcontains(msg, 'trocar diamond')) then

selfSay("Okay, lhe darei 1 [Diamond Fusu Ma] a cada 10 [Diamond] que você me der. Deseja que eu purifique 10 Diamond para voce?", cid)

talkState[talkUser] = 7

return true

end

 

if (msgcontains(msg, 'emerald') or msgcontains(msg, 'trocar emerald')) then

selfSay("Okay, lhe darei 1 [Emerald Fusu Ma] a cada 10 [Emerald] que você me der. Deseja que eu purifique 10 Emerald para voce?", cid)

talkState[talkUser] = 9

return true

end

 

if (msgcontains(msg, 'ruby') or msgcontains(msg, 'trocar ruby')) then

selfSay("Okay, lhe darei 1 [Ruby Fusu Ma] a cada 10 [Ruby] que você me der. Deseja que eu purifique 10 Ruby para voce?", cid)

talkState[talkUser] = 11

return true

end

 

if (msgcontains(msg, 'jasmine') or msgcontains(msg, 'trocar jasmine')) then

selfSay("Okay, lhe darei 1 [Jasmine Fusu Ma] a cada 10 [Jasmine] que você me der. Deseja que eu purifique 10 Jasmine para voce?", cid)

talkState[talkUser] = 13

return true

end

 

if (msgcontains(msg, 'gold') or msgcontains(msg, 'trocar gold')) then

selfSay("Okay, lhe darei 1 [Gold Fusu Ma] a cada 10 [Gold] que você me der. Deseja que eu purifique 10 Gold para voce?", cid)

talkState[talkUser] = 15

return true

end

 

 

 

 

 

 

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then

selfSay("Ok... se voce ja tiver os 10 Chairos diga {terminar}.", cid)

talkState[talkUser] = 2

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 3 then

selfSay("Ok... se voce ja tiver os 10 Turquoise diga {terminar}.", cid)

talkState[talkUser] = 4

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 5 then

selfSay("Ok... se voce ja tiver os 10 Onix diga {terminar}.", cid)

talkState[talkUser] = 6

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 7 then

selfSay("Ok... se voce ja tiver os 10 Diamond diga {terminar}.", cid)

talkState[talkUser] = 8

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 9 then

selfSay("Ok... se voce ja tiver os 10 Emerald diga {terminar}.", cid)

talkState[talkUser] = 10

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 11 then

selfSay("Ok... se voce ja tiver os 10 Ruby diga {terminar}.", cid)

talkState[talkUser] = 12

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 13 then

selfSay("Ok... se voce ja tiver os 10 Jasmine diga {terminar}.", cid)

talkState[talkUser] = 14

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 15 then

selfSay("Ok... se voce ja tiver os 10 Gold diga {terminar}.", cid)

talkState[talkUser] = 16

end

 

 

 

 

 

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3071) < 10 and talkState[talkUser] == 2 then

selfSay("Desculpe, mas você não tem Chairo suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Chairo Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3037, 1)

doPlayerRemoveItem(cid, 3071, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 2998) < 10 and talkState[talkUser] == 4 then

selfSay("Desculpe, mas você não tem Turquoise suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Turquoise Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3043, 1)

doPlayerRemoveItem(cid, 2998, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 2999) < 10 and talkState[talkUser] == 6 then

selfSay("Desculpe, mas você não tem Onix suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Onix Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3042, 1)

doPlayerRemoveItem(cid, 2999, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3000) < 10 and talkState[talkUser] == 8 then

selfSay("Desculpe, mas você não tem Diamond suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Diamond Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3036, 1)

doPlayerRemoveItem(cid, 3000, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3001) < 10 and talkState[talkUser] == 10 then

selfSay("Desculpe, mas você não tem Emerald suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Emerald Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3038, 1)

doPlayerRemoveItem(cid, 3001, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3002) < 10 and talkState[talkUser] == 12 then

selfSay("Desculpe, mas você não tem Ruby suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Ruby Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3041, 1)

doPlayerRemoveItem(cid, 3002, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3003) < 10 and talkState[talkUser] == 14 then

 

selfSay("Desculpe, mas você não tem Jasmine suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Jasmine Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3040, 1)

doPlayerRemoveItem(cid, 3003, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3004) < 10 and talkState[talkUser] == 16 then

selfSay("Desculpe, mas você não tem Gold suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

return true

end

end

selfSay("muito bom, Aqui esta Sua Gold Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3039, 1)

doPlayerRemoveItem(cid, 3004, 10)

doSendMagicEffect(getThingPos(cid), 27)

return true

end

 

 

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())[/php}

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Tenta 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

msg = string.lower(msg)

---------

 

 

 

if (msgcontains(msg, 'chairo') or msgcontains(msg, 'trocar chairo')) then

selfSay("Okay, lhe darei 1 [Chairo Fusu Ma] a cada 10 [Chairo] que você me der. Deseja que eu purifique 10 Chairos para voce?", cid)

talkState[talkUser] = 1

return true

end

 

if (msgcontains(msg, 'turquoise') or msgcontains(msg, 'trocar turquoise')) then

selfSay("Okay, lhe darei 1 [Turquoise Fusu Ma] a cada 10 [Turquoise] que você me der. Deseja que eu purifique 10 Turquoise para voce?", cid)

talkState[talkUser] = 3

return true

end

 

if (msgcontains(msg, 'onix') or msgcontains(msg, 'trocar onix')) then

selfSay("Okay, lhe darei 1 [Onix Fusu Ma] a cada 10 [Onix] que você me der. Deseja que eu purifique 10 Onix para voce?", cid)

talkState[talkUser] = 5

return true

end

 

if (msgcontains(msg, 'diamond') or msgcontains(msg, 'trocar diamond')) then

selfSay("Okay, lhe darei 1 [Diamond Fusu Ma] a cada 10 [Diamond] que você me der. Deseja que eu purifique 10 Diamond para voce?", cid)

talkState[talkUser] = 7

return true

end

 

if (msgcontains(msg, 'emerald') or msgcontains(msg, 'trocar emerald')) then

selfSay("Okay, lhe darei 1 [Emerald Fusu Ma] a cada 10 [Emerald] que você me der. Deseja que eu purifique 10 Emerald para voce?", cid)

talkState[talkUser] = 9

return true

end

 

if (msgcontains(msg, 'ruby') or msgcontains(msg, 'trocar ruby')) then

selfSay("Okay, lhe darei 1 [Ruby Fusu Ma] a cada 10 [Ruby] que você me der. Deseja que eu purifique 10 Ruby para voce?", cid)

talkState[talkUser] = 11

return true

end

 

if (msgcontains(msg, 'jasmine') or msgcontains(msg, 'trocar jasmine')) then

selfSay("Okay, lhe darei 1 [Jasmine Fusu Ma] a cada 10 [Jasmine] que você me der. Deseja que eu purifique 10 Jasmine para voce?", cid)

talkState[talkUser] = 13

return true

end

 

if (msgcontains(msg, 'gold') or msgcontains(msg, 'trocar gold')) then

selfSay("Okay, lhe darei 1 [Gold Fusu Ma] a cada 10 [Gold] que você me der. Deseja que eu purifique 10 Gold para voce?", cid)

talkState[talkUser] = 15

return true

end

 

 

 

 

 

 

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then

selfSay("Ok... se voce ja tiver os 10 Chairos diga {terminar}.", cid)

talkState[talkUser] = 2

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 3 then

selfSay("Ok... se voce ja tiver os 10 Turquoise diga {terminar}.", cid)

talkState[talkUser] = 4

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 5 then

selfSay("Ok... se voce ja tiver os 10 Onix diga {terminar}.", cid)

talkState[talkUser] = 6

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 7 then

selfSay("Ok... se voce ja tiver os 10 Diamond diga {terminar}.", cid)

talkState[talkUser] = 8

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 9 then

selfSay("Ok... se voce ja tiver os 10 Emerald diga {terminar}.", cid)

talkState[talkUser] = 10

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 11 then

selfSay("Ok... se voce ja tiver os 10 Ruby diga {terminar}.", cid)

talkState[talkUser] = 12

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 13 then

selfSay("Ok... se voce ja tiver os 10 Jasmine diga {terminar}.", cid)

talkState[talkUser] = 14

end

 

 

if (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 15 then

selfSay("Ok... se voce ja tiver os 10 Gold diga {terminar}.", cid)

talkState[talkUser] = 16

end

 

 

 

 

 

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3071) < 10 and talkState[talkUser] == 2 then

selfSay("Desculpe, mas você não tem Chairo suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

if doPlayerRemoveItem(cid, 3071, 10) then

selfSay("muito bom, Aqui esta Sua Chairo Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3037, 1)

doSendMagicEffect(getThingPos(cid), 27)

end

return true

end

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 2998) < 10 and talkState[talkUser] == 4 then

selfSay("Desculpe, mas você não tem Turquoise suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

selfSay("muito bom, Aqui esta Sua Turquoise Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3043, 1)

doPlayerRemoveItem(cid, 2998, 10)

doSendMagicEffect(getThingPos(cid), 27)

end

return true

end

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 2999) < 10 and talkState[talkUser] == 6 then

selfSay("Desculpe, mas você não tem Onix suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

if doPlayerRemoveItem(cid, 2999, 10) then

selfSay("muito bom, Aqui esta Sua Onix Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3042, 1)

doSendMagicEffect(getThingPos(cid), 27)

end

return true

end

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3000) < 10 and talkState[talkUser] == 8 then

selfSay("Desculpe, mas você não tem Diamond suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

if doPlayerRemoveItem(cid, 3000, 10) then

selfSay("muito bom, Aqui esta Sua Diamond Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3036, 1)

doSendMagicEffect(getThingPos(cid), 27)

end

return true

end

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3001) < 10 and talkState[talkUser] == 10 then

selfSay("Desculpe, mas você não tem Emerald suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

if doPlayerRemoveItem(cid, 3001, 10) then

selfSay("muito bom, Aqui esta Sua Emerald Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3038, 1)

doSendMagicEffect(getThingPos(cid), 27)

return true

end

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3002) < 10 and talkState[talkUser] == 12 then

selfSay("Desculpe, mas você não tem Ruby suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

if doPlayerRemoveItem(cid, 3002, 10) then

selfSay("muito bom, Aqui esta Sua Ruby Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3041, 1)

doSendMagicEffect(getThingPos(cid), 27)

return true

end

 

 

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3003) < 10 and talkState[talkUser] == 14 then

 

selfSay("Desculpe, mas você não tem Jasmine suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

if doPlayerRemoveItem(cid, 3003, 10) then

selfSay("muito bom, Aqui esta Sua Jasmine Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3040, 1)

doSendMagicEffect(getThingPos(cid), 27)

end

return true

end

 

if msgcontains(msg, 'terminar') and getPlayerItemCount(cid, 3004) < 10 and talkState[talkUser] == 16 then

selfSay("Desculpe, mas você não tem Gold suficiente, volte quando tiver!", cid)

talkState[talkUser] = 0

elseif doPlayerRemoveItem(cid, 3004, 10) then

selfSay("muito bom, Aqui esta Sua Gold Fusu Ma!", cid)

talkState[talkUser] = 0

doPlayerAddItem(cid, 3039, 1)

doSendMagicEffect(getThingPos(cid), 27)

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0

estranho... deu um error aqui

[12/03/2013 23:02:10] data/npc/lib/npc.lua:54: attempt to index local 'message' (a nil value)
[12/03/2013 23:02:10] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/npcminer.lua

 

Aconselho você fazer igual o Roksas, usa o script em spoiler, pra não ocupar espaço no tópico. (muito espaço!)

pow... percebi isso tambem valew mas como faz isso?

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

×
×
  • Criar Novo...