• 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 Need Pro Lua Help

Ancore

New Member
Joined
Jul 6, 2012
Messages
216
Reaction score
1
Hello, I was trying a script (it is called Rush Event), and I had some problems... the players are not getting the rewars, a random player from the event is getting, but just one and not always from the winner team... so it's kind of stupid. Here I post the script




XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Rush Event" version="1.0" author="ChaitoSoft.com" contact="[email protected]" enabled="yes">
   <description>
        TUTORIAL DE COMO CONFIGURAR O EVENTO ACOMPANHE POR AQUI:
		q - mensagem que vai ser exibida quando o evento começar
		d_1 - posição do tempo vermelho ao começar evento
		d_2 - posição do tempo azul ao começar evento
		x - mensagem que vai ser exibida quando o evento não começar
		w - posição da sala de espera, onde os players vão ficar antes de começar
		lvl - level minimo para participar do evento
		v - a quantidade de frags que será necessária para o time ganhar
		mn - quantidade minima de players para começar o evento
		m - maximo de players dentro do evento
		o - mensagem exibida quando o time vermelho ganhar
		y - mensagem exibida quando o time azul ganhar
		i_1 - id do premio (agora é crystal coin = 2160)
		i_2 - quantidade do premio (agora esta 10 crystal coins)
		t - tempo para começar o evento (agora esta is 5 minutos)
		r - tempo em que os resultados da batalha serão mostrados aos players (agora esta 3 minutos)
 
	Adicione isto em 050-function.lua:
	-------------------------------------------------------------------------------------------------
	function doPlayerRemoveLethalConditions(cid)
		local tmp = {1, 2, 4, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 32768, 65536}
		for i = 1, #tmp do
			if(hasCondition(cid, tmp[i])) then doRemoveCondition(cid, tmp[i]) end
		end
		return true
	end
	-------------------------------------------------------------------------------------------------
	Adicione isto em login.lua:
	-------------------------------------------------------------------------------------------------
	registerCreatureEvent(cid, "RushCombat")
	registerCreatureEvent(cid, "RushAttack")
	registerCreatureEvent(cid, "RushDead")
	registerCreatureEvent(cid, "RushOutfit")
	-------------------------------------------------------------------------------------------------
	Agora daqui pra baixo você vai configurar de acordo com o tutorial acima, o resto se não tiver
	conhecimento não mecha em nada pois poderá bugar o evento e não daremos suporte:
   </description>
	<config name="re"><![CDATA[
		 t = {
			a = 32145,
			g = 32146,
			l = 32147,
			u = 32148,
			h = 32149,
			wv = 32150,
			c = 0,
			q = "Rush Event has been started! Enjoy and have fun!",
			f = 5447,
			f_1 = 5448,
			f_2 = 5449,
			d_1 = {x = 986, y = 1116, z = 6}, -- red temple
			d_2 = {x = 986, y = 1116, z = 6}, -- blue temple
			x = "Event won't start bacause too few people were willing to participate",
			w = {x = 986, y = 1114, z = 7},
			lvl = 100,
			v = 25,
			mn = 4,
			m = 40,
			o = "Event was completed, RED TEAM has won Rush Event!",
			y = "Event was completed, BLUE TEAM has won Rush Event!",
			i_1 = 2160,
			i_2 = 10,
			t = 5,
			r = 3
		}
	]]></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("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(function()
			doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 2) * 1000 * 60)
			addEvent(function()
			doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 1) * 1000 * 60)
			addEvent(start, t.t * 1000 * 60, cid)
			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 Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING)
			addEvent(results, t.r * 1000 * 60)
		end
	end
	function start(cid)
		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, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!")
					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, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!")
					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="15:53" 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(function()
			doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 2) * 1000 * 60)
			addEvent(function()
			doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 1) * 1000 * 60)
			addEvent(start, t.t * 1000 * 60, cid)
		end
		function results()
			if(getGlobalStorageValue(t.a) == 1) then
				local red = getGlobalStorageValue(t.l)
				local blue = getGlobalStorageValue(t.u)			
				doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING)
				addEvent(results, t.r * 1000 * 60)
			end
		end
		function start(cid)
			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, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!")
						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, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!")
						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)
		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) .. " has joined to Rush Event! Actually we have: " .. getGlobalStorageValue(t.c) .. " players!", 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, "You must be in protection zone.")
						return true
					end
				else
					doPlayerSendCancel(cid, "You are already registered in this event.")
					return true
				end
			else
				doPlayerSendCancel(cid, "Your level is too low to participate in this event.")
				return true
			end  			
		else
			doPlayerSendCancel(cid, "At the moment there are no records for this event.")
			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, "Sorry, you cannot attack your own team.") 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, "Sorry, you cannot attack your own team.") 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(cid, 2160, 30)
					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(cid, 2160, 30)
					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, "You cannot change your outfit during the event.")
					return false
				end
			end
		end
		return true
	end
]]></event>
</mod>




