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

The Oracle 8.6 bug

carre

Advanced OT User
Joined
Apr 23, 2013
Messages
881
Solutions
1
Reaction score
157
Location
Sweden
Hi otland

Got problem with the the oracle.

when I say hi and then bye.
This happened to my server.

Server tfs 0.3.7 svn

The oracle.lua
Code:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local Topic, vocation, town, destination = {}, {}, {}, {}
local TOWN_ISLANDOFDESTINY = 20
local islandOfDestinyEnabled = false
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 greetCallback(cid)
    if(getPlayerLevel(cid) < 8) then
        npcHandler:say("CHILD! COME BACK WHEN YOU HAVE GROWN UP!", cid)
        return false
    elseif(getPlayerLevel(cid) > 9) then
        npcHandler:say(getCreatureName(cid) .. ", I CAN'T LET YOU LEAVE - YOU ARE TOO STRONG ALREADY! YOU CAN ONLY LEAVE WITH LEVEL 9 OR LOWER.", cid)
        return false
    else
        local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
        Topic[talkUser], vocation[talkUser], town[talkUser], destination[talkUser] = 0, 0, 0, 0
        return true
    end
end
function creatureSayCallback(cid, type, msg)
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    if(not npcHandler:isFocused(cid)) then
        return false
    elseif msgcontains(msg, "yes") and Topic[talkUser] == 0 then
        npcHandler:say(islandOfDestinyEnabled and "I WILL BRING YOU TO THE ISLAND OF DESTINY AND YOU WILL BE UNABLE TO RETURN HERE! ARE YOU SURE?" or "IN WHICH TOWN DO YOU WANT TO LIVE: {CARLIN}, {AB'DENDRIEL}, {KAZORDOON}" .. (isPremium(cid) == TRUE and ", {THAIS}, {VENORE}, {DARASHIA}, {ANKRAHMUN}, {EDRON} OR {PORT HOPE}?" or " OR {THAIS}?"), cid)
        Topic[talkUser] = islandOfDestinyEnabled and 4 or 1
    elseif Topic[talkUser] == 0 then
        npcHandler:unGreet(cid)
    elseif msgcontains(msg, "carlin") and Topic[talkUser] == 1 then
        npcHandler:say("IN CARLIN! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        Topic[talkUser] = 2
        town[talkUser] = 2
        destination[talkUser] = {x=32360, y=31782, z=7}
    elseif msgcontains(msg, "ab'dendriel") and Topic[talkUser] == 1 then
        npcHandler:say("IN AB'DENDRIEL! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        Topic[talkUser] = 2
        town[talkUser] = 3
        destination[talkUser] = {x=32732, y=31634, z=7}
    elseif msgcontains(msg, "kazordoon") and Topic[talkUser] == 1 then
        npcHandler:say("IN KAZORDOON! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        Topic[talkUser] = 2
        town[talkUser] = 4
        destination[talkUser] = {x=32649, y=31925, z=11}
    elseif msgcontains(msg, "thais") and Topic[talkUser] == 1 then
        npcHandler:say("IN THAIS! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        Topic[talkUser] = 2
        town[talkUser] = 5
        destination[talkUser] = {x=32369, y=32241, z=7}
    elseif msgcontains(msg, "venore") and Topic[talkUser] == 1 then
        npcHandler:say("IN VENORE! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        Topic[talkUser] = 2
        town[talkUser] = 6
        destination[talkUser] = {x=32957, y=32076, z=7}
    elseif msgcontains(msg, "darashia") and Topic[talkUser] == 1 then
        if isPremium(cid) == TRUE then
            npcHandler:say("IN DARASHIA! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            Topic[talkUser] = 2
            town[talkUser] = 7
            destination[talkUser] = {x=33213, y=32454, z=1}
        else
            npcHandler:say("YOU NEED A PREMIUM ACCOUNT IN ORDER TO GO THERE!", cid)
            Topic[talkUser] = 1
        end
    elseif msgcontains(msg, "ankrahmun") and Topic[talkUser] == 1 then
        if isPremium(cid) == TRUE then
            npcHandler:say("IN ANKRAHMUN! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            Topic[talkUser] = 2
            town[talkUser] = 8
            destination[talkUser] = {x=33194, y=32853, z=8}
        else
            npcHandler:say("YOU NEED A PREMIUM ACCOUNT IN ORDER TO GO THERE!", cid)
            Topic[talkUser] = 1
        end
    elseif msgcontains(msg, "edron") and Topic[talkUser] == 1 then
        if isPremium(cid) == TRUE then
            npcHandler:say("IN EDRON! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            Topic[talkUser] = 2
            town[talkUser] = 9
            destination[talkUser] = {x=33217, y=31814, z=8}
        else
            npcHandler:say("YOU NEED A PREMIUM ACCOUNT IN ORDER TO GO THERE!", cid)
            Topic[talkUser] = 1
        end
    elseif msgcontains(msg, "port") and msgcontains(msg, "hope") and Topic[talkUser] == 1 then
        if isPremium(cid) == TRUE then
            npcHandler:say("IN PORT HOPE! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            Topic[talkUser] = 2
            town[talkUser] = 10
            destination[talkUser] = {x=32595, y=32744, z=6}
        else
            npcHandler:say("YOU NEED A PREMIUM ACCOUNT IN ORDER TO GO THERE!", cid)
            Topic[talkUser] = 1
        end
    elseif Topic[talkUser] == 1 then
        npcHandler:say("{CARLIN}, {AB'DENDRIEL}, {KAZORDOON}" .. (isPremium(cid) == TRUE and ", {THAIS}, {VENORE}, {DARASHIA}, {ANKRAHMUN}, {EDRON} OR {PORT HOPE}?" or " OR {THAIS}?"), cid)
        Topic[talkUser] = 1
    elseif msgcontains(msg, "sorcerer") and Topic[talkUser] == 2 then
        npcHandler:say("A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
        Topic[talkUser] = 3
        vocation[talkUser] = 1
    elseif msgcontains(msg, "druid") and Topic[talkUser] == 2 then
        npcHandler:say("A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
        Topic[talkUser] = 3
        vocation[talkUser] = 2
    elseif msgcontains(msg, "paladin") and Topic[talkUser] == 2 then
        npcHandler:say("A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
        Topic[talkUser] = 3
        vocation[talkUser] = 3
    elseif msgcontains(msg, "knight") and Topic[talkUser] == 2 then
        npcHandler:say("A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
        Topic[talkUser] = 3
        vocation[talkUser] = 4
    elseif Topic[talkUser] == 2 then
        npcHandler:say("{KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        Topic[talkUser] = 2
    elseif msgcontains(msg, "yes") and Topic[talkUser] == 3 then
        npcHandler:say("SO BE IT!", cid)
        Topic[talkUser] = 0
        doPlayerSetVocation(cid, vocation[talkUser])
        doPlayerSetTown(cid, town[talkUser])
        npcHandler:releaseFocus(cid)
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
        doTeleportThing(cid, destination[talkUser])
        doSendMagicEffect(destination[talkUser], CONST_ME_TELEPORT)
    elseif Topic[talkUser] == 3 then
        npcHandler:unGreet(cid)
    elseif Topic[talkUser] == 4 then
        if msgcontains(msg, "yes") then
            npcHandler:say("SO BE IT!", cid)
            Topic[talkUser] = 0
            doPlayerSetTown(cid, TOWN_ISLANDOFDESTINY)
            npcHandler:releaseFocus(cid)
            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
            doTeleportThing(cid, {x=32091,y=32027,z=7})
            doSendMagicEffect({x=32091,y=32027,z=7}, CONST_ME_TELEPORT)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Welcome to the Island of Destiny. Walk north to find trainers who will help you find a suitable vocation.")
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The surface of this island is a protection zone. You can't attack or regain health here. If you need healing, talk to Yandur.")
            doAddMapMark(cid, {x=32091,y=32027,z=7}, MAPMARK_EXCLAMATION, "Island of Destiny - Training Centre")
            doAddMapMark(cid, {x=32091,y=32027,z=7}, MAPMARK_GREENNORTH, "Ship to Mainland")
        else
            npcHandler:unGreet(cid)
        end
    end
    return TRUE
end
npcHandler:setMessage(MESSAGE_GREET, "|PLAYERNAME|, ARE YOU PREPARED TO FACE YOUR DESTINY?")
npcHandler:setMessage(MESSAGE_WALKAWAY, "COME BACK WHEN YOU ARE PREPARED TO FACE YOUR DESTINY!")
npcHandler:setMessage(MESSAGE_FAREWELL, "COME BACK WHEN YOU ARE PREPARED TO FACE YOUR DESTINY!")
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Pz9KXXwunTT8unFQdPPz87dA.png

Pz4unPzIunPz8unFD8unBwYunPw.png
 
just change
Code:
if(getPlayerLevel(cid) < 8) then
npcHandler:say("CHILD! COME BACK WHEN YOU HAVE GROWN UP!", cid)
return false

since you're lower then lvl 8 you will get that message.
 
try this
C++:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local vocation = {}
local town = {}
local destination = {}

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 function greetCallback(cid)
    local player = Player(cid)
    local level = player:getLevel()
    if level < 8 then
        npcHandler:say("CHILD! COME BACK WHEN YOU HAVE GROWN UP!", cid)
        return false
    elseif level > 9 then
        npcHandler:say(player:getName() .. ", I CAN'T LET YOU LEAVE - YOU ARE TOO STRONG ALREADY! YOU CAN ONLY LEAVE WITH LEVEL 9 OR LOWER.", cid)
        return false
    elseif player:getVocation():getId() > 0 then
        npcHandler:say("YOU ALREADY HAVE A VOCATION!", cid)
        return false
    end
    return true
end

local function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end

    if msgcontains(msg, "yes") and npcHandler.topic[cid] == 0 then
        npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {RHYVES}?", cid)
        npcHandler.topic[cid] = 1
    elseif npcHandler.topic[cid] == 1 then
        if msgcontains(msg, "rhyves") then
            town[cid] = 2
            destination[cid] = Position(159, 387, 6)
            npcHandler:say("IN RHYVES! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            npcHandler.topic[cid] = 2
        else
            npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {RHYVES}?", cid)
        end
    elseif npcHandler.topic[cid] == 2 then
        if msgcontains(msg, "sorcerer") then
            npcHandler:say("A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 1
        elseif msgcontains(msg, "druid") then
            npcHandler:say("A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 2
        elseif msgcontains(msg, "paladin") then
            npcHandler:say("A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 3
        elseif msgcontains(msg, "knight") then
            npcHandler:say("A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 4
        else
            npcHandler:say("{KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        end
    elseif npcHandler.topic[cid] == 3 then
        if msgcontains(msg, "yes") then
            local player = Player(cid)
            npcHandler:say("SO BE IT!", cid)
            player:setVocation(Vocation(vocation[cid]))
            player:setTown(Town(town[cid]))

            local destination = destination[cid]
            npcHandler:releaseFocus(cid)
            player:teleportTo(destination)
            player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
            destination:sendMagicEffect(CONST_ME_TELEPORT)
        else
            npcHandler:say("THEN WHAT? {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            npcHandler.topic[cid] = 2
        end
    end
    return true
end

local function onAddFocus(cid)
    town[cid] = 0
    vocation[cid] = 0
    destination[cid] = 0
end

local function onReleaseFocus(cid)
    town[cid] = nil
    vocation[cid] = nil
    destination[cid] = nil
end

npcHandler:setCallback(CALLBACK_ONADDFOCUS, onAddFocus)
npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus)

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
try this
C++:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local vocation = {}
local town = {}
local destination = {}

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 function greetCallback(cid)
    local player = Player(cid)
    local level = player:getLevel()
    if level < 8 then
        npcHandler:say("CHILD! COME BACK WHEN YOU HAVE GROWN UP!", cid)
        return false
    elseif level > 9 then
        npcHandler:say(player:getName() .. ", I CAN'T LET YOU LEAVE - YOU ARE TOO STRONG ALREADY! YOU CAN ONLY LEAVE WITH LEVEL 9 OR LOWER.", cid)
        return false
    elseif player:getVocation():getId() > 0 then
        npcHandler:say("YOU ALREADY HAVE A VOCATION!", cid)
        return false
    end
    return true
end

local function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end

    if msgcontains(msg, "yes") and npcHandler.topic[cid] == 0 then
        npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {RHYVES}?", cid)
        npcHandler.topic[cid] = 1
    elseif npcHandler.topic[cid] == 1 then
        if msgcontains(msg, "rhyves") then
            town[cid] = 2
            destination[cid] = Position(159, 387, 6)
            npcHandler:say("IN RHYVES! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            npcHandler.topic[cid] = 2
        else
            npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {RHYVES}?", cid)
        end
    elseif npcHandler.topic[cid] == 2 then
        if msgcontains(msg, "sorcerer") then
            npcHandler:say("A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 1
        elseif msgcontains(msg, "druid") then
            npcHandler:say("A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 2
        elseif msgcontains(msg, "paladin") then
            npcHandler:say("A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 3
        elseif msgcontains(msg, "knight") then
            npcHandler:say("A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = 4
        else
            npcHandler:say("{KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        end
    elseif npcHandler.topic[cid] == 3 then
        if msgcontains(msg, "yes") then
            local player = Player(cid)
            npcHandler:say("SO BE IT!", cid)
            player:setVocation(Vocation(vocation[cid]))
            player:setTown(Town(town[cid]))

            local destination = destination[cid]
            npcHandler:releaseFocus(cid)
            player:teleportTo(destination)
            player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
            destination:sendMagicEffect(CONST_ME_TELEPORT)
        else
            npcHandler:say("THEN WHAT? {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            npcHandler.topic[cid] = 2
        end
    end
    return true
end

local function onAddFocus(cid)
    town[cid] = 0
    vocation[cid] = 0
    destination[cid] = 0
end

local function onReleaseFocus(cid)
    town[cid] = nil
    vocation[cid] = nil
    destination[cid] = nil
end

npcHandler:setCallback(CALLBACK_ONADDFOCUS, onAddFocus)
npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus)

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
same bug again.
 
Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Seymour" script="data/npc/scripts/Seymour.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="128" head="116" body="69" legs="87" feet="20" addons="0"/>
</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

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