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

Solved Error on Login, creaturescripts.

Blez

eh..
Joined
Dec 21, 2010
Messages
3,045
Reaction score
740
Location
Hell, Caymen Islands
Code:
function onLogin(cid)
    local player = Player(cid)

    local loginStr = "Welcome to " .. configManager.getString(configKeys.SERVER_NAME) .. "!"
    if player:getLastLoginSaved() <= 0 then
        loginStr = loginStr .. " Please choose your outfit."
        player:sendOutfitWindow()
    else
        if loginStr ~= "" then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
        end

        loginStr = string.format("Your last visit was on %s.", os.date("%a %b %d %X %Y", player:getLastLoginSaved()))
    end
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)

    player:registerEvent("PlayerDeath")
   
    -- custom
    player:registerEvent("demonOakDeath")
    player:registerEvent("demonOakLogout")
    player:registerEvent("pvparena")
    player:registerEvent("SpellUp")
    player:registerEvent("KillingInTheNameOf")
    player:registerEvent("taskw")
    player:registerEvent("PlayerArena")
    player:registerEvent("ArenaKill")
   
    if getPlayerStorageValue(cid,17101) == 1 then
        setPlayerStorageValue(cid,17101,0)
    end
    if getPlayerStorageValue(cid,17102) > 1 then
    if getPlayerStorageValue(cid,17102) < os.time() then
    doPlayerRemoveMount(cid, 22)
    doPlayerRemoveMount(cid, 23)
    doPlayerRemoveMount(cid, 24)
    doCreatureChangeOutfit(cid,{lookType = getCreatureOutfit(cid).lookType, lookHead =  getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons})
    doPlayerSendTextMessage(cid,18,"Your horse contract has ended.")
    doCreatureSetStorage(cid, 17102, 0)
    end
    end
    return true
end
 

Attachments

Looks like you are missing some functions from your compat.lua

Could you please post your compat.lua, your creatureevents/scripts/slot.lua, and your /creatureevents/scripts/demonOak.lua files please
 
slot.lua
Code:
local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
for i=1,300 do
    conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50)
    setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1)
    setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)

    conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51)
    setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1)
    setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)

    conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52)
    setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1)
    setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 100+i)


    conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i)


    conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i)

    conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)
end

function getSlotType(n)
    if not n then
        return false
    end
    if n:match('%[(.+)%]') then
        n = n:match('%[(.+)%]')
        if n == '?' then
            return 0,n
        else
            return n:match('(.-)%.([+-])(%d+)%%')
        end
    else
        return false
    end
end

local function loadSet(cid)
    local t = {}
    for slot=1,9 do
        t[slot] = ''
        local s = getPlayerSlotItem(cid,slot).uid
        if s ~= 0 then
            t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
        end
    end
    return t
end

function chk(cid,f)
    if not isPlayer(cid) then return false end
    local t = loadSet(cid)
    for i=1,#f do
        if f[i] ~= t[i] then
            equip(cid,nil,slot)
            break
        end
    end
    addEvent(chk,2000,cid,t)
end

function check_slot(aab, i)
    if i == 5 or i == 6 then
        if isWeapon(aab) or isShield(aab) or isBow(aab) then
            return true
        end
    else
        return true
    end
return false
end

function equip(cid,item,slot)
    local t = {}
    if item then
        local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION))
        t[mm] = tonumber(qto)
    end
    for i=1,9 do
        if i ~= slot then
            if getPlayerSlotItem(cid,i).itemid ~= 0 then
                local aab = getPlayerSlotItem(cid,i).uid
                if aab and check_slot(aab,i) then
                    for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do
                        local mm,sinal,qto2 = getSlotType(_)
                        if mm then
                            if not t[mm] then
                                t[mm] = 0
                            end
                            t[mm] = t[mm]+tonumber(qto2)
                            t[mm] = t[mm] > 300 and 300 or t[mm]
                        end
                    end
                end
            end
        end
    end
    local fu = 0
    local ca = {}
    local s = ''
    for sl,n in pairs(t) do
        fu = fu+1
        s = s..''..n..'% more of '..sl..'\n'
        if sl == 'hp' then
            doAddCondition(cid,conditionHP[tonumber(n)])
            Player(cid):addHealth(Player(cid):getMaxHealth() - Player(cid):getHealth())
            ca[50] = 1
            doSendTutorial(cid,19)
        elseif sl == 'mp' then
            doAddCondition(cid,conditionMP[tonumber(n)])
            Player(cid):addMana(Player(cid):getMaxMana() - Player(cid):getMana())
            ca[51] = 1
            doSendTutorial(cid,19)
        elseif sl == 'ml' then
            doAddCondition(cid,conditionML[tonumber(n)])
            ca[52] = 1
        elseif sl == 'melee' then
            doAddCondition(cid,conditionCLUB[tonumber(n)])
            ca[53] = 1
        elseif sl == 'shield' then
            doAddCondition(cid,conditionSHI[tonumber(n)])
            ca[54] = 1
        elseif sl == 'dist' then
            doAddCondition(cid,conditionDIST[tonumber(n)])
            ca[55] = 1
        end
    end
    if fu > 0 then
        for i=50,55 do
            if not ca[i] then
                doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
            end
        end
    else
        for i=50,55 do
            doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
        end
    end
    return true
end

function onLogin(cid)
        equip(cid,nil,slot)
        addEvent(chk,2000,cid,loadSet(cid))
        return true
end
ZAQmHI5A6.png
 
It would seem as if you are missing some functions from compat.lua, or it isn't loading....

does your compat.lua have this:

Code:
  function getItemAttack(uid) return ItemType(getThing(uid).itemid):getAttack() end
   function getItemDefense(uid) return ItemType(getThing(uid).itemid):getDefense() end
   function getItemArmor(uid) return ItemType(getThing(uid).itemid):getArmor() end
   function getItemWeaponType(uid) return ItemType(getThing(uid).itemid):getWeaponType() end
   function isArmor(uid) if (getItemArmor(uid) ~= 0 and getItemWeaponType(uid) == 0) then return true else return false end end
   function isWeapon(uid) return (getItemWeaponType(uid) > 0 and getItemWeaponType(uid) ~= 4) end
   function isShield(uid) return getItemWeaponType(uid) == 4 end
   function isBow(uid) return (getItemWeaponType(uid) == 5 and (not ItemType(getThing(uid).itemid):isStackable())) end
 
Back
Top