• 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 Problem with my zombie mod

Godz4t4n1c

New Member
Joined
Sep 9, 2015
Messages
51
Reaction score
1
Good I have a problem with my zombie mod, it came to me by default and I think it never activates, the problem if I install a zombie system in all the files of the data, it pulls me a lot of bug because my server is War, I could be given a hand with my mod?

Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Zombie Event" version="1.00" author="kawon" contact="otland.net" enabled="yes">
<globalevent name="zombieevent" time="19:09" event="buffer"><![CDATA[
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
    zombieCount = 2002, -- Global storage for counting the zombies in the event
    teleportActionId = 2000, -- Action id of the teleport needed for the movement script
    teleportPosition = {x = 1008, y = 1003, z = 7, stackpos = 1}, -- Where the teleport will be created
    teleportToPosition = {x = 1536, y = 389, z = 7}, -- Where the teleport will take you
    teleportId = 1387, -- Id of the teleport
    timeToStartEvent = 2, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
    timeBetweenSpawns = 30, -- Seconds between each spawn of zombie
    zombieName = "event zombie", -- Name of the zombie that should be summoned
    playersNeededToStartEvent = 2, -- Players needed before the zombies can spawn.
   
    -- Should be the same as in the creaturescript!
    -- The zombies will spawn randomly inside this area
    fromPosition = {x = 1518, y = 371, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1553, y = 404, z = 7}, -- bottom right cornor of the playground
    }

function onTimer()
    local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
    doItemSetAttribute(tp, "aid", config.teleportActionId)
    doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
    setGlobalStorageValue(config.playerCount, 0)
    setGlobalStorageValue(config.zombieCount, 0)
    addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
    print(getGlobalStorageValue(2001))
end

function startEvent()
    local get = getThingfromPos(config.teleportPosition)
    if get.itemid == config.teleportId then
        doRemoveItem(get.uid, 1)
    end
   
    local fromp, top = config.fromPosition, config.toPosition

    if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
       
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                    getPlayers = getThingfromPos(areapos)
                    if isPlayer(getPlayers.uid) then
                        doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                    end
                end
            end
        end
    else
        doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
        for x = fromp.x, top.x do
            for y = fromp.y, top.y do
                for z = fromp.z, top.z do
                    areapos = {x = x, y = y, z = z, stackpos = 253}
                    getPlayers = getThingfromPos(areapos)
                    if isPlayer(getPlayers.uid) then
                        doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                        doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                    end
                end
            end
        end
    end
end

function spawnZombie()
    if getGlobalStorageValue(config.playerCount) >= 2 then
        pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
        doSummonCreature(config.zombieName, pos)
        doSendMagicEffect(pos, CONST_ME_MORTAREA)
        setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
        doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
        addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
    end
end       
    ]]></globalevent>
   
<movevent type="StepIn" actionid="2000" event="buffer"><![CDATA[
local config = {
    playerCount = 2001, -- Global storage for counting the players in the event
    maxPlayers = 10, -- Max players who can participate
   
    }
   
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    if getGlobalStorageValue(config.playerCount) < config.maxPlayers then
        setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)
        if getGlobalStorageValue(config.playerCount) == config.maxPlayers then
            doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")
        else   
            doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)
        end   
    else
        addEvent(tpBack, 1000, cid, fromPosition)
        doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")
        return false
    end
    print(getStorage(config.playerCount) .. " Players in the zombie event.")
    return true
end

function tpBack(cid, fromPosition)
    doTeleportThing(cid, fromPosition, true)
    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
end       
    ]]></movevent>
<event type="statschange" name="zombieevent" event="script"><![CDATA[
local config = {
    playerCount = 2001, -- Global storage for counting the players left/entered in the event
   
    goblet = 5805, -- id of the gold goblet you'll get when finishing the event.
    rewards = {2195, 2152, 2160}, -- You will get this +  a gold goblet with your name on.
    --        {moneyId, count, using? 1 for using moneyReward, 0 for not using.}
    moneyReward = {2160, 10, 1}, -- second collumn(count) 0 if you don't want money to be used. or a stackable item you want more than 1 of.
   
    -- Should be same as in the globalevent!
    -- The zombies will spawn randomly inside this area
    fromPosition = {x = 1518, y = 371, z = 7}, -- top left cornor of the playground
    toPosition = {x = 1553, y = 404, z = 7}, -- bottom right cornor of the playground
    }

function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(cid) and isMonster(attacker) then
        if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
            if getGlobalStorageValue(config.playerCount) >= 2 then
                doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)
                local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
                doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
            elseif getGlobalStorageValue(config.playerCount) == 1 then
                if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
                    doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)
                    local goblet = doPlayerAddItem(cid, config.goblet, 1)
                    doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")
                    local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
                    doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
                    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                    for _,items in ipairs(config.rewards) do
                        doPlayerAddItem(cid, items, 1)
                    end
                    if config.moneyReward[3] == 1 then
                        doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
                    end
                end
                       
                for x = config.fromPosition.x, config.toPosition.x do
                    for y = config.fromPosition.y, config.toPosition.y do
                        for z = config.fromPosition.z, config.toPosition.z do
                            areapos = {x = x, y = y, z = z, stackpos = 253}
                            getMonsters = getThingfromPos(areapos)
                            if isMonster(getMonsters.uid) then
                                doRemoveCreature(getMonsters.uid)
                            end
                        end
                    end
                end
            end
            return false
        end
    end
return true
end
    ]]></event>

            <event type="login" name="zombieRegister" event="script"><![CDATA[
        function onLogin(cid)
    registerCreatureEvent(cid, "zombieevent")
        return true
end]]></event>
</mod>

could you also help me link to this script so that it is activated only?


Lua:
local tp = {
    itemID = 1387, -- Id del objeto que aparecerá haciendo de teleport.
    createPos = {x = 1200, y = 1135, z = 7}, -- Coordenada del lugar donde será creado el cual.
    takePlayer = {x = 232, y = 1526, z = 7}, -- Coordenada del lugar donde llevará a los jugadores.
    belero = { -- Efecto Mágico que aparecerá en el portal al...
      CONST_ME_TELEPORT, -- ...abrirse.
      CONST_ME_LOSEENERGY, -- ...cerrarse.
    },
    timePortal = { -- Tiempo que el portal permanecerá...
      opens = 10, -- ...abierto. (contado en Minutos)
      close = 18, -- ...cerrado. (contado en Horas)
    },
    countColor = COLOR_RED, -- Color de la cuenta atrás que transcurrirá hasta abrirse.

    msgabierto = "El Portal del Evento Run esta abierto!!!!, Corre que tienes 1 minuto para entrar!!",
    msgcerrado = "El evento run se acaba de cerrar!, se volvera abrir dentro de 3 horas.",
  }

function AnimatedTime(timeDiff, pos, color)
    if isNumber(timeDiff) then
      local dateFormat = {
        {"h", timeDiff / 60 / 60 % 24},
        {"m", timeDiff / 60 % 60},
        {"s", timeDiff % 60}
      }

      local out = {}
        for k, t in ipairs(dateFormat) do
          local v = math.floor(t[2])
            if(v > 0) then
                table.insert(out, v .. t[1])
            end
        end
      local ret = table.concat(out)

      return doSendAnimatedText(pos, ret, color)
    end
end

function CloseTP()
  local t = getTileItemById(tp.createPos, tp.itemID).uid
    if t > 0 then
        doRemoveItem(t)
        doSendMagicEffect (tp.createPos, tp.belero[2])
        doBroadcastMessage(tp.msgcerrado, MESSAGE_EVENT_ADVANCE)
    end

    for i = 0, tp.timePortal.close * 10 * 60 do
      local c = tp.timePortal.close * 10 * 60 - i
        addEvent(AnimatedTime, i * 1000, tostring(c), tp.createPos, tp.countColor)
    end
end

function OpenTP()
    doSendMagicEffect (tp.createPos, tp.belero[1])
    doCreateTeleport (tp.itemID, tp.takePlayer, tp.createPos)
    doBroadcastMessage(tp.msgabierto, MESSAGE_EVENT_ADVANCE)

    for i = 0, tp.timePortal.opens * 10 do
      local c = tp.timePortal.opens * 10 - i
        addEvent(AnimatedTime, i * 1000, tostring(c), tp.createPos, tp.countColor)
    end
    addEvent (CloseTP, tp.timePortal.opens * 10 * 1000)

    addEvent (OpenTP, (tp.timePortal.close * 10 * 60 * 1000) + (tp.timePortal.opens * 10 * 1000))
  return true
end

function onStartup()
    for i = 0, tp.timePortal.close * 10 * 60 do
      local c = tp.timePortal.close * 10 * 60 - i
        addEvent(AnimatedTime, i * 1000, tostring(c), tp.createPos, tp.countColor)
    end

    addEvent(OpenTP, tp.timePortal.close * 10 * 60 * 1000)
end
 
Well I think this is the version:

[1/2/2018 13:35:35] The OTX Server Version: (2.X.S - 1) - Codename: (Crying Damson)
[1/2/2018 13:35:35] Compiled with Microsoft Visual C++ version 12.0 for arch 32 Bits at Sep 1 2015 15:56:14

[1/2/2018 13:35:35] A server developed by: Mattyx14, Comedinha and The Forgotten Server Developers.
[1/2/2018 13:35:35] Visit our forums for updates, support, and resources: blacktibia.org - tibiaking.com - otland.net - otfans.net
 
Back
Top