When I updated to TFS 0.2.10, I replaced my npcsystem with the one from tfs.
Now, when I talk to an npc, it answers to hi, and, to keywords and to keywords in the creatureSayCallback function, but when I say a shop keywork, i get this error in console:
This is one of my npc scripts:
thanks in advance =\
Now, when I talk to an npc, it answers to hi, and, to keywords and to keywords in the creatureSayCallback function, but when I say a shop keywork, i get this error in console:
Code:
Lua Script Error: [Npc interface]
data/npc/scripts/seller.lua:onCreatureSay
data/npc/lib/npcsystem/modules.lua:669: attempt to index global 'npcHandler' (a
nil value)
Code:
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)
-- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.
if(npcHandler.focus ~= cid) then
return false
end
player_gold = getPlayerItemCount(cid,2148)
player_plat = getPlayerItemCount(cid,2152)*100
player_crys = getPlayerItemCount(cid,2160)*10000
player_money = player_gold + player_plat + player_crys
repair_price = 10000
if msgcontains(msg, 'soft boots') or msgcontains(msg, 'magic boots') then
selfSay('Whoa! Those are really rare boots, Do you want me to repair them for '..repair_price..' gold?')
talk_state = 1
elseif msgcontains(msg, 'obsidian knife') or msgcontains(msg, 'obsidian') or msgcontains(msg, 'knife') then
selfSay('Do you want to trade a piece of draconian steel and an obsidian lance for an obsidian knife?')
talk_state = 2
elseif msgcontains(msg, 'green') or msgcontains(msg, 'tunic') or msgcontains(msg, 'green tunic') or msgcontains(msg, 'green piece of cloth') then
selfSay('Do you want trade 20 green tunics for a green piece of cloth?')
talk_state = 3
elseif msgcontains(msg, 'red') or msgcontains(msg, 'robe') or msgcontains(msg, 'red robe') or msgcontains(msg, 'red piece of cloth') then
selfSay('Do you want trade a red robe for a red piece of cloth?')
talk_state = 4
elseif msgcontains(msg, 'blue') or msgcontains(msg, 'turban') or msgcontains(msg, 'mystic turban') or msgcontains(msg, 'blue piece of cloth') then
selfSay('Do you want trade a mystic turban for a blue piece of cloth?')
talk_state = 5
------------------------------------------------ confirm yes ------------------------------------------------
elseif msgcontains(msg, 'yes') and talk_state == 1 then
if getPlayerItemCount(cid,6530) >= 1 and player_money > repair_price then
if doPlayerTakeItem(cid,6530,1) == 0 then
if pay(cid,repair_price) then
selfSay('Here you are.')
doPlayerAddItem(cid,6132,1)
else
selfSay('Sorry, you don\'t have enough money.')
end
else
selfSay('Sorry, you don\'t have the worn soft boots.')
end
else
end
talk_state = 0
elseif msgcontains(msg, 'yes') and talk_state == 2 then
if getPlayerItemCount(cid,5889) >= 1 and getPlayerItemCount(cid,2425) >= 1 then
if doPlayerTakeItem(cid,5889,1) == 0 and doPlayerTakeItem(cid,2425,1) == 0 then
selfSay('Here you are.')
doPlayerAddItem(cid,5908,1)
end
else
selfSay('Sorry, you don\'t have the items.')
end
talk_state = 0
elseif msgcontains(msg, 'yes') and talk_state == 3 then
if getPlayerItemCount(cid,2652) >= 20 then
if doPlayerTakeItem(cid,2652,20) == 0 then
selfSay('Here you are.')
doPlayerAddItem(cid,5910,1)
end
else
selfSay('Sorry, you don\'t have the items.')
end
talk_state = 0
elseif msgcontains(msg, 'yes') and talk_state == 4 then
if getPlayerItemCount(cid,2655) >= 1 then
if doPlayerTakeItem(cid,2655,1) == 0 then
selfSay('Here you are.')
doPlayerAddItem(cid,5911,1)
end
else
selfSay('Sorry, you don\'t have the item.')
end
talk_state = 0
elseif msgcontains(msg, 'yes') and talk_state == 5 then
if getPlayerItemCount(cid,2663) >= 1 then
if doPlayerTakeItem(cid,2663,1) == 0 then
selfSay('Here you are.')
doPlayerAddItem(cid,5912,1)
end
else
selfSay('Sorry, you don\'t have the item.')
end
talk_state = 0
------------------------------------------------ confirm no ------------------------------------------------
elseif msgcontains(msg, 'no') and talk_state >= 1 and talk_state <= 5 then
selfSay('Not good enough, is it?.')
talk_state = 0
end
-- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
keywordHandler:addKeyword({'job'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I own this shop. I know how to repair boots too, and I exchange cloths. I also make obsidian knives from some items.'})
keywordHandler:addKeyword({'cloth'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I exchange mystic turbans for blue pieces of cloths, 20 green tunics for green pieces of cloth and red robes for red pieces of clothes.'})
keywordHandler:addKeyword({'bags'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I have brown, blue, jungle, golden, green, grey, purple, red, seastar, fur and yellow bags for 5gps.'})
keywordHandler:addKeyword({'backpacks'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I have brown, blue, jungle, golden, green, grey, purple, red, seastar, fur and yellow backpacks for 10gps.'})
keywordHandler:addKeyword({'tools'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I sell shovels(50gps), picks(100gps), fishing rods(150gps), torches(2gps), lamps(8gps), candles(2gps), ropes(50gps), scythes(50gps), sickles(50gps), fire bugs(100gps) and machetes(35gps).'})
keywordHandler:addKeyword({'offers'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I sell bags and backpacks(in all colors), worms(5gp per sixpack), tools, watches(50gp), footballs(111gp), amulets of loss(10k). I have helmets of the deep, you can rent them for a 5,000 gold coins deposit. I also exchange cloths and obsidian knives. And I repair boots.'})
local shopModule = ShopModule:new()
npcHandler:addModule(shopModule)
--bags
shopModule:addBuyableItem({'blue bag'}, 1995, 5, 'blue bag')
shopModule:addBuyableItem({'jungle bag'}, 3939, 5, 'jungle bag')
shopModule:addBuyableItem({'golden bag'}, 1997, 5, 'golden bag')
shopModule:addBuyableItem({'green bag'}, 1991, 5, 'green bag')
shopModule:addBuyableItem({'grey bag', 'gray back'}, 1996, 5, 'grey bag')
shopModule:addBuyableItem({'purple bag'}, 1994, 5, 'purple bag')
shopModule:addBuyableItem({'red bag'}, 1993, 5, 'red bag')
shopModule:addBuyableItem({'seastar bag'}, 5950, 5, 'seastar bag')
shopModule:addBuyableItem({'yellow bag'}, 1992, 5, 'yellow bag')
shopModule:addBuyableItem({'fur bag'}, 7343, 5, 'fur bag')
shopModule:addBuyableItem({'brown bag', 'bag'}, 1987, 5, 'brown bag')
--backpacks
shopModule:addBuyableItem({'blue backpack'}, 2002, 10, 'blue backpack')
shopModule:addBuyableItem({'jungle backpack'}, 3940, 10, 'jungle backpack')
shopModule:addBuyableItem({'golden backpack'}, 2004, 10, 'golden backpack')
shopModule:addBuyableItem({'green backpack'}, 1998, 10, 'green backpack')
shopModule:addBuyableItem({'grey backpack', 'gray backpack'}, 2003, 10, 'grey backpack')
shopModule:addBuyableItem({'purple backpack'}, 2001, 10, 'purple backpack')
shopModule:addBuyableItem({'red backpack'}, 2000, 10, 'red backpack')
shopModule:addBuyableItem({'seastar backpack'}, 5949, 10, 'seastar backpack')
shopModule:addBuyableItem({'yellow backpack'}, 1999, 10, 'yellow backpack')
shopModule:addBuyableItem({'fur backpack'}, 7342, 10, 'fur backpack')
shopModule:addBuyableItem({'brown backpack', 'backpack'}, 1988, 10, 'brown backpack')
--tools
shopModule:addBuyableItem({'shovel'}, 2554, 50, 'shovel')
shopModule:addBuyableItem({'pick'}, 2553, 100, 'pick')
shopModule:addBuyableItem({'fishing rod'}, 2580, 150, 'fishing rod')
shopModule:addBuyableItem({'torch'}, 2050, 2, 'torch')
shopModule:addBuyableItem({'candle'}, 2047, 2, 'candle')
shopModule:addBuyableItem({'lamp'}, 2044, 8, 'lamp')
shopModule:addBuyableItem({'oil'}, 2006, 20, 11, 'vial of oil')
shopModule:addBuyableItem({'rope'}, 2120, 50, 'rope')
shopModule:addBuyableItem({'scythe'}, 2550, 50, 'scythe')
shopModule:addBuyableItem({'sickle'}, 2405, 50, 'sickle')
shopModule:addBuyableItem({'fire bug'}, 5468, 100, 'fire bug')
shopModule:addBuyableItem({'machete'}, 2420, 35, 'machete')
shopModule:addBuyableItem({'watch'}, 2036, 50, 'watch')
shopModule:addBuyableItem({'football'}, 2109, 111, 'football')
shopModule:addBuyableItem({'amulet of loss', 'aol'}, 2173, 10000, 'amulet of loss')
shopModule:addSellableItem({'helmet of the deep'}, 5461, 5000, 'helmet of the deep')
shopModule:addBuyableItem({'helmet of the deep'}, 5461, 5000, 'helmet of the deep')
shopModule:addBuyableItem({'worm'}, 3976, 5, 1, 'worm')
npcHandler:addModule(FocusModule:new())
thanks in advance =\