• 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 for broken amulet (take 4 item, give 1) simple error, stumped need help

Taurus

Texass
Joined
Jan 11, 2009
Messages
616
Solutions
2
Reaction score
30
Location
United States
So here's my error message

Code:
[4:4:13.989] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/amulet repair.xml).
[4:4:13.989] Info: failed to load external entity "data/npc/amulet repair.xml"


[4:4:17.787] [Error - LuaInterface::loadFile] data/npc/scripts/blue_legs_quest_npc.lua:52: 'end' expected (to close 'if' at line 27) near '<eof>'
[4:4:17.787] [Warning - NpcEvents::NpcEvents] Cannot load script: data/npc/scripts/blue_legs_quest_npc.lua
[4:4:17.787] data/npc/scripts/blue_legs_quest_npc.lua:52: 'end' expected (to close 'if' at line 27) near '<eof>'
[4:5:24.225] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/amulet repair.xml).
[4:5:24.225] Info: failed to load external entity "data/npc/amulet repair.xml"

and here is the script it refers to.

LUA:
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

    -- use the real conversation? (true/false)
    real = false
    
    if real == true then
        tradeMsg = 'I can fix all the four pieces of the broken amulet into one!'
        fourpobaMsg = 'Do you want me to fix all the four pieces of that broken amulet?'
        hasNoMsg = 'You need all four piece of the broken amulet to get all, or I can\'t fix it!'
        noMsg = 'I have no time, I\'m a busy man, LEAVE!'
    else
        tradeMsg = 'I can fix all the four pieces of the broken amulet into one!'
        fourpobaMsg = 'Do you want me to fix all the four pieces of that broken amulet?'
        hasNoMsg = 'You need all four piece of the broken amulet to get all, or I can\'t fix it!'
        noMsg = 'I have no time, I\'m a busy man, LEAVE!'
    end
        if msgcontains(msg, 'trade') or msgcontains(msg, 'fix') then
            selfSay(tradeMsg)
        elseif msgcontains(msg, 'change') or msgcontains(msg, 'piece') or msgcontains(msg, 'four') then
            selfSay(fourpobaMsg)
            talk_state = 1
------------------------------------------------ confirm yes ------------------------------------------------
        elseif msgcontains(msg, 'yes') and talk_state == 1 then
            if getPlayerItemCount(cid,8262) >= 1 then
            if getPlayerItemCount(cid,8263) >= 1 then
            if getPlayerItemCount(cid,8264) >= 1 then
            if getPlayerItemCount(cid,8265) >= 1 then
                if doPlayerTakeItem(cid,8262,1) == 0 then
                if doPlayerTakeItem(cid,8263,1) == 0 then
                if doPlayerTakeItem(cid,8264,1) == 0 then
                if doPlayerTakeItem(cid,8265,1) == 0 then
                    selfSay('Here you are.')
                    doPlayerAddItem(cid,8266,1)
                end
            else
                selfSay(hasNoMsg)
            end
            talk_state = 0

------------------------------------------------ confirm no ------------------------------------------------
        elseif msgcontains(msg, 'no') and (talk_state == 1) then
            selfSay(noMsg)
            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())

Using 0.3.6, thanks for any help. I am not attached to this npc, if you have one that works better for this purpose please post for rep++ :)

Thanks a lot!
 
Back
Top