A little explanation of the event:
You start the event, by talkaction or automatically, and after that you can say !rush to enter to the waiting room of the event, when there are enought players, the event starts and divide the players in 2 teams with the same total players per team, blue team (with blue outfit) and red team (with red outfit) and the first who kill X members from the enemy team, wins... all that is working fine, but here come the problem... when the players are teleported back to their residence, no reward is added to the winner team, always a X player (random player, from the team who loose or won, it is RANDOM) win the reward... So what I want is to make that ALL the winner team get the reward.

Thanks!
 
Last edited by a moderator:
Not sure but give it a try.
LUA:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Rush Event" version="1.0" author="ChaitoSoft.com" contact="[email protected]" enabled="yes">
   <description>
        TUTORIAL DE COMO CONFIGURAR O EVENTO ACOMPANHE POR AQUI:
		q - mensagem que vai ser exibida quando o evento começar
		d_1 - posiç?o do tempo vermelho ao começar evento
		d_2 - posiç?o do tempo azul ao começar evento
		x - mensagem que vai ser exibida quando o evento n?o começar
		w - posiç?o da sala de espera, onde os players v?o ficar antes de começar
		lvl - level minimo para participar do evento
		v - a quantidade de frags que ser? necess?ria para o time ganhar
		mn - quantidade minima de players para começar o evento
		m - maximo de players dentro do evento
		o - mensagem exibida quando o time vermelho ganhar
		y - mensagem exibida quando o time azul ganhar
		i_1 - id do premio (agora é crystal coin = 2160)
		i_2 - quantidade do premio (agora esta 10 crystal coins)
		t - tempo para começar o evento (agora esta is 5 minutos)
		r - tempo em que os resultados da batalha ser?o mostrados aos players (agora esta 3 minutos)
 
	Adicione isto em 050-function.lua:
	-------------------------------------------------------------------------------------------------
	function doPlayerRemoveLethalConditions(cid)
		local tmp = {1, 2, 4, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 32768, 65536}
		for i = 1, #tmp do
			if(hasCondition(cid, tmp[i])) then doRemoveCondition(cid, tmp[i]) end
		end
		return true
	end
	-------------------------------------------------------------------------------------------------
	Adicione isto em login.lua:
	-------------------------------------------------------------------------------------------------
	registerCreatureEvent(cid, "RushCombat")
	registerCreatureEvent(cid, "RushAttack")
	registerCreatureEvent(cid, "RushDead")
	registerCreatureEvent(cid, "RushOutfit")
	-------------------------------------------------------------------------------------------------
	Agora daqui pra baixo você vai configurar de acordo com o tutorial acima, o resto se n?o tiver
	conhecimento n?o mecha em nada pois poder? bugar o evento e n?o daremos suporte:
   </description>
	<config name="re"><![CDATA[
		 t = {
			a = 32145,
			g = 32146,
			l = 32147,
			u = 32148,
			h = 32149,
			wv = 32150,
			c = 0,
			q = "Rush Event has been started! Enjoy and have fun!",
			f = 5447,
			f_1 = 5448,
			f_2 = 5449,
			d_1 = {x = 986, y = 1116, z = 6}, -- red temple
			d_2 = {x = 986, y = 1116, z = 6}, -- blue temple
			x = "Event won't start bacause too few people were willing to participate",
			w = {x = 986, y = 1114, z = 7},
			lvl = 100,
			v = 25,
			mn = 4,
			m = 40,
			o = "Event was completed, RED TEAM has won Rush Event!",
			y = "Event was completed, BLUE TEAM has won Rush Event!",
			i_1 = 2160,
			i_2 = 10,
			t = 5,
			r = 3
		}
	]]></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("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(function()
			doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 2) * 1000 * 60)
			addEvent(function()
			doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 1) * 1000 * 60)
			addEvent(start, t.t * 1000 * 60, cid)
			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 Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING)
			addEvent(results, t.r * 1000 * 60)
		end
	end
	function start(cid)
		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, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!")
					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, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!")
					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="15:53" 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(function()
			doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 2) * 1000 * 60)
			addEvent(function()
			doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
			end, (t.t - 1) * 1000 * 60)
			addEvent(start, t.t * 1000 * 60, cid)
		end
		function results()
			if(getGlobalStorageValue(t.a) == 1) then
				local red = getGlobalStorageValue(t.l)
				local blue = getGlobalStorageValue(t.u)			
				doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING)
				addEvent(results, t.r * 1000 * 60)
			end
		end
		function start(cid)
			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, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!")
						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, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!")
						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)
		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) .. " has joined to Rush Event! Actually we have: " .. getGlobalStorageValue(t.c) .. " players!", 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, "You must be in protection zone.")
						return true
					end
				else
					doPlayerSendCancel(cid, "You are already registered in this event.")
					return true
				end
			else
				doPlayerSendCancel(cid, "Your level is too low to participate in this event.")
				return true
			end  			
		else
			doPlayerSendCancel(cid, "At the moment there are no records for this event.")
			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, "Sorry, you cannot attack your own team.") 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, "Sorry, you cannot attack your own team.") 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, 2160, 30)
					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, 2160, 30)
					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, "You cannot change your outfit during the event.")
					return false
				end
			end
		end
		return true
	end
]]></event>
</mod>
 
