• 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 Zombie event mod tfs 0.4 -0.3.7 problem !

CipsoftStinks

www.relicaria.com
Joined
Oct 1, 2016
Messages
947
Solutions
3
Reaction score
137
Location
Argentina
Hello

Im using using tfs 0.4 with zombie event mod for tfs 0.4
the event is working but not at 100% it works it creates the teleport, the coordenates are correctly setup
i even can summon the monster and if i do in the arena the player get kicked with the message etc
but the event doesn't creates the monsters never it just left the player waiting for the summon
so i always must do it by myself

RESUMEN : EVENT NEVER CREATES OR SUMMMON THE ZOMBIE EVENT MONSTER
OTHER THINGS ARE WORKING CORRECTLY

0 console errors

IM pretty sure i've stup everything correctly i even tested with a tiny arena of 8x8

i need help here

zombie event mod
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="###.com" enabled="yes">
<config name="zombie_config"><![CDATA[
zombie_config = {
    storages = {172100, 172101, 172102}, -- n edite
    players = {min = 1, max = 30}, -- min, max players no evento
    rewards = {items ={{2160,10},{2494,1}}, trophy = 5805},
    timeToStartEvent = 60, -- segundos para começar o evento
    CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento
    teleport = {{x=32351, y=32223, z=7}, {x=32045 , y=32352, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp
    arena = {{x=32001,y=32311,z=7},{x=32099,y=32390,z=7}}, -- area positions
    monster_name = "Zombie Event",
    timeBetweenSpawns = 20,
    min_Level = 20
}
zombie_days = {
    ["Monday"] = {"15:27","18:00","20:00","22:00"},
    ["Tuesday"] = {"7:15","18:00","22:50","22:00"},
    ["Wednesday"] = {"21:57","18:00","20:00","23:17"},
    ["Thursday"] = {"13:00","18:00","20:00","22:00"},
    ["Friday"] = {"13:00","18:00","21:45","22:00"},
    ["Saturday"] = {"13:00","18:00","20:00","22:00"},
    ["Sunday"] = {"13:00","18:00","20:00","22:00"}
}
function removeZombieTp()
    local t = getTileItemById(zombie_config.teleport[1], 1387).uid
    return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF)
end
function ZerarStoragesZombie()
    for _, stor in pairs(zombie_config.storages) do
        setGlobalStorageValue(stor, 0)
    end
end
function getPlayersInZombieEvent()
    local t = {}
    for _, pid in pairs(getPlayersOnline()) do
        if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then
            t[#t+1] = pid
        end
    end
    return t
end
function getZombieRewards(cid, items)
    local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID
    for _, i_i in ipairs(items) do
        local item, amount = i_i[1],i_i[2]
        if isItemStackable(item) or amount == 1 then
            doAddContainerItem(backpack, item, amount)
        else
            for i = 1, amount do
                doAddContainerItem(backpack, item, 1)
            end
        end
    end
end
function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end
function HaveCreatureZombie(area, remove)
    for x = area[1].x - 1, area[2].x + 1 do
        for y = area[1].y - 1, area[2].y + 1 do
            local pos = {x=x, y=y, z=area[1].z}
            local m = getTopCreature(pos).uid
            if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end
        end
    end
end
function spawnZombie()
    if #getPlayersInZombieEvent() > 1 then
        local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z}
        if not isWalkable(pos, false, false, false) then
            spawnZombie()
        else
            doCreateMonster(zombie_config.monster_name, pos, false, false, false)
            doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE)
            addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE)
            addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA)
            doSendMagicEffect(pos, CONST_ME_MORTAREA)
            setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1)
            doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
            addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000)
        end
    end
end
function CheckZombieEvent(delay)
    if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then
        if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then
            doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
        elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then
            for _, cid in pairs(getPlayersInZombieEvent()) do
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
            end
            removeZombieTp()
            doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING)
            ZerarStoragesZombie()
        elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then
            removeZombieTp()
            doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.")
            for _, var in pairs(getPlayersInZombieEvent()) do
                doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!")
            end
            addEvent(spawnZombie, zombie_config.timeToStartEvent*1000)
        end
        addEvent(CheckZombieEvent, 60000, delay-1)
    end
