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

NPC Help

Cloow

Active Member
Joined
May 10, 2010
Messages
1,086
Reaction score
35
When trying to say hi to these npcs this console error appears.
Ekxot.png


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 north from here. 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


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 (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

I know it's the "getDistance" function but I can't see what else should be there.
an update/fix to these scripts i'll be very grateful :D and ofcourse rep+ :D

9.31, 0.2.11.2 distro
 
Back
Top