@kimokimo:
I'll try it tomorrow and tell you if it works... Thanks anyways!
 
Last edited by a moderator:
I was looking at the script, and I tried to convert it into just lua. This is what I have, You might be able to work with it. TFS 3.0+

First talkaction script, so players can get into event

Code:
<talkaction log="yes" words="!start;!rush;!end;!open" event="script" value="rush.lua">

LUA:
--------Death limit------------
local deathLimit = 250
---------Winners--------------
local items = {2557} -- you can make this as many items you want, it will math.radom the items. --
---------Can Start Events?-----
local Allowed_To_Start_Events = 4 --They must have this access to start events--
----------EVENTS---------------
local RUSH = rushEvent
---------------------------------------------RUSH-----Red vs. Blue-----------------------
-----------------------------------------------------CONFIG--------------------------
local myOutfit = getCreatureOutfit(cid)
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}
 
------------EVENT POSITION---------------
local eventTop.xyz = {x = 1000, y = 1000, z = 7, stackpos = 1}
local eventBottom.xyz = {x = 1000, y = 1000, z = 7, stackpos = 1}
local eventPosition = eventTop.xyz, eventBottom.xyz
 
------------Red Team Position------------
local redTopleft.xyz = {x = 1000, y = 1000, z = 7}
local redBottomright.xyz = {x = 1000, y = 1000, z = 7}
local redPosition = redTopleft.xyz, redBottomRight.xyz
 
---------Blue Team Position---------------
local blueTopleft.xyz = {x = 1000, y = 1000, z = 7}
local blueBottomleft.xyz = {x = 1000, y = 1000, z = 7}
local bluePosition = {x = 1000, y = 1000, z = 7}
 
------------DOORS------------
local bdoor = {x = 1000, y = 1000, z = 7}
local blueDoor = getItemFromPos(bdoor)
local bdoorItem = 5712 -- Set this to the door item id you want for blue team. --
local rdoor = {x = 1000, y = 1000, z = 7}
local blueDoor = getItemFromPos(rdoor)
local rdoorItem = 5713 -- Set this to the door item id you want for red team. --
------------TEAMS------------------------
local redStorage = redteamstorage
local blueStorage = blueteamstorage
 
-----------Max Players Per Team----------
local full_event = 30
 
--------Ignore----------
local t = string.explode(param, ",")
 
-------------EDIT THIS-----------
local fullMSG = "The event is full!"
local redMSG = "You have joined the red team!"
local blueMSG = "You have joined the blue team!"
local openMSG = "RUSH IS NOW OPEN! Type !rush to enter the event!"
local typeMSG = MESSAGE_STATUS_CONSOLE_RED
local redME = 10 -- red team magic effect--
local blueME = 11 -- blue team magic effect--
 
