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

Demon oak npcs

Minimii

New Member
Joined
Dec 3, 2008
Messages
749
Reaction score
3
Location
Sweden, Piteå
The Demon oak npcs is bugged on my server, I get error message like these
[28/02/2009 03:03:32] Lua Script Error: [Npc interface]
[28/02/2009 03:03:32] data/npc/scripts/oak info.lua:eek:nCreatureSay

[28/02/2009 03:03:32] data/npc/scripts/oak info.lua:36: attempt to compare nil with number
[28/02/2009 03:03:32] stack traceback:
[28/02/2009 03:03:32] data/npc/scripts/oak info.lua:36: in function <data/npc/scripts/oak info.lua:33>
and

[28/02/2009 03:04:10] Lua Script Error: [Npc interface]
[28/02/2009 03:04:10] data/npc/scripts/demon oak monk.lua:eek:nCreatureSay

[28/02/2009 03:04:10] data/npc/scripts/demon oak monk.lua:43: attempt to compare nil with number
[28/02/2009 03:04:10] stack traceback:
[28/02/2009 03:04:10] data/npc/scripts/demon oak monk.lua:43: in function <data/npc/scripts/demon oak monk.lua:33>

Anyone that can help me?

Also getting error message when trying to buy promotion

[28/02/2009 03:06:45] Lua Script Error: [Npc interface]
[28/02/2009 03:06:45] data/npc/scripts/promotion.lua:eek:nCreatureSay

[28/02/2009 03:06:45] data/npc/lib/npcsystem/modules.lua:79: attempt to call global 'getPlayerPromotionLevel' (a nil value)
[28/02/2009 03:06:45] stack traceback:
[28/02/2009 03:06:45] data/npc/lib/npcsystem/modules.lua:79: in function 'callback'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/npchandler.lua:371: in function 'onCreatureSay'
[28/02/2009 03:06:46] data/npc/scripts/promotion.lua:7: in function <data/npc/scripts/promotion.lua:7>
 
can you post the script 2
but in code tag

If you mean the "monk" well here it is
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)
end

function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye then.')
focus = 0
talk_start = 0
end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
local player_gold = getPlayerItemCount(cid,2148)
local player_plat = getPlayerItemCount(cid,2152)*100
local player_crys = getPlayerItemCount(cid,2160)*10000
local player_money = player_gold + player_plat + player_crys
local playerCap = getPlayerFreeCap(cid)
local item = 8293 --Hallowed Axe
local itemweight = getItemWeight(item, 1)
msg = string.lower(msg)

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
selfSay('Hi. Im the Demon Oak Monk. I can either sell you an Hallowed axe or tell you about Demon Oak.')
focus = cid
talk_start = os.clock()

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('You will have to wait, ' .. getPlayerName(cid) .. '.')

elseif focus == cid then
talk_start = os.clock()

if msgcontains(msg, 'hallowed axe') then
if getPlayerItemCount(cid,2386) >= 1 and player_money >= 1000000 then
doPlayerTakeItem(cid,2386,1)
doPlayerRemoveMoney(cid,1000000)
doPlayerAddItem(cid,item,1)
else
selfSay('Please bring with you an axe. The only way to get an axe, is to show your knowledge in the knowledge quest. Come back when you have done it and take a bunch of cash with you!')
end
end

if msgcontains(msg, 'demon oak') then
if getPlayerStorageValue(cid,21545) == 1 then
selfSay('Good job, you defeated the Demon Oak! Now search for the secret grave!')
setPlayerStorageValue(cid,21545,2)
else
selfSay('Go defeat the demon oak.')
end
end
if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Good bye, ' .. getPlayerName(cid) .. '!')
focus = 0
end
end
end


function onThink()

if (os.clock() - talk_start) > 30 then
if focus > 0 then
selfSay('Next Please...')
end
focus = 0
end
if focus ~= 0 then
if getDistanceToCreature(focus) > 2 then
selfSay('Good bye then.')
focus = 0
end
end
end
 
