• 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 Rush Event Error- bestplayer.lua and 034-exhaustion.lua

Daniel Kopeć

Member
Joined
Dec 8, 2018
Messages
125
Solutions
4
Reaction score
12
Location
Poland
I get this error in the console when starting the Rush event ;/

error best player.png

Rush Event xml script:

XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Rush Event" version="1.0" author="ChaitoSoft.com" contact="[email protected]" enabled="no">
    <config name="re"><![CDATA[
         t = {
            a = 32145,
            g = 32146,
            l = 32147,
            u = 32148,
            h = 32149,
            wv = 32150,
            c = 0,
                  q = "Rush Event zostal rozpoczety, milej zabawy!",
            f = 5447,
            f_1 = 5448,
            f_2 = 5449,
                  d_1 = {x = 16841, y = 16411, z = 7}, -- red temple
                  d_2 = {x = 16898, y = 16379, z = 7}, -- blue temple
                  x = "Event anulowany, poniewaz zbyt malo chetnych osób do wziecia udzialu.",
                  w = {x = 16871, y = 16457, z = 7},
            lvl = 200,
            v = 50,
            mn = 6,
            m = 40,
                  o = "Event zakonczony, Team CZERWONYCH wygral walke!",
                  y = "Event zakonczony, Team NIEBIESKICH wygral walke!",
            i_1 = 2157,
            i_2 = 1,
            t = 3,
            r = 5
        }
    ]]></config>