--------------MISC-------------------
local outOfEvent = {x = 1000, y = 1000, z = 7}  -- Keep in mind you can make this getPlayerTown(cid) --
local players = getThingFromPos(eventPosition)
 
----------------WORDS------------------
local wordsToOpen = "!open"
local wordsToStart = "!start"
local wordsToEnd = "!end"
local joinRush = "!rush"
 
local function setPlayerRushStatus()
	if getPlayerStorageValue(players) ~= rushPlayer then
		doPlayerSetLossPercent(cid, 1, 0)
		setPlayerStorageValue(cid, rushPlayer, 1)
	end
end
 
function onSay(cid, word, param)
	if (param == wordsToOpen) then
			if getPlayerAccess(cid) >= Allowed_To_Start_Events then
				if getGlobalStorageValue(RUSH) ~= 1  then
					doBroadcastMessage(openMSG, 1)
					setGlobalStorageValue(RUSH, 1)
					setGlobalStorageValue(blueDeaths, deathLimit)
					setGlobalStorageValue(redDeaths, deathLimit)
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You have started the event Red Vs. Blue!")
				else
					doPlayerSendCancel(cid, "The event is already started.")
				return false
				end
			else
				doPlayerSendCancel(cid, "You cannot use this command.")
			return false
			end
elseif (param == joinRush) then
		if getGlobalStorageValue(RUSH) == 1 then
			if getGlobalStorageValue(redStorage) and getGlobalStorageValue(blueStorage) == full_event then
				doPlayerSendCancel(cid, fullMSG)
			return false
			end
		if getGlobalStorageValue(redStorage) > getGlobalStorageValue(blueStorage) then
					doTeleportThing(cid, bluePosition)
					setGlobalStorage(blueStorage) + 1
					doPlayerSendTextMessage(cid, typeMSG, blueMSG)
					doSendMagicEffect(getPlayerPosition(cid), blueME)
					setPlayerRushStatus()
					setPlayerStorageValue(cid, rushTeam, 2)
					doCreatureChangeOutfit(cid, blue)
				else
					doTeleportThing(cid, redPosition)
					setGlobalStorage(redStorage) + 1
					doPlayerSendTextMessage(cid, typeMSG, redMSG)
					doSendMagicEffect(getPlayerPosition(cid), redME)
					setPlayerRushStatus()
					setPlayerStorageValue(cid, rushTeam, 1)
					doCreatureChangeOutfit(cid, red)
		end
		else
			doPlayerSendCancel(cid, "This event is not open!")
		return false
		end
elseif	(param == wordToEnd) then
	if getPlayerAccess(cid) >= Access_To_Start_Events then
	if getGlobalStorageValue(RUSH) == 1 then
		setGlobalStorageValue(RUSH, 0)
	doTransformItem(bdoor, bdoorItem)
	doTransformItem(rdoor, rdoorItem)
	if (isPlayer(players)) then
		for i, pid in ipairs(players) do
		setPlayerStorageValue(pid, rushPlayer, 0)
		doTeleportThing(pid, outOfEvent)
		doPlayerSetLossPercent(pid, 1, 100)
	if getPlayerStorageValue(pid, rushTeam) == 1 or 2 then
		setPlayerStorageValue(pid, rushTeam, 0)
	end
	if	getPlayerStorageValue(pid, rushPlayer) == 1 or 2 then
		setPlayerStorageValue(pid, rushPlayer, 0)
	end
	if getPlayerStorageValue(pid, rushWinner) then
		setPlayerStorageValue(pid, rushWinner, 0)
		doPlayerAddItem(pid, math.random(items), 1)
end
end
	else
	return false
end
	else
		doPlayerSendCancel(cid, "There is no event running!")
	return false
	end
	else
		doPlayerSendCancel(cid, "You cannot use this command.")
	return false
	end
elseif (param == wordToStart) then
	if getPlayerAccess(cid) >= Access_To_Start_Events then
		if getGlobalStorageValue(RUSH) == 1 then
			if getGlobalStorage(blueStorage) and getGlobalStorage(redStorage) == full_event then
	doTransformItem(bdoorItem, bdoorOpen)
	doTransformItem(rdoorItem, rdoorOpen)
	else
		doPlayerSendCancel(cid, "The event is not full!")
	return false
end
	else
		doPlayerSendCancel(cid, "The event is not open!")
		return false
	end
	else
		doPlayerSendCancel(cid, "You cannot use this command.")
		return false
	end