Code:
[28/02/2009 03:06:45] Lua Script Error: [Npc interface]
[28/02/2009 03:06:45] data/npc/scripts/promotion.luanCreatureSay

[28/02/2009 03:06:45] data/npc/lib/npcsystem/modules.lua:79: attempt to call global 'getPlayerPromotionLevel' (a nil value)
[28/02/2009 03:06:45] stack traceback:
[28/02/2009 03:06:45] data/npc/lib/npcsystem/modules.lua:79: in function 'callback'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/npchandler.lua:371: in function 'onCreatureSay'
[28/02/2009 03:06:46] data/npc/scripts/promotion.lua:7: in function <data/npc/scripts/promotion.lua:7>

In case of this error, you have to use the Promotion NPC from TFS 0.2
 
Code:
[28/02/2009 03:06:45] Lua Script Error: [Npc interface]
[28/02/2009 03:06:45] data/npc/scripts/promotion.luanCreatureSay

[28/02/2009 03:06:45] data/npc/lib/npcsystem/modules.lua:79: attempt to call global 'getPlayerPromotionLevel' (a nil value)
[28/02/2009 03:06:45] stack traceback:
[28/02/2009 03:06:45] data/npc/lib/npcsystem/modules.lua:79: in function 'callback'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
[28/02/2009 03:06:46] data/npc/lib/npcsystem/npchandler.lua:371: in function 'onCreatureSay'
[28/02/2009 03:06:46] data/npc/scripts/promotion.lua:7: in function <data/npc/scripts/promotion.lua:7>

In case of this error, you have to use the Promotion NPC from TFS 0.2

I've downloaded the npcs from tfs 0.2 mystic spirit, still doesn't work.
 
Code:
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)
end

function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye then.')
focus = 0
talk_start = 0
end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
local player_gold = getPlayerItemCount(cid,2148)
local player_plat = getPlayerItemCount(cid,2152)*100
local player_crys = getPlayerItemCount(cid,2160)*10000
local player_money = player_gold + player_plat + player_crys
local playerCap = getPlayerFreeCap(cid)
local item = 8293 --Hallowed Axe
local itemweight = getItemWeight(item, 1)
msg = string.lower(msg)

if(msgcontains(msg, 'hi') and getDistanceToCreature(cid) < 4) then
selfSay('Hi. Im the Demon Oak Monk. I can either sell you an Hallowed axe or tell you about Demon Oak.')
focus = cid
talk_start = os.clock()

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('You will have to wait, ' .. getPlayerName(cid) .. '.')

elseif focus == cid then
talk_start = os.clock()

if msgcontains(msg, 'hallowed axe') then
if getPlayerItemCount(cid,2386) >= 1 and player_money >= 1000000 then
doPlayerTakeItem(cid,2386,1)
doPlayerRemoveMoney(cid,1000000)
doPlayerAddItem(cid,item,1)
else
selfSay('Please bring with you an axe. The only way to get an axe, is to show your knowledge in the knowledge quest. Come back when you have done it and take a bunch of cash with you!')
end
end

if msgcontains(msg, 'demon oak') then
if getPlayerStorageValue(cid,21545) == 1 then
selfSay('Good job, you defeated the Demon Oak! Now search for the secret grave!')
setPlayerStorageValue(cid,21545,2)
else
selfSay('Go defeat the demon oak.')
end
end
if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Good bye, ' .. getPlayerName(cid) .. '!')
focus = 0
end
end
end


function onThink()

if (os.clock() - talk_start) > 30 then
if focus > 0 then
selfSay('Next Please...')
end
focus = 0
end
if focus ~= 0 then
if getDistanceToCreature(focus) > 2 then
selfSay('Good bye then.')
focus = 0
end
end
end

also use this promotion NPC:

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

local node1 = keywordHandler:addKeyword({'promot'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?'})
	node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 20000, level = 20, promotion = 1, text = 'Congratulations! You are now promoted.'})
	node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true})

npcHandler:addModule(FocusModule:new())
 
Code:
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)
end

