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

Zombie Event Mod Problem

tarekwiz

Hellbot Owner
Joined
Feb 17, 2011
Messages
240
Reaction score
7
When i use this Mod And wait for 6 min then nothing happen its a zombie event script , can anybody help
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Zombie Event" version="1.00" author="kawon" contact="otland.net" enabled="yes">


<globalevent name="zombieevent" interval="300" 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 = 1992, y = 2001, z = 7, stackpos = 1}, -- Where the teleport will be created
	teleportToPosition = {x = 1920, y = 1784, z = 7}, -- Where the teleport will take you 
	teleportId = 1387, -- Id of the teleport
	timeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
	timeBetweenSpawns = 20, -- Seconds between each spawn of zombie
	zombieName = "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 = 1903, y = 1763, z = 7}, -- top left cornor of the playground
	toPosition = {x = 1936, y = 1784, z = 7}, -- bottom right cornor of the playground
}

function onThink()
	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 = 20 -- 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 = 2018, y = 2021, z = 7}, -- top left cornor of the playground
	toPosition = {x = 2051, y = 2051, 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="buffer"><![CDATA[
	registerCreatureEvent(cid, "zombieevent")
]]></event>

</mod>
Thanks
 
I'm not sure about this but
instead of
Lua:
<globalevent name="zombieevent" interval="300" event="buffer"><![CDATA[
I think it should be like this (example)
Lua:
<globalevent name="zombieevent" time="15:00" event="buffer"><![CDATA[

Try this:
*note: xx:xx = time you want it to start.
Lua:
<globalevent name="zombieevent" time="xx:xx" event="buffer"><![CDATA
 
Lua:
addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
lol? yes you don't get any error in console.. made by its in time or not have add startevent in functions..?
What Version TFS use you?
 
Back
Top