end
return true
end


Usage: !open(opens event) then players all say !rush until the event is full. When its full, you say, !start.

LUA:
---------Can Start Events?-----
local Allowed_To_Start_Events = 4 --They must have this access to start events--
----------EVENTS---------------
local RUSH = rushEvent
---------------------------------------------RUSH-----Red vs. Blue-----------------------
-----------------------------------------------------CONFIG--------------------------
local myOutfit = getCreatureOutfit(cid)
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}

------------EVENT POSITION---------------
local eventTop.xyz = {x = 1000, y = 1000, z = 7, stackpos = 1}
local eventBottom.xyz = {x = 1000, y = 1000, z = 7, stackpos = 1}
local eventPosition = eventTop.xyz, eventBottom.xyz

------------Red Team Position------------
local redTopleft.xyz = {x = 1000, y = 1000, z = 7}
local redBottomright.xyz = {x = 1000, y = 1000, z = 7}
local redPosition = redTopleft.xyz, redBottomRight.xyz

---------Blue Team Position---------------
local blueTopleft.xyz = {x = 1000, y = 1000, z = 7}
local blueBottomleft.xyz = {x = 1000, y = 1000, z = 7}
local bluePosition = {x = 1000, y = 1000, z = 7}

------------DOORS------------
local bdoor = {x = 1000, y = 1000, z = 7}
local blueDoor = getItemFromPos(bdoor)
local bdoorItem = 5712 -- Set this to the door item id you want for blue team. --
local rdoor = {x = 1000, y = 1000, z = 7}
local blueDoor = getItemFromPos(rdoor)
local rdoorItem = 5713 -- Set this to the door item id you want for red team. --
------------TEAMS------------------------
local redStorage = redteamstorage
local blueStorage = blueteamstorage

-----------Max Players Per Team----------
local full_event = 30

--------Ignore----------
local t = string.explode(param, ",")

-------------EDIT THIS-----------
local fullMSG = "The event is full!"
local redMSG = "You have joined the red team!"
local blueMSG = "You have joined the blue team!"
local openMSG = "RUSH IS NOW OPEN! Type !rush to enter the event!"
local typeMSG = MESSAGE_STATUS_CONSOLE_RED
local redME = 10 -- red team magic effect--
local blueME = 11 -- blue team magic effect--

--------------MISC-------------------
local outOfEvent = {x = 1000, y = 1000, z = 7}  -- Keep in mind you can make this getPlayerTown(cid) --
local players = getThingFromPos(eventPosition)

----------------WORDS------------------
local wordsToOpen = "!open"
local wordsToStart = "!start"
local wordsToEnd = "!end"
local joinRush = "!rush"

local function setPlayerRushStatus()
	if getPlayerStorageValue(players) ~= rushPlayer then
		doPlayerSetLossPercent(cid, 1, 0)
		setPlayerStorageValue(cid, rushPlayer, 1)
	end
end

function onSay(cid, word, param)
	if (param == wordsToOpen) then
			if getPlayerAccess(cid) >= Allowed_To_Start_Events then
				if getGlobalStorageValue(RUSH) ~= 1  then
					doBroadcastMessage(openMSG, 1)
					setGlobalStorageValue(RUSH, 1)
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You have started the event Red Vs. Blue!")
				else
					doPlayerSendCancel(cid, "The event is already started.")
				return false
				end
			else
				doPlayerSendCancel(cid, "You cannot use this command.")
			return false
			end
elseif (param == joinRush) then
		if getGlobalStorageValue(RUSH) == 1 then
			if getGlobalStorageValue(redStorage) and getGlobalStorageValue(blueStorage) == full_event then
				doPlayerSendCancel(cid, fullMSG)
			return false
			end
		if getGlobalStorageValue(redStorage) > getGlobalStorageValue(blueStorage) then
					doTeleportThing(cid, bluePosition)
					setGlobalStorage(blueStorage) + 1
					doPlayerSendTextMessage(cid, typeMSG, blueMSG)
					doSendMagicEffect(getPlayerPosition(cid), blueME)
					setPlayerRushStatus()
					setPlayerStorageValue(cid, rushTeam, 2)
					doCreatureChangeOutfit(cid, blue)
				else
					doTeleportThing(cid, redPosition)
					setGlobalStorage(redStorage) + 1
					doPlayerSendTextMessage(cid, typeMSG, redMSG)
					doSendMagicEffect(getPlayerPosition(cid), redME)
					setPlayerRushStatus()
					setPlayerStorageValue(cid, rushTeam, 1)
					doCreatureChangeOutfit(cid, red)
		end
		else
			doPlayerSendCancel(cid, "This event is not open!")
		return false
		end