function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye then.')
focus = 0
talk_start = 0
end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
local player_gold = getPlayerItemCount(cid,2148)
local player_plat = getPlayerItemCount(cid,2152)*100
local player_crys = getPlayerItemCount(cid,2160)*10000
local player_money = player_gold + player_plat + player_crys
local playerCap = getPlayerFreeCap(cid)
local item = 8293 --Hallowed Axe
local itemweight = getItemWeight(item, 1)
msg = string.lower(msg)

if(msgcontains(msg, 'hi') and getDistanceToCreature(cid) < 4) then
selfSay('Hi. Im the Demon Oak Monk. I can either sell you an Hallowed axe or tell you about Demon Oak.')
focus = cid
talk_start = os.clock()

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('You will have to wait, ' .. getPlayerName(cid) .. '.')

elseif focus == cid then
talk_start = os.clock()

if msgcontains(msg, 'hallowed axe') then
if getPlayerItemCount(cid,2386) >= 1 and player_money >= 1000000 then
doPlayerTakeItem(cid,2386,1)
doPlayerRemoveMoney(cid,1000000)
doPlayerAddItem(cid,item,1)
else
selfSay('Please bring with you an axe. The only way to get an axe, is to show your knowledge in the knowledge quest. Come back when you have done it and take a bunch of cash with you!')
end
end

if msgcontains(msg, 'demon oak') then
if getPlayerStorageValue(cid,21545) == 1 then
selfSay('Good job, you defeated the Demon Oak! Now search for the secret grave!')
setPlayerStorageValue(cid,21545,2)
else
selfSay('Go defeat the demon oak.')
end
end
if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Good bye, ' .. getPlayerName(cid) .. '!')
focus = 0
end
end
end


function onThink()

if (os.clock() - talk_start) > 30 then
if focus > 0 then
selfSay('Next Please...')
end
focus = 0
end
if focus ~= 0 then
if getDistanceToCreature(focus) > 2 then
selfSay('Good bye then.')
focus = 0
end
end
end

also use this promotion NPC:

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

local node1 = keywordHandler:addKeyword({'promot'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?'})
	node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 20000, level = 20, promotion = 1, text = 'Congratulations! You are now promoted.'})
	node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true})

npcHandler:addModule(FocusModule:new())

I'll try them, but what about Demon Oak Info?

This is the Demon Oak Info script but what shall be changed to make it work?

Code:
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)
end

function onCreatureDisappear(cid, pos)
	if focus == cid then
		selfSay('Good bye then.')
		focus = 0
		talk_start = 0
	end
end


function onCreatureTurn(creature)
	
end


function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
msg = string.lower(msg)

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
selfSay('Hi '..getPlayerName(cid)..'. Before you dare facing the Demon Oak, you should talk to my brother. Last time I heard from him he had settled down in a cave in the Sultans Castle. He had managed to dig a cave below his throne. Talk to him and then come back and ask me about the DEMON OAK.')
focus = cid
talk_start = os.clock()

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')

elseif focus == cid then
talk_start = os.clock()

if msgcontains(msg, 'demon oak') then
selfSay('So, you talked to my brother? Head south from here and use the mighty axe on the Oaks arms. If you defeat him, go talk to my brother again and ask him about the DEMON OAK.')
end

if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
focus = 0
talk_start = 0
end
end
end

function onThink()

if (os.clock() - talk_start) > 15 then
if focus > 0 then
selfSay('Next Please...')
end
focus = 0
end
if focus ~= 0 then
if getDistanceToCreature(focus) > 2 then
selfSay('Good bye then.')
focus = 0
end
end
end
 
Last edited:
then I don't have any idea ; p. But I think that's something wrong with focus. Btw. this NPC is made in old NPCsystem, I don't really have time to remake those :<, sorry.. But there is one NPC that works on this forum (in a Szakal's topic). Just few modifications and this gonna do the trick ;d
 
I had the same problem but i fixed this, i dont really remeber how :p but i think it was like this

The thing npc is trying to do a command that dosent exist in the global.lua

Please rep if it worked ;P
 
Back
Top