• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Lua NPC don't work

Fiodor

Lua & Maps
Joined
Mar 14, 2009
Messages
400
Reaction score
10
Location
Poland
NPC don't work. I copyed npc from tfs 0.2.5 for 8.5 to crying damson 0.3.5. When I say "hi" npc doesn't answer
Lua Script Error: [Npc interface]
data/npc/scripts/seller.lua:onCreatureSay

data/npc/lib/npcsystem/npchandler.lua:539: attempt to call global 'getDistanceTo' (a nil value)
stack traceback:
data/npc/lib/npcsystem/npchandler.lua:539: in function 'isInRange'
data/npc/lib/npcsystem/npchandler.lua:365: in function 'onCreatureSay'
data/npc/scripts/seller.lua:8: in function <data/npc/scripts/seller.lua:8>

Lua Script Error: [Npc interface]
data/npc/scripts/default.lua:onCreatureSay

data/npc/lib/npcsystem/npchandler.lua:539: attempt to call global 'getDistanceTo' (a nil value)
stack traceback:
data/npc/lib/npcsystem/npchandler.lua:539: in function 'isInRange'
data/npc/lib/npcsystem/npchandler.lua:365: in function 'onCreatureSay'
data/npc/scripts/default.lua:7: in function <data/npc/scripts/default.lua:7>

Lua Script Error: [Npc interface]
data/npc/scripts/addons.lua:onCreatureSay

data/npc/lib/npcsystem/npchandler.lua:539: attempt to call global 'getDistanceTo' (a nil value)
stack traceback:
data/npc/lib/npcsystem/npchandler.lua:539: in function 'isInRange'
data/npc/lib/npcsystem/npchandler.lua:365: in function 'onCreatureSay'
data/npc/scripts/addons.lua:8: in function <data/npc/scripts/addons.lua:8>
 
This is the fix for default.lua
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

npcHandler:addModule(FocusModule:new())

This is the fix for addons.lua
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 buyAddons(cid, message, keywords, parameters, node)
	--TODO: buyAddons function in modules.lua
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local addon = parameters.addon
	local cost = parameters.cost
	local premium = (parameters.premium ~= nil and parameters.premium)

	if isPlayerPremiumCallback == nil or (isPlayerPremiumCallback(cid) and premium) then
		if doPlayerRemoveMoney(cid, cost) then
			doPlayerAddAddons(cid, addon)
			npcHandler:say('There, you are now able to use all addons!', cid)
		else
			npcHandler:say('Sorry, you do not have enough money.', cid)
		end
	else
		npcHandler:say('I only serve customers with premium accounts.', cid)
	end

	keywordHandler:moveUp(1)
	return true
end

local node1 = keywordHandler:addKeyword({'first addon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to buy the first addons set for 5000 gold coins?'})
	node1:addChildKeyword({'yes'}, buyAddons, {addon = 1, cost = 5000, premium = true})
	node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Too expensive, eh?'})

local node2 = keywordHandler:addKeyword({'second addon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Would you like to buy the second addons set for 10000 gold coins?'})
	node2:addChildKeyword({'yes'}, buyAddons, {addon = 2, cost = 10000, premium = true})
	node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Too expensive, eh?'})

keywordHandler:addKeyword({'addon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I sell the first addons set for 5000 gold coins and the second addons set for 10000 gold coins.'})

npcHandler:addModule(FocusModule:new())
 
Back
Top