elseif	(param == wordToEnd) then
	if getPlayerAccess(cid) >= Access_To_Start_Events then
	if getGlobalStorageValue(RUSH) == 1 then
		setGlobalStorageValue(RUSH, 0)
	doTransformItem(bdoor, bdoorItem)
	doTransformItem(rdoor, rdoorItem)
	if (isPlayer(players)) then
		setPlayerStorageValue(players, rushPlayer, 0)
		doTeleportThing(players, outOfEvent)
		doPlayerSetLossPercent(cid, 1, 100)
	else
	return false
end
	else
		doPlayerSendCancel(cid, "There is no event running!")
	return false
	end
	else
		doPlayerSendCancel(cid, "You cannot use this command.")
	return false
	end
elseif (param == wordToStart) then
	if getPlayerAccess(cid) >= Access_To_Start_Events then
		if getGlobalStorageValue(RUSH) == 1 then
			if getGlobalStorage(blueStorage) and getGlobalStorage(redStorage) == full_event then
	doTransformItem(bdoorItem, bdoorOpen)
	doTransformItem(rdoorItem, rdoorOpen)
	else
		doPlayerSendCancel(cid, "The event is not full!")
	return false
end
	else
		doPlayerSendCancel(cid, "The event is not open!")
		return false
	end
	else
		doPlayerSendCancel(cid, "You cannot use this command.")
		return false
	end
end
return true
end

Now in your creature scripts put these.


--Player Death---
LUA:
------------Red Team Position------------
local redTopleft.xyz = {x = 1000, y = 1000, z = 7}
local redBottomright.xyz = {x = 1000, y = 1000, z = 7}
local redPosition = redTopleft.xyz, redBottomRight.xyz

---------Blue Team Position---------------
local blueTopleft.xyz = {x = 1000, y = 1000, z = 7}
local blueBottomleft.xyz = {x = 1000, y = 1000, z = 7}
local bluePosition = blueTopleft.xyz, blueBottomleft.xyz

local msgDeath = "You have died during the rush event. You have been teleported back to your teams side!"


function onDeath(cid)
	if getPlayerStorageValue(cid, rushPlayer) == 1 then
		if getPlayerStorageValue(cid, blueRusher) == 1 then
			doTeleportThing(cid, bluePosition)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, msgDeath)
		else
			doTeleportThing(cid, redPosition)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, msgDeath)
		end
end
end

--AntiSkull Rush players--
Code:
function onKill(cid, target)
	if (isPlayer(cid)) then
		if getCreatureSkullType(cid) == SKULL_WHITE then
			setCreatureSkullType(cid, 0)
end
end
end

--Anti teamkill--
LUA:
function onAttack(cid, target)
		if(getGlobalStorageValue(RUSH) == 1) then
			if isPlayer(cid) and isPlayer(target) then
				if getPlayerStorageValue(cid, rushTeam) ==  getPlayerStorageValue(target, rushTeam) then
						 doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.")
                                           return false
					end
				end
			end
			return true
		end

put these in your login.lua at the end.
Code:
	registerCreatureEvent(cid, "rushDeath")
	registerCreatureEvent(cid, "antiTeamKill")
	registerCreatureEvent(cid, "antiSkull")

and this in your creaturescripts.xml

Code:
	<event type="death" name="rushDeath" event="script" value="rushDeath.lua"/>
	<event type="kill" name="antiSkull" event="script" value="antiSkull.lua"/>
	<event type="target" name="antiTeamKill" event="script" value="antiTeamKill.lua"/>
 
Last edited:
I've cleaned up the thread from all the non-helping posts.

Please keep it on-topic this time.
 
I put in the reward. If you want to get much more advaned man, im going to expect payment...
Also put in death limit.

LUA:
--------Death limit------------
local deathLimit = 250
---------Winners--------------
local items = {2557} -- you can make this as many items you want, it will math.radom the items. --
---------Can Start Events?-----
local Allowed_To_Start_Events = 4 --They must have this access to start events--
----------EVENTS---------------
local RUSH = rushEvent
---------------------------------------------RUSH-----Red vs. Blue-----------------------
-----------------------------------------------------CONFIG--------------------------
local myOutfit = getCreatureOutfit(cid)
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}