<globalevent name="Recognition" interval="150000" event="script"><![CDATA[
    domodlib('re')
    function onThink(interval, lastExecution, thinkInterval)
        if(getGlobalStorageValue(t.a) == 1) then
            for _, pid in ipairs(getPlayersOnline()) do
                if getPlayerStorageValue(pid, t.f) == 1 then
                    if(getPlayerStorageValue(pid, t.f_1) == 0) then
                        doSendAnimatedText(getCreaturePosition(pid), "RED TEAM", TEXTCOLOR_RED)
                    elseif(getPlayerStorageValue(pid, t.f_1) == 1) then
                        doSendAnimatedText(getCreaturePosition(pid), "BLUE TEAM", TEXTCOLOR_LIGHTBLUE)
                    end
                end
            end
            return true
        end
        return true
    end
]]></globalevent>
<talkaction words="!start" event="script"><![CDATA[
    domodlib('re')
    function onSay(cid, words, param, channel)
        if getPlayerGroupId(cid) > 3 then
            setGlobalStorageValue(t.g, 1)
            setGlobalStorageValue(t.u, 0)
            setGlobalStorageValue(t.l, 0)
            setGlobalStorageValue(t.a, 1)
            setGlobalStorageValue(t.c, 0)
            setGlobalStorageValue(t.wv, 0)
            doBroadcastMessage("Rush Event: Jesli chcesz dolaczyc wpisz komende: !rush, walka za ".. t.t .." minuty. ", MESSAGE_STATUS_WARNING)
            addEvent(function()
                  doBroadcastMessage("Rush Event, startuje za 2 minuty. Jesli chcesz dolaczyc, wpisz komende: !rush", MESSAGE_STATUS_WARNING)
            end, (t.t - 2) * 1000 * 60)
            addEvent(function()
                  doBroadcastMessage("Rush Event, startuje za 1 minute. Jesli chcesz dolaczyc, wpisz komende: !rush", MESSAGE_STATUS_WARNING)
            end, (t.t - 1) * 1000 * 60)
            addEvent(start, t.t * 1000 * 60)
            return true
        end
        return true
    end
    function results()
        if(getGlobalStorageValue(t.a) == 1) then
            local red = getGlobalStorageValue(t.l)
            local blue = getGlobalStorageValue(t.u)          
            doBroadcastMessage("Rush Event, wyniki:\nTeam Czerwonych zdobyl: ".. red .." fragów.\nTeam Niebieskich zdobyl: ".. blue .." fragów.\nWalka trwa do ".. t.v .." fragów.", MESSAGE_STATUS_WARNING)
            addEvent(results, t.r * 1000 * 60)
        end
    end
    function start()
        if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then
            doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING)
            setGlobalStorageValue(t.wv, 1)
            addEvent(results, t.r * 1000 * 60)
            for _, pid in ipairs(getPlayersOnline()) do  
                local myOutfit = getCreatureOutfit(pid)
                local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}
                local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}  
                if getPlayerStorageValue(pid, t.f) == 1 then
                    doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
                    doCreatureAddMana(pid, getCreatureMaxMana(pid))  
                    if((getPlayerStorageValue(pid, t.g) % 2) == 1) then
                        doCreatureChangeOutfit(pid, red)
                        setPlayerStorageValue(pid, t.h, 0)
                        doTeleportThing(pid, t.d_1)
                        setPlayerStorageValue(pid, t.f, 1)
                        setPlayerStorageValue(pid, t.f_1, 0)
                        setPlayerStorageValue(pid, t.f_2, 1)
                        doSendMagicEffect(getCreaturePosition(pid), 10)
                                    doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Jestes w Teamie Czerwonych!\nWalka bedzie trwala do ".. t.v .." fragów, Powodzenia!")
                    else
                        doCreatureChangeOutfit(pid, blue)
                        doTeleportThing(pid, t.d_2)
                        setPlayerStorageValue(pid, t.h, 0)
                        setPlayerStorageValue(pid, t.f, 1)
                        setPlayerStorageValue(pid, t.f_1, 1)
                        setPlayerStorageValue(pid, t.f_2, 0)
                        doSendMagicEffect(getCreaturePosition(pid), 10)
                                    doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Jestes w Teamie Niebieskich!\nWalka bedzie trwala do ".. t.v .." fragów, Powodzenia!")
                    end
                end
            end
        elseif(getGlobalStorageValue(t.c) < t.mn) then
            doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING)
            setGlobalStorageValue(t.a, 0)
            for _, pid in ipairs(getPlayersOnline()) do
                if getPlayerStorageValue(pid, t.f) == 1 then
                    setPlayerStorageValue(pid, t.f, -1)
                    doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                    doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT)
                end
            end
        end
    end
]]></talkaction>
    <globalevent name="RushStart" time="17:34" event="script"><![CDATA[
        domodlib('re')
        function onTime(interval, lastExecution)
            setGlobalStorageValue(t.g, 1)
            setGlobalStorageValue(t.u, 0)
            setGlobalStorageValue(t.l, 0)
            setGlobalStorageValue(t.a, 1)
            setGlobalStorageValue(t.c, 0)
            setGlobalStorageValue(t.wv, 0)
            doBroadcastMessage("Attention! Immediately register to Rush Event, event will start for ".. t.t .." minutes. All players can join to event typing this command: !rush", MESSAGE_STATUS_WARNING)
            addEvent(start, t.t * 1000 * 60)
        end
        function results()
            if(getGlobalStorageValue(t.a) == 1) then
                local red = getGlobalStorageValue(t.l)
                local blue = getGlobalStorageValue(t.u)          
                doBroadcastMessage("Rush Event, wyniki:\nTeam Czerwonych zdobyl: ".. red .." fragów.\nTeam Niebieskich zdobyl: ".. blue .." fragów.\nWalka trwa do ".. t.v .." fragów.", MESSAGE_STATUS_WARNING)
                addEvent(results, t.r * 1000 * 60)
            end
        end
        function start()
            if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then
                doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING)
                setGlobalStorageValue(t.wv, 1)
                addEvent(results, t.r * 1000 * 60)
                for _, pid in ipairs(getPlayersOnline()) do  
                    local myOutfit = getCreatureOutfit(pid)
                    local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}
                    local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}  
                    if getPlayerStorageValue(pid, t.f) == 1 then
                        doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
                        doCreatureAddMana(pid, getCreatureMaxMana(pid))  
                        if((getPlayerStorageValue(pid, t.g) % 2) == 1) then
                            doCreatureChangeOutfit(pid, red)
                            setPlayerStorageValue(pid, t.h, 0)
                            doTeleportThing(pid, t.d_1)
                            setPlayerStorageValue(pid, t.f, 1)
                            setPlayerStorageValue(pid, t.f_1, 0)
                            setPlayerStorageValue(pid, t.f_2, 1)
                            doSendMagicEffect(getCreaturePosition(pid), 10)
                            doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Jestes w Teamie Czerwonych!\nWalka bedzie trwala do ".. t.v .." fragów, Powodzenia!")
                        else
                            doCreatureChangeOutfit(pid, blue)
                            setPlayerStorageValue(pid, t.h, 0)
                            doTeleportThing(pid, t.d_2)
                            setPlayerStorageValue(pid, t.f, 1)
                            setPlayerStorageValue(pid, t.f_1, 1)
                            setPlayerStorageValue(pid, t.f_2, 0)
                            doSendMagicEffect(getCreaturePosition(pid), 10)
                            doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Jestes w Teamie Niebieskich!\nWalka bedzie trwala do ".. t.v .." fragów, Powodzenia!")
                        end
                    end
                end
            elseif(getGlobalStorageValue(t.c) < t.mn) then
                doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING)
                setGlobalStorageValue(t.a, 0)
                for _, pid in ipairs(getPlayersOnline()) do
                    if getPlayerStorageValue(pid, t.f) == 1 then
                        setPlayerStorageValue(pid, t.f, -1)
                        doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                        doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT)
                    end
                end
            end
        end
    ]]></globalevent>