end]]></config>
<event type="statschange" name="ZombieStats" event="script"><![CDATA[
domodlib('zombie_config')
if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then
    if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then
        if #getPlayersInZombieEvent() > 1 then
            doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)
            local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 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)
            if #getPlayersInZombieEvent() == 1 then
                local winner = getPlayersInZombieEvent()[1]
                doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!')
                local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1)
                doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.")
                getZombieRewards(winner, zombie_config.rewards.items)
                doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false)
                doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT)
                doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!")
                HaveCreatureZombie(zombie_config.arena, true)
                ZerarStoragesZombie()
            end
        else
            doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE)
            HaveCreatureZombie(zombie_config.arena, true)
            ZerarStoragesZombie()
        end
        return false
    end
end
return true]]></event>
<globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[
domodlib('zombie_config')
function onThink(interval, lastExecution)
    if zombie_days[os.date("%A")] then
        local hrs = tostring(os.date("%X")):sub(1, 5)
        if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then
            local tp = doCreateItem(1387, 1, zombie_config.teleport[1])
            doItemSetAttribute(tp, "aid", 45110)
            CheckZombieEvent(zombie_config.CheckTime)
            setGlobalStorageValue(zombie_config.storages[1], 0)
            setGlobalStorageValue(zombie_config.storages[2], 0)
            HaveCreatureZombie(zombie_config.arena, true)
        end
    end
    return true
end]]></globalevent>
<event type="login" name="Zombie_Login" event="script"><![CDATA[
domodlib('zombie_config')
function onLogin(cid)
    registerCreatureEvent(cid, "ZombieBattle")
    registerCreatureEvent(cid, "ZombieStats")
    if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
    return true
end]]></event>
<event type="combat" name="ZombieBattle" event="script"><![CDATA[
domodlib('zombie_config')
if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then
    doPlayerSendCancel(cid, "You may not attack this player.") return false
end
return true
]]></event>
<movevent type="StepIn" actionid ="45110" event="script"><![CDATA[
domodlib('zombie_config')
function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then return true end
    if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end
    if getPlayerLevel(cid) < zombie_config.min_Level then
        doTeleportThing(cid, fromPosition, true)
        doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".")
        doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
        return true
    end
    if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then
        doTeleportThing(cid, zombie_config.teleport[2])
        setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1)
        doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)
        if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then
            setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1)
            removeZombieTp()
            doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.")
            for _, var in pairs(getPlayersInZombieEvent()) do
                doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!")
            end
            addEvent(spawnZombie, zombie_config.timeToStartEvent*1000)
        end
    end
    return true
end]]></movevent>
<talkaction words="/zombiestart;!zombiestart" access="3" event="buffer"><![CDATA[
domodlib('zombie_config')
    if getGlobalStorageValue(zombie_config.storages[3]) > 0 then
        doPlayerSendCancel(cid, "The event is already starting.") return true
    elseif not param or not tonumber(param) then
        doPlayerSendCancel(cid, "Use only numbers.") return true
    end
    local param = tonumber(param) <= 0 and 1 or tonumber(param)
    local tp = doCreateItem(1387, 1, zombie_config.teleport[1])
        doItemSetAttribute(tp, "aid", 45110)
        CheckZombieEvent(tonumber(param))
        ZerarStoragesZombie()
        setGlobalStorageValue(zombie_config.storages[3], 1)
        HaveCreatureZombie(zombie_config.arena, true)
]]></talkaction>
<globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[
domodlib('zombie_config')
ZerarStoragesZombie()
return true]]></globalevent>
</mod>