------------EVENT POSITION---------------
local eventTop.xyz = {x = 1000, y = 1000, z = 7, stackpos = 1}
local eventBottom.xyz = {x = 1000, y = 1000, z = 7, stackpos = 1}
local eventPosition = eventTop.xyz, eventBottom.xyz

------------Red Team Position------------
local redTopleft.xyz = {x = 1000, y = 1000, z = 7}
local redBottomright.xyz = {x = 1000, y = 1000, z = 7}
local redPosition = redTopleft.xyz, redBottomRight.xyz

---------Blue Team Position---------------
local blueTopleft.xyz = {x = 1000, y = 1000, z = 7}
local blueBottomleft.xyz = {x = 1000, y = 1000, z = 7}
local bluePosition = {x = 1000, y = 1000, z = 7}

------------DOORS------------
local bdoor = {x = 1000, y = 1000, z = 7}
local blueDoor = getItemFromPos(bdoor)
local bdoorItem = 5712 -- Set this to the door item id you want for blue team. --
local rdoor = {x = 1000, y = 1000, z = 7}
local blueDoor = getItemFromPos(rdoor)
local rdoorItem = 5713 -- Set this to the door item id you want for red team. --
------------TEAMS------------------------
local redStorage = redteamstorage
local blueStorage = blueteamstorage

-----------Max Players Per Team----------
local full_event = 30

--------Ignore----------
local t = string.explode(param, ",")

-------------EDIT THIS-----------
local fullMSG = "The event is full!"
local redMSG = "You have joined the red team!"
local blueMSG = "You have joined the blue team!"
local openMSG = "RUSH IS NOW OPEN! Type !rush to enter the event!"
local typeMSG = MESSAGE_STATUS_CONSOLE_RED
local redME = 10 -- red team magic effect--
local blueME = 11 -- blue team magic effect--

--------------MISC-------------------
local outOfEvent = {x = 1000, y = 1000, z = 7}  -- Keep in mind you can make this getPlayerTown(cid) --
local players = getThingFromPos(eventPosition)

----------------WORDS------------------
local wordsToOpen = "!open"
local wordsToStart = "!start"
local wordsToEnd = "!end"
local joinRush = "!rush"

local function setPlayerRushStatus()
	if getPlayerStorageValue(players) ~= rushPlayer then
		doPlayerSetLossPercent(cid, 1, 0)
		setPlayerStorageValue(cid, rushPlayer, 1)
	end
end

function onSay(cid, word, param)
	if (param == wordsToOpen) then
			if getPlayerAccess(cid) >= Allowed_To_Start_Events then
				if getGlobalStorageValue(RUSH) ~= 1  then
					doBroadcastMessage(openMSG, 1)
					setGlobalStorageValue(RUSH, 1)
					setGlobalStorageValue(blueDeaths, deathLimit)
					setGlobalStorageValue(redDeaths, deathLimit)
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You have started the event Red Vs. Blue!")
				else
					doPlayerSendCancel(cid, "The event is already started.")
				return false
				end
			else
				doPlayerSendCancel(cid, "You cannot use this command.")
			return false
			end
elseif (param == joinRush) then
		if getGlobalStorageValue(RUSH) == 1 then
			if getGlobalStorageValue(redStorage) and getGlobalStorageValue(blueStorage) == full_event then
				doPlayerSendCancel(cid, fullMSG)
			return false
			end
		if getGlobalStorageValue(redStorage) > getGlobalStorageValue(blueStorage) then
					doTeleportThing(cid, bluePosition)
					setGlobalStorage(blueStorage) + 1
					doPlayerSendTextMessage(cid, typeMSG, blueMSG)
					doSendMagicEffect(getPlayerPosition(cid), blueME)
					setPlayerRushStatus()
					setPlayerStorageValue(cid, rushTeam, 2)
					doCreatureChangeOutfit(cid, blue)
				else
					doTeleportThing(cid, redPosition)
					setGlobalStorage(redStorage) + 1
					doPlayerSendTextMessage(cid, typeMSG, redMSG)
					doSendMagicEffect(getPlayerPosition(cid), redME)
					setPlayerRushStatus()
					setPlayerStorageValue(cid, rushTeam, 1)
					doCreatureChangeOutfit(cid, red)
		end
		else
			doPlayerSendCancel(cid, "This event is not open!")
		return false
		end