<talkaction words="!rush" event="script"><![CDATA[
    domodlib('re')
    function onSay(cid, words, param, channel)
    local ip = getPlayerIp(cid)
    local name = getCreatureName(cid)
    for _, v in ipairs(getPlayersOnline()) do
        if getPlayerStorageValue(v, t.f) == 1 and cid ~= v then
                if ip == getPlayerIp(v) then
                    return doShowTextDialog(cid, 9733, "Nie mozesz uzywac MC w tym evencie!")
                end
            end
    end
        if getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.wv) ~= 1 then
            if getPlayerLevel(cid) >= t.lvl then
                if getPlayerStorageValue(cid, t.f) == -1 then
                    if getTilePzInfo(getPlayerPosition(cid)) == true then
                        if getGlobalStorageValue(t.c) < t.m then
                            setGlobalStorageValue(t.c, getGlobalStorageValue(t.c)+1)
                            if getGlobalStorageValue(t.c) == t.m then
                                doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!")
                            else  
                                doBroadcastMessage("" .. getPlayerName(cid) .. " dolaczyl do Rush Eventu! Aktualnie mamy: " .. getGlobalStorageValue(t.c) .. " graczy!", 19)
                            end
                            setPlayerStorageValue(cid, t.f, 1)
                            setPlayerStorageValue(cid, t.h, -1)
                            doTeleportThing(cid, t.w)
                            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
                            setPlayerStorageValue(cid, t.g, getGlobalStorageValue(t.g))
                            setGlobalStorageValue(t.g, tonumber(getGlobalStorageValue(t.g))+1)
                        else
                            doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!")
                            return true
                        end
                    else
                  doPlayerSendCancel(cid, "Musisz byc w protection zone [PZ].")
                  return true
               end
            else
               doPlayerSendCancel(cid, "Jestes juz zarejestrowany w tym evencie.")
               return true
            end
         else
            doPlayerSendCancel(cid, "Minimalny level do wziecia udzialu w walce to 250.")
            return true
         end          
      else
         doPlayerSendCancel(cid, "W chwili obecnej event jest nieczynny.")
         return true
      end
      return true
   end
]]></talkaction>
<event type="combat" name="RushCombat" event="script"><![CDATA[
    domodlib('re')
    function onCombat(cid, target)
        if(getGlobalStorageValue(t.a) == 1) then
            if isPlayer(cid) and isPlayer(target) then
                if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then
                    if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then
                        return doPlayerSendCancel(cid, "Niestety, nie mozna atakowac swojego zespolu.") and false
                    end
                end
            end
        end
        return true
    end
]]></event>
<event type="attack" name="RushAttack" event="script"><![CDATA[
    domodlib('re')
    function onAttack(cid, target)
        if(getGlobalStorageValue(t.a) == 1) then
            if isPlayer(cid) and isPlayer(target) then
                if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then
                    if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then
                        return doPlayerSendCancel(cid, "Niestety, nie mozna atakowac swojego zespolu.") and false
                    end
                end
            end
        end
        return true
    end
]]></event>
<event type="preparedeath" name="RushDead" event="script"><![CDATA[
    domodlib('re')
    function onPrepareDeath(cid, deathList)
        if(not isPlayer(cid)) then
            return true
        end
        if getGlobalStorageValue(t.a) == 1 then
            local strings = {""}
            local j, position, corpse = 1, 1, 0
            for _, pid in ipairs(deathList) do
                if isCreature(pid) == true then
                    strings[position] = j == 1 and "" or strings[position] .. ", "
                    strings[position] = strings[position] .. getCreatureName(pid) .. ""
                    j = j + 1
                else
                    strings[position] = j == 1 and "" or strings[position] .. ", "
                    strings[position] = strings[position] .."a field item"
                    j = j + 1
                end
            end
            for i, str in ipairs(strings) do
                if(str:sub(str:len()) ~= ",") then
                    str = str .. "."
                end
                desc = "You recognize "
                desc = desc .. "" .. getCreatureName(cid) .. ". He was killed by " .. str
            end
            if(getPlayerSex(cid) == 1) then
                corpse = doCreateItem(3058, getCreaturePosition(cid))
            else
                corpse = doCreateItem(3065, getCreaturePosition(cid))
            end
            doItemSetAttribute(corpse, "description", desc)
            if((getPlayerStorageValue(cid, t.g) % 2) == 1) then
                setGlobalStorageValue(t.u, getGlobalStorageValue(t.u)+1)
            else
                setGlobalStorageValue(t.l, getGlobalStorageValue(t.l)+1)
            end
            local red = getGlobalStorageValue(t.l)
            local blue = getGlobalStorageValue(t.u)
            if blue < t.v or red < t.v then  
                if(isPlayer(cid) == false) then
                    return true
                end      
                if((getPlayerStorageValue(cid, t.g) % 2) == 1) then
                    doTeleportThing(cid, t.d_1)
                    doSendMagicEffect(getCreaturePosition(cid), 10)
                    doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
                    doCreatureAddMana(cid, getCreatureMaxMana(cid))
                    doPlayerRemoveLethalConditions(cid)
                    if getCreatureSkullType(cid) == SKULL_WHITE then
                        doCreatureSetSkullType(cid, 0)
                    end
                else
                    doTeleportThing(cid, t.d_2)
                    doSendMagicEffect(getCreaturePosition(cid), 10)
                    doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
                    doCreatureAddMana(cid, getCreatureMaxMana(cid))
                    doPlayerRemoveLethalConditions(cid)
                    if getCreatureSkullType(cid) == SKULL_WHITE then
                        doCreatureSetSkullType(cid, 0)
                    end
                end  
            end
            if blue >= t.v then
                doBroadcastMessage(t.y, MESSAGE_STATUS_WARNING)
                setGlobalStorageValue(t.h, 1)
                for _, pid in ipairs(getPlayersOnline()) do
                    if(getPlayerStorageValue(pid, t.f_1) == 1) then
                        doPlayerAddItem(pid, t.i_1, t.i_2)
                    end
                end
            elseif red >= t.v then
                doBroadcastMessage(t.o, MESSAGE_STATUS_WARNING)
                setGlobalStorageValue(t.h, 1)
                for _, pid in ipairs(getPlayersOnline()) do
                    if(getPlayerStorageValue(pid, t.f_2) == 1) then
                        doPlayerAddItem(pid, t.i_1, t.i_2)
                    end
                end
            end
            if getGlobalStorageValue(t.h) == 1 then
                setGlobalStorageValue(t.a, 0)
                setGlobalStorageValue(t.h, 0)
                setGlobalStorageValue(t.wv, -1)
                setPlayerStorageValue(cid, t.f, -1)
                setPlayerStorageValue(cid, t.g, 0)
                setPlayerStorageValue(cid, t.l, 0)
                setPlayerStorageValue(cid, t.u, 0)
                setPlayerStorageValue(cid, t.f_1, -1)
                setPlayerStorageValue(cid, t.f_2, -1)
                setPlayerStorageValue(cid, t.h, -1)
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true)
                doSendMagicEffect(getCreaturePosition(cid), 10)
                doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
                doCreatureAddMana(cid, getCreatureMaxMana(cid))
                doPlayerRemoveLethalConditions(cid)
                for _, pid in ipairs(getPlayersOnline()) do
                    if(getPlayerStorageValue(pid, t.f_1) == 1 or getPlayerStorageValue(pid, t.f_2) == 1) then
                        setPlayerStorageValue(pid, t.f, -1)
                        doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                        doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT)
                        setPlayerStorageValue(pid, t.g, 0)
                        setPlayerStorageValue(pid, t.l, 0)
                        setPlayerStorageValue(pid, t.u, 0)
                        setPlayerStorageValue(pid, t.f_1, -1)
                        setPlayerStorageValue(pid, t.f_2, -1)
                        setPlayerStorageValue(pid, t.h, -1)
                        doCreatureAddHealth(pid, getCreatureMaxHealth(pid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
                        doCreatureAddMana(pid, getCreatureMaxMana(pid))
                        doPlayerRemoveLethalConditions(pid)
                    end
                end
                return false
            end
            return false
        end
        return true
    end
]]></event>
<event type="outfit" name="RushOutfit" event="script"><![CDATA[
    domodlib('re')
    function onOutfit(cid, old, current)
        if(getGlobalStorageValue(t.a) == 1) then
            if getPlayerGroupId(cid) > 3 then
                return true
            end
            if getPlayerStorageValue(cid, t.h) == 0 then
                if getPlayerStorageValue(cid, t.f) > -1 then
                    doPlayerSendCancel(cid, "Nie mozna zmienic stroju podczas eventu.")
                    return false
                end
            end
        end
        return true
    end
]]></event>
</mod>

