• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

[Help] Oldrak, demon oak quest NPC

Serginov

Onkonkoronkonk
Joined
Jun 28, 2008
Messages
1,321
Reaction score
18
Location
Sweden - Dalarna
I need help with this script;

Code:
-- WAS NOT Made by Coltain13 // Coltain, I only made it work for TFS --


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

-- OTServ event handling functions start
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
-- OTServ event handling functions 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
        playerCap = getPlayerFreeCap(cid)
        item = 8293 --Hallowed Axe
        itemweight = getItemWeight(item, 1)
        
        if msgcontains(msg, 'hallowed axe') then
            if isPlayer(cid) then
                if getPlayerItemCount(cid,2386) >= 1 and player_money >= 50000 then
                    selfSay('Do you want to buy a Hallowed Axe from me?')
                    talk_state = 1
                else
                    selfSay('You have to bring me an axe and 50000 gp first.')
                    talk_state = 0
                end
            else
                selfSay('You need premium to buy this axe from me.')
                talk_state = 0
            end
        elseif msgcontains(msg, 'yes') and talk_state == 1 then
            talk_state = 0
            if getPlayerItemCount(cid,2386) >= 1 and player_money >= 50000 then
                    if doPlayerTakeItem(cid,2386,1) == 0 and doPlayerRemoveMoney(cid,50000) == TRUE then
                        selfSay('Here you are. You can now defeat the demon oak with this axe.')
                        doPlayerAddItem(cid,8293,1)
                        talk_state = 0
                    else
                        selfSay('The Hallowed Axe is too heavy for you. Make sure that you have enough capacity.')
                        talk_state = 0
                    end
            else
                selfSay('Please bring with you an axe and enough with money.')
                talk_state = 0
            end
        elseif msgcontains(msg, 'demon oak') then
            if getPlayerStorageValue(cid,20000) == 1 and getPlayerStorageValue(cid,20001) == 1 and getPlayerStorageValue(cid,20002) == 1 and getPlayerStorageValue(cid,20003) == 1 then
                selfSay('Did you defeat the demon oak?')
                talk_state = 2
            else
                selfSay('Go defeat the demon oak.')
                talk_state = 0
            end
        elseif msgcontains(msg, 'yes') and talk_state == 2 then
            talk_state = 0
            if getPlayerStorageValue(cid,20000) == 1 and getPlayerStorageValue(cid,20001) == 1 and getPlayerStorageValue(cid,20002) == 1 and getPlayerStorageValue(cid,20003) == 1 then
                setPlayerStorageValue(cid,20004,1)
                selfSay('Good job!')
            end
------------------------------------------------ confirm no ------------------------------------------------
        elseif msgcontains(msg, 'no') and (talk_state >= 1 and talk_state <= 1) then
            selfSay('Ok thanks.')
            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())

The NPC does not reply when i say 'hallowed axe' or 'demon oak'. He just replies on 'hi' :/
No Error massage :s
I use TFS
 
Last edited:
change the if(npcHandler.focus ~= cid) to if(not npcHandler:isFocused(cid))

and also selfSay('') to npcHandler:say('', cid)

should at least fix the problem with not replying.
 
Back
Top