elseif	(param == wordToEnd) then
	if getPlayerAccess(cid) >= Access_To_Start_Events then
	if getGlobalStorageValue(RUSH) == 1 then
		setGlobalStorageValue(RUSH, 0)
	doTransformItem(bdoor, bdoorItem)
	doTransformItem(rdoor, rdoorItem)
	if (isPlayer(players)) then
		for i, pid in ipairs(players) do
		setPlayerStorageValue(pid, rushPlayer, 0)
		doTeleportThing(pid, outOfEvent)
		doPlayerSetLossPercent(pid, 1, 100)
	if getPlayerStorageValue(pid, rushTeam) == 1 or 2 then
		setPlayerStorageValue(pid, rushTeam, 0)
	end
	if	getPlayerStorageValue(pid, rushPlayer) == 1 or 2 then
		setPlayerStorageValue(pid, rushPlayer, 0)
	end
	if getPlayerStorageValue(pid, rushWinner) then
		setPlayerStorageValue(pid, rushWinner, 0)
		doPlayerAddItem(pid, math.random(items), 1)
end
end
	else
	return false
end
	else
		doPlayerSendCancel(cid, "There is no event running!")
	return false
	end
	else
		doPlayerSendCancel(cid, "You cannot use this command.")
	return false
	end
elseif (param == wordToStart) then
	if getPlayerAccess(cid) >= Access_To_Start_Events then
		if getGlobalStorageValue(RUSH) == 1 then
			if getGlobalStorage(blueStorage) and getGlobalStorage(redStorage) == full_event then
	doTransformItem(bdoorItem, bdoorOpen)
	doTransformItem(rdoorItem, rdoorOpen)
	else
		doPlayerSendCancel(cid, "The event is not full!")
	return false
end
	else
		doPlayerSendCancel(cid, "The event is not open!")
		return false
	end
	else
		doPlayerSendCancel(cid, "You cannot use this command.")
		return false
	end
end
return true
end

LUA:
function onKill(cid, target)
	if	(isPlayer(cid) then
		if	getPlayerStorageValue(cid, rushTeam, 1) and getPlayerStorageValue(target, rushTeam, 2) then
			setGlobalStorageValue(redDeaths) - 1
		elseif	getPlayerStorageValue(cid, rushTeam, 2) and getPlayerStorageValue(target, rushTeam, 1) then
			setGlobalStorageValue(blueDeaths) - 1
		end
	end
end

Code:
registerCreatureEvent(cid, "killedPlayer")

You will also need this in global events.

LUA:
local items = {2557}

local eventTop.xyz = {x = 1000, y = 1000, z = 7, stackpos = 253}
local eventBottom.xyz = {x = 1000, y = 1000, z = 7, stackpos = 253}
local eventPosition = eventTop.xyz, eventBottom.xyz

local outOfEvent = {x = 1000, y = 1000, z = 7}
local players = getThingfromPos(eventPosition)

function onThink(intravel)
if	getGlobalStorageValue(cid, rushEvent) == 1 then
if getGlobalStorageValue(cid, redDeaths) == 0 or getGlobalStorageValue(cid, blueDeaths) == 0 then
		for i, pid in ipairs(players) do
	if (isPlayer(players)) then
		setPlayerStorageValue(pid, rushPlayer, 0)
		doTeleportThing(pid, outOfEvent)
		doPlayerSetLossPercent(pid, 1, 100)
	if getPlayerStorageValue(pid, rushTeam) == 1 or 2 then
		setPlayerStorageValue(pid, rushTeam, 0)
	end
	if	getPlayerStorageValue(pid, rushPlayer) == 1 or 2 then
		setPlayerStorageValue(pid, rushPlayer, 0)
	end
	if getPlayerStorageValue(pid, rushWinner) then
		setPlayerStorageValue(pid, rushWinner, 0)
		doPlayerAddItem(pid, math.random(items), 1)
if math.random(item) == 1 then
 doPlayerAddItem(pid, items[1], 1)
end
end
end
end
end
end

Code:
<globalevent name="check" interval="1" event="script" value="checkDeaths.lua"/>
 
Last edited:
Back
Top