bestplayer.lua

Lua:
local all = 1550 -- uid posagu ktory pokazuje najlepszego gracza na Materii
local verbania =
{
    [1552] = {1, "sorcerer"},
    [1553] = {2, "druid"},
    [1554] = {3, "paladin"},
    [1551] = {4, "knight"},
}
function onLook(cid, item, position, lookDistance)
if(not exhaustion.check(cid, 388, 20)) then
    return true
end
    if item.uid == all then
    c = db.getResult("SELECT `level`,`name` FROM `players` ORDER BY `level` DESC LIMIT 1;")
    Level = c:getDataInt('level')
    Name = c:getDataString('name')
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "" .. Name .. " (".. Level .." lvl) is currently the best player on the server.")
    return false
    end
    tab = verbania[item.uid]
    if(tab == nil) then
        return true
    end
    c = db.getResult("SELECT `level`,`name` FROM `players` WHERE `vocation` = '"..tab[1].."' ORDER BY `level` DESC LIMIT 1;")
    Level = c:getDataInt('level')
    Name = c:getDataString('name')
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "" .. Name .. " (".. Level .." lvl) is currently the best "..tab[2].." on the server.")
end

034-exhaustion.lua

Lua:
exhaustion =
{
    check = function (cid, storage)
        if(getPlayerStorageValue(cid, storage) >= os.time(t)) then
            return TRUE
        end

        return FALSE
    end,

    get = function (cid, storage)
        local exhaust = getPlayerStorageValue(cid, storage)
        if(exhaust > 0) then
            local left = exhaust - os.time(t)
            if(left >= 0) then
                return left
            end
        end

        return FALSE
    end,

    set = function (cid, storage, time)
        setPlayerStorageValue(cid, storage, os.time(t) + time)
    end,

    make = function (cid, storage, time)
        local exhaust = exhaustion.get(cid, storage)
        if(not exhaust) then
            exhaustion.set(cid, storage, time)
            return TRUE
        end

        return false
    end
}
 
Top