zombie_event.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0">
    <health now="20000" max="20000"/>
    <look type="311" corpse="9875"/>
    <targetchange interval="5000" chance="50"/>
    <strategy attack="100" defense="0"/>
    <flags>
        <flag summonable="0"/>
        <flag attackable="1"/>
        <flag hostile="1"/>
        <flag illusionable="0"/>
        <flag convinceable="0"/>
        <flag pushable="0"/>
        <flag canpushitems="1"/>
        <flag canpushcreatures="1"/>
        <flag targetdistance="1"/>
        <flag staticattack="90"/>
        <flag runonhealth="0"/>
    </flags>
    <attacks>
        <attack name="melee" interval="1000" min="-1500" max="-2350"/>
    </attacks>
    <defenses armor="0" defense="0"/>
    <immunities>
        <immunity paralyze="1"/>
        <immunity invisible="1"/>
        <immunity fire="1"/>
        <immunity energy="1"/>
        <immunity poison="1"/>
    </immunities>
    <voices interval="5000" chance="10">
        <voice sentence="You wont last long!"/>
        <voice sentence="Mmmmh.. braains!"/>
    </voices>
    <script>
        <event name="ZombieBattle"/>
        <event name="ZombieStats"/>
    </script>
    <loot>
 
    </loot>
</monster>

monster xml
Code:
<monster name="Zombie Event" file="zombie_event.xml"/>
 
Last edited:
I think it's Zombie EVent form Server EVolera and it got Special Libs .. Does this Get any errors in Tfs? .
 
I think it's Zombie EVent form Server EVolera and it got Special Libs .. Does this Get any errors in Tfs? .
0 errors in console :S
event start at the designed hour or i can run it via talkactions as i said 0 errors everything work excluding the zombie evet summon/creating part of the event
 
See The count of Player addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) this Line Must be before The end not AFter it .

This a prize to u if you interseted in mods events and u can transfer form 7x to 11x then u can edit libs this file got exrta 10 event chair / fire/ zombie / ctf/ defend king /crown/ dota /lms /plantsattack/ buffs system>!buffs giveu more spells that add extra maxmana / health /snake event /Survival /turret event . Event this events works 100% but something error in string if u fixed one of them u will fix the other buff work /autobless :D @CipsoftStinks
 

Attachments

Last edited by a moderator:
This a prize to u if you interseted in mods events and u can transfer form 7x to 11x then u can edit libs this file got exrta 10 event chair / fire/ zombie / ctf/ defend king /crown/ dota /lms /plantsattack/ buffs system>!buffs giveu more spells that add extra maxmana / health /snake event /Survival /turret event . Event this events works 100% but something error in string if u fixed one of them u will fix the other buff work /autobless :D @CipsoftStinks
you mod gave me an idea

Code:
<description>  its was inside your mod
        Add this to login.lua:
        registerCreatureEvent(cid, "ZombieEvent")

so i gonna add this to my login.lua

Code:
registerCreatureEvent(cid, "ZombieBattle")
    registerCreatureEvent(cid, "ZombieStats")

i gonna post if its worked or not so people can use my mod or whatever

talking about put this
Code:
Player addEvent(spawnZombie, zombie_config.timeToStartEvent*1000)
before player count
i cant find them as playercount or playerscounts did you saw the error in the script? if you did could u tell me to which line i must exchange this line pls?
@Sir Sezago

regards

didn't worked :C jajajja
as i said everything work

[7/11/2017 9:45:33] > Broadcasted message: "Zombie event starting in 1 minutes! The teleport will be closed when the event start!".
[7/11/2017 9:45:42] > Broadcasted message: "Testurry entered the Zombie event! Currently 1 players have joined!".
[7/11/2017 9:46:34] > Broadcasted message: "The Zombie event is now full [1 players]! The event will soon start.".
[7/11/2017 9:49:15] > Broadcasted message: "No one survived in the Zombie Event.".


but the event never summon the zombie :C i must do it by myself


to admin i forgot about double post sryy
 
Last edited by a moderator:
didn't worked :C jajajja
as i said everything work

[7/11/2017 9:45:33] > Broadcasted message: "Zombie event starting in 1 minutes! The teleport will be closed when the event start!".
[7/11/2017 9:45:42] > Broadcasted message: "Testurry entered the Zombie event! Currently 1 players have joined!".
[7/11/2017 9:46:34] > Broadcasted message: "The Zombie event is now full [1 players]! The event will soon start.".
[7/11/2017 9:49:15] > Broadcasted message: "No one survived in the Zombie Event.".


but the event never summon the zombie :C i must do it by myself
Sorry was eating change it form line 116 to 114
 
BUMP

im still trying with my mod xd

@Sir Sezago
i found another line like this and i did the same change

Code:
Player addEvent(spawnZombie, zombie_config.timeToStartEvent*1000)

now im having this error in console.. zombies are not being summoed but im pretty sure the issue is near to be solved

Code:
[8/11/2017 10:26:14] [Error - TalkAction Interface]
[8/11/2017 10:26:14] In a timer event called from:
[8/11/2017 10:26:15] local cid = 268480660
[8/11/2017 10:26:15] local words = "/zombiestart"
[8/11/2017 10:26:15] local param = "2"
[8/11/2017 10:26:15] local channel = 65534
[8/11/2017 10:26:15] domodlib('zombie_config')
[8/11/2017 10:26:15]     if getGlobalStorageValue(zombie_config.storages[3]) > 0 then
[8/11/2017 10:26:15]         doPlayerSendCancel(cid, "The event is already starting.") return true
[8/11/2017 10:26:15]     elseif not param or not tonumber(param) then
[8/11/2017 10:26:15]         doPlayerSendCancel(cid, "Use only numbers.") return true
[8/11/2017 10:26:15]     end
[8/11/2017 10:26:15]     local param = tonumber(param) <= 0 and 1 or tonumber(param)
[8/11/2017 10:26:15]     local tp = doCreateItem(1387, 1, zombie_config.teleport[1])
[8/11/2017 10:26:15]         doItemSetAttribute(tp, "aid", 45110)
[8/11/2017 10:26:15]         CheckZombieEvent(tonumber(param))
[8/11/2017 10:26:15]         ZerarStoragesZombie()
[8/11/2017 10:26:15]         setGlobalStorageValue(zombie_config.storages[3], 1)
[8/11/2017 10:26:15]         HaveCreatureZombie(zombie_config.arena, true)

[8/11/2017 10:26:15] Description:
[8/11/2017 10:26:15] (LuaInterface::luaDoCreateMonster) Monster with name '' not found


I don't Know how but i solved it moving few lines :D
koXKDIs.png
 
Last edited:
BUMP

im still trying with my mod xd

@Sir Sezago
i found another line like this and i did the same change

Code:
Player addEvent(spawnZombie, zombie_config.timeToStartEvent*1000)

now im having this error in console.. zombies are not being summoed but im pretty sure the issue is near to be solved

Code:
[8/11/2017 10:26:14] [Error - TalkAction Interface]
[8/11/2017 10:26:14] In a timer event called from:
[8/11/2017 10:26:15] local cid = 268480660
[8/11/2017 10:26:15] local words = "/zombiestart"
[8/11/2017 10:26:15] local param = "2"
[8/11/2017 10:26:15] local channel = 65534
[8/11/2017 10:26:15] domodlib('zombie_config')
[8/11/2017 10:26:15]     if getGlobalStorageValue(zombie_config.storages[3]) > 0 then
[8/11/2017 10:26:15]         doPlayerSendCancel(cid, "The event is already starting.") return true
[8/11/2017 10:26:15]     elseif not param or not tonumber(param) then
[8/11/2017 10:26:15]         doPlayerSendCancel(cid, "Use only numbers.") return true
[8/11/2017 10:26:15]     end
[8/11/2017 10:26:15]     local param = tonumber(param) <= 0 and 1 or tonumber(param)
[8/11/2017 10:26:15]     local tp = doCreateItem(1387, 1, zombie_config.teleport[1])
[8/11/2017 10:26:15]         doItemSetAttribute(tp, "aid", 45110)
[8/11/2017 10:26:15]         CheckZombieEvent(tonumber(param))
[8/11/2017 10:26:15]         ZerarStoragesZombie()
[8/11/2017 10:26:15]         setGlobalStorageValue(zombie_config.storages[3], 1)
[8/11/2017 10:26:15]         HaveCreatureZombie(zombie_config.arena, true)

[8/11/2017 10:26:15] Description:
[8/11/2017 10:26:15] (LuaInterface::luaDoCreateMonster) Monster with name '' not found


I don't Know how but i solved it moving few lines :D
koXKDIs.png
what about give u zombie events scripts with out mods? .
 
i dont gonna post it here because no one showed interest or the intention in help ... as always in this community
but i gonna send it to you via pm
 
Back
Top