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

MoveEvent FootBall , automatic. [0.3.6 + 0.4]-Updated-

Doggynub

LUA / C++
Joined
Sep 28, 2008
Messages
2,541
Reaction score
186
* FootBall feild(site part included) : --Based on the request of "nwtr" --

1- Foot ball feild map included
2- Changing places in half time
3- count down timer for players who are playing to show how much left
4- No items can be thrown on the pitch
5- Base speed for all players [ haste , paralyze etc.. will be ignored]
6- choice to add random rewards if you want for winning team
7- own goals are on. If player shoot in his own goal oponent team will geta goal.


-----------------------------------------------------------------------------------

Updated :
1- when player through somthng on ground it wont removed it will go back to him
2- only players playing get the messages and timer
3- Outfit changes, players cant change during event, and they get back to their outfit when match end.
4 - Sitre part added

Progress : --Check date and the time you copied the mod so if there is any changes recopy mod--

-->[17/10/2010] [21:10]

1 fix [Query fixed. ]

-->[15/10/2010] [09:48]

1 fix - 1 test [fixed ball creation and prvent duplication - tested the mod again :p ]


-->[26/9/2010] [07:50]

1 fix - 1 check [fixed ball create even if somone removed it - Checked the addwin and changed it ]

-->[9/9/2010] [00:30]

1 Fix [Query fix- re-execute the queries]

-->[8/9/2010] [00:49]

1 update [Site added-copy whole mod again-]

-->[7/9/2010] [00:19]

1 fix [Fixed speed]

-->[6/9/2010] [22:11]

** 2 fixes [ player outfit - base speed]**



-----------------------------------------------------------------------------------


Video : -watch on full screen to see- + the item back to player when through was updated before i upload video

Football video + tested on both versions

-----------------------------------------------------------------------------------

Notes :
1- Dont change pitch it self
2- Don't play in actionids, and uniqueids.. :p

-----------------------------------------------------------------------------------

Querys for site part:
SQL:
ALTER TABLE players ADD goals int(11) NOT NULL DEFAULT '0';
 
ALTER TABLE players ADD wins int(11) NOT NULL DEFAULT '0';
 
ALTER TABLE players ADD total int(11) NOT NULL DEFAULT '0';

-----------------------------------------------------------------------------------

Go to your mod folder create new xml and paste this inside :
for 0.4 (will just copy and paste) , for 0.3.6 (will copy , paste then follow the insctruction in the bottom of the post)


Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Foot ball" version="1.0" author="Damadger" contact="otland.net" enabled="yes">
<config name="tutorial_m"><![CDATA[
 c = {
 
    speed = 250,   -- base speed for all players.
 
	players = 1,  -- ****Change to number of players per each team, but keep on mind by changing this you will add new positions for each team in : 1- in the team1pos varible | 2- in the destination verible
 
	 pitchpos = {fromx = 1012, fromy = 1015, tox = 1034, toy = 1023, z = 7},    -- here you need to put the x and y from the farest north west sqm of the pitch, to the farest west east sqm in the pitch(including goal)
 
     ballpos = {x = 1023, y = 1019, z = 7}, -- default position of ball in middle of pitch
 
     original = 60 , --match time ( it will be devided by 2 for each half)
 
     team1pos = {
                          --Position of #TEAM_1# players standing to pull the lever
                              {x = 1025, y = 1024, z = 7},
						 --- Position of #TEAM_2# players standing to pull the lever
                              {x = 1023, y = 1024, z = 7}
	                  },
 
	 destination = {
	                    --- team 1 pitch side
                           {x = 1027, y = 1019, z = 7},
						--- team 2 pitch side
                          {x = 1020, y = 1019, z = 7}
                      },
 
     storage = 1919,
 
	 BLUE_SCORE = 1223,
 
	 RED_SCORE = 1224,
 
      rewards = true,     -- by disabling this you will disable the score broadcast and the win add to site part
	       rewards_id = {2494, 2472, 2514, 2160}  --Player are rewarded randomly
	 }
 
 
 
 
]]></config>
 <lib name="football-lib"><![CDATA[
 
function getSpeed(cid,level)
   value = (220 +(2 *(level -1)))
  return value
end
function addTotal(cid)
	return db.executeQuery("UPDATE `players` SET `total` = `total` + " .. 1 .. " WHERE `id`= '" .. getPlayerGUID(cid) .. "' LIMIT 1;")
end
 function addGoal(cid)
    return db.executeQuery("UPDATE `players` SET `goals` = `goals` + " .. 1 .. " WHERE `id`= '" .. getPlayerGUID(cid) .. "' LIMIT 1;")
end
function addWin(cid)
   return db.executeQuery("UPDATE `players` SET `wins` = `wins` + " .. 1 .. " WHERE `id`= '" .. getPlayerGUID(cid) .. "' LIMIT 1;")
end
]]></lib>
<action actionid="2275" event="script"> <![CDATA[
		domodlib('tutorial_m')
		domodlib('football-lib')
local bmale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(bmale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(bmale, {lookType = math.random(128,134), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})
 
local bfemale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(bfemale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(bfemale, {lookType = math.random(136,142), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})
 
local rmale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(rmale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(rmale, {lookType = math.random(128,134), lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
 
local rfemale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(rfemale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(rfemale, {lookType = math.random(136,142),lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
 
 
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
local n = 1
    if getGlobalStorageValue(1222) > 0 then
       doPlayerSendCancel(cid,"There is a on going match right now, please come again later.")
    return true
    end
 local players = {}
	for _, position in ipairs(c.team1pos) do
		local pid = getTopCreature(position).uid
		if(pid == 0 or not isPlayer(pid)) then
			doPlayerSendCancel(cid, "You need ".. c.players * 2 .." players to start the match.")
			return true
		end
 
		table.insert(players, pid)
 
	end
 
	for i, pid in ipairs(players) do
	    setPlayerStorageValue(pid,c.storage,n)
	     n = n+1
		doTeleportThing(pid, c.destination[getPlayerStorageValue(pid,c.storage)], false)
		doSendMagicEffect(c.destination[i], CONST_ME_ENERGYAREA)
 
	end
	for i, pid in ipairs(players) do
	     addTotal(pid)
	    if getPlayerStorageValue(pid,c.storage) > 0 and getPlayerStorageValue(pid,c.storage) <= c.players then
		      doAddCondition(pid, ( getPlayerSex(cid) == 1 and bmale or bfemale) )
	    elseif getPlayerStorageValue(pid,c.storage) > c.players  then
			   doAddCondition(pid, ( getPlayerSex(cid) == 1 and rmale or rfemale) )
	     end
 
	end
 
  	for i = c.pitchpos.fromy, c.pitchpos.toy do
		for j = c.pitchpos.fromx, c.pitchpos.tox do
			local pos = {x = j, y = i, z = c.pitchpos.z}
			local ball = getTileItemById(pos,2109).uid
			if ball > 0 then
				doRemoveItem(ball)
			end
		end
	end
	if getTileItemById(c.ballpos,2109).uid < 1 then
		doCreateItem(2109,1,c.ballpos)
	end
    setGlobalStorageValue(1222,c.original)
 
	return item.itemid == 1945 and doTransformItem(item.uid,1946) or doTransformItem(item.uid,1945)
end
]]> </action>
<movevent type="AddItem" tileitem="1" fromaid="7070" toaid="7072" event="script"><![CDATA[
		domodlib('tutorial_m')
        domodlib('football-lib')
 
		function onAddItem(moveitem, tileitem, position, cid)
 
if(moveitem.itemid ~= 2109) then
	 if getItemDescriptionsById(moveitem.itemid).type == ITEM_TYPE_MAGICFIELD then
	      doRemoveItem(moveitem.uid)
	  else
	   doPlayerAddItem(cid, moveitem.itemid,1)
	   doRemoveItem(moveitem.uid)
 
  	  end
else
   if getGlobalStorageValue(1222) < 0 then
 
	     doTeleportThing(moveitem.uid,c.ballpos)
	else
	      if tileitem.actionid == 7070 then
	             if getGlobalStorageValue(1222) >= c.original/2 then -- blue goal
                      if getPlayerStorageValue(cid,c.storage) > 0 then      
	                         doTeleportThing(moveitem.uid,c.ballpos,false)
		                     addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) > c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) > c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				             setGlobalStorageValue( c.RED_SCORE, getGlobalStorageValue(c.RED_SCORE) +1)
                                     if getPlayerStorageValue(cid,c.storage) > c.players then
									              addGoal(cid)
									 end
		                             for _,tid in ipairs(getPlayersOnline()) do
					                      if getPlayerStorageValue(tid,c.storage) > 0 then
		                                       doTeleportThing(tid,c.destination[getPlayerStorageValue(tid,c.storage)])
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                                  end    
		                             end
                      end
	             elseif getGlobalStorageValue(1222) < c.original/2 then -- red goal
	                  if getPlayerStorageValue(cid,c.storage) > 0 then      
	                       doTeleportThing(moveitem.uid,c.ballpos,false)
		                   addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) <= c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) <= c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				           setGlobalStorageValue( c.BLUE_SCORE, getGlobalStorageValue(c.BLUE_SCORE) +1)
                                     if getPlayerStorageValue(cid,c.storage) <= c.players then
									              addGoal(cid)
									 end
		                             for _,tid in ipairs(getPlayersOnline()) do
 
					                      if getPlayerStorageValue(tid,c.storage) > 0 then
		                                       doTeleportThing(tid, (getPlayerStorageValue(tid,c.storage) <= c.players and c.destination[getPlayerStorageValue(tid,c.storage)+c.players] or c.destination[getPlayerStorageValue(tid,c.storage)-c.players]))
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                                  end    
		                             end
                     end
	             end
          elseif tileitem.actionid == 7071 then	
                if getGlobalStorageValue(1222) >= c.original/ 2 then --red goal
                    if getPlayerStorageValue(cid,c.storage) > 0 then      
	                      doTeleportThing(moveitem.uid,c.ballpos,false)
		                  addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) <= c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) <= c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				          setGlobalStorageValue( c.BLUE_SCORE, getGlobalStorageValue(c.BLUE_SCORE) +1)
                                    if getPlayerStorageValue(cid,c.storage) <= c.players then
									              addGoal(cid)
									end
		                            for _,tid in ipairs(getPlayersOnline()) do
					                     if getPlayerStorageValue(tid,c.storage) > 0 then
		                                      doTeleportThing(tid,c.destination[getPlayerStorageValue(tid,c.storage)])
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                                 end    
		                            end
                    end
	            elseif getGlobalStorageValue(1222) < c.original / 2 then --blue
	                if getPlayerStorageValue(cid,c.storage) > 0 then      
	                      doTeleportThing(moveitem.uid,c.ballpos,false)
		                  addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) > c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) > c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				          setGlobalStorageValue( c.RED_SCORE, getGlobalStorageValue(c.RED_SCORE) +1)
						        if getPlayerStorageValue(cid,c.storage) > c.players then
									              addGoal(cid)
							    end
								for _,tid in ipairs(getPlayersOnline()) do
					                   if getPlayerStorageValue(tid,c.storage) > 0 then
		                                      doTeleportThing(tid, (getPlayerStorageValue(tid,c.storage) <= c.players and c.destination[getPlayerStorageValue(tid,c.storage)+c.players] or c.destination[getPlayerStorageValue(tid,c.storage)-c.players]))
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                               end    
		                        end
                    end
	            end	
          end
     end		  
 
end
 
return true
end
 
]]> </movevent>
 
<movevent type="StepIn" actionid="7072" event="script">
<![CDATA[
		domodlib('tutorial_m')
		domodlib('football-lib')
		function onStepIn(cid, item, position, fromPosition)
   if(getCreatureSpeed(cid) ~= speed) then 
            doRemoveCondition(cid, CONDITION_HASTE) 
            doChangeSpeed(cid, c.speed - getCreatureSpeed(cid)) 
    end 
return true
end
 
 
]]> </movevent>
<globalevent name="timer" interval="1000" event="script"><![CDATA[
		domodlib('tutorial_m')
		domodlib('football-lib')
function onThink(cid,interval)
	local half = c.original/2
	local random_item = c.rewards_id[math.random(1, #c.rewards_id)]
	if getGlobalStorageValue(1222) >= 0 then
		setGlobalStorageValue(1222,getGlobalStorageValue(1222) - 1)
	else
		setGlobalStorageValue(c.BLUE_SCORE,0)
		setGlobalStorageValue(c.RED_SCORE,0)
	end
	for _,cid in ipairs(getPlayersOnline()) do
		if getGlobalStorageValue(1222) >= 0 and getGlobalStorageValue(1222) < half then
			if getPlayerStorageValue(cid,c.storage) > 0 then
				doPlayerSendCancel(cid, "Time per half : "..( os.date("%M : %S",half)).."   |   Second half : "..( os.date("%M : %S",getGlobalStorageValue(1222))).."   |    Red : "..getGlobalStorageValue(c.RED_SCORE).." goals  *  Blue : "..getGlobalStorageValue(c.BLUE_SCORE).." goals")
			end           
		elseif getGlobalStorageValue(1222) >= half and getGlobalStorageValue(1222) <= c.original then
			if getPlayerStorageValue(cid,c.storage) > 0 then
				doPlayerSendCancel(cid, "Time per half : "..( os.date("%M : %S", half )).."   |   First half : "..( os.date("%M : %S",getGlobalStorageValue(1222))).."   |    Red : "..getGlobalStorageValue(c.RED_SCORE).." goals  *  Blue : "..getGlobalStorageValue(c.BLUE_SCORE).." goals")
			end
		end
		if getPlayerStorageValue(cid,c.storage) > 0 then
			if getGlobalStorageValue(1222) < 0 then
				doChangeSpeed(cid, getSpeed(cid, getPlayerLevel(cid)) - getCreatureSpeed(cid))
					if c.rewards == true then
						if getGlobalStorageValue(c.RED_SCORE) > getGlobalStorageValue(c.BLUE_SCORE) then
							if getPlayerStorageValue(cid,c.storage) > c.players then
								doPlayerSendTextMessage(cid,25, "Your teams won the match. And recieved a ["..getItemNameById(random_item).."].")
								doPlayerAddItem(cid,random_item,1)
								addWin(cid)
							elseif getPlayerStorageValue(cid,c.storage) <= c.players then
								doPlayerSendTextMessage(cid,22,"You team have lost. No reward for you!")
							end
						elseif getGlobalStorageValue(c.BLUE_SCORE) > getGlobalStorageValue(c.RED_SCORE) then
							if getPlayerStorageValue(cid,c.storage) <= c.players then
								doPlayerAddItem(cid,random_item,1)
								doPlayerSendTextMessage(cid,25, "Your teams won the match. And recieved a ["..getItemNameById(random_item).."].")
								addWin(cid)
							elseif getPlayerStorageValue(cid,c.storage) > c.players then
									doPlayerSendTextMessage(cid,22,"You team have lost. No reward for you!")
							end
						else
							doPlayerSendTextMessage(cid,22,"Neither of teams won. No rewards!")
						end
					end
					doRemoveConditions(cid, FALSE)
					doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)))
					doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
					setPlayerStorageValue(cid,c.storage,-1)
						for i = c.pitchpos.fromy, c.pitchpos.toy do
							for j = c.pitchpos.fromx, c.pitchpos.tox do
								local pos = {x = j, y = i, z = c.pitchpos.z}
								local ball = getTileItemById(pos,2109).uid
								if ball > 0 then
									doRemoveItem(ball)
								end
							end
						end
						if getTileItemById(c.ballpos,2109).uid < 1 then
							doCreateItem(2109,1,c.ballpos)
						end
 
			elseif getGlobalStorageValue(1222) == half then
				doTeleportThing(cid, (getPlayerStorageValue(cid,c.storage) <= c.players and c.destination[getPlayerStorageValue(cid,c.storage)+c.players] or c.destination[getPlayerStorageValue(cid,c.storage)-c.players]))
				doPlayerSendTextMessage(cid,22,"Refree : Second half begins.")
					for i = 1, #c.destination do
						doSendMagicEffect(c.destination[i],10)
					end
					for i = c.pitchpos.fromy, c.pitchpos.toy do
						for j = c.pitchpos.fromx, c.pitchpos.tox do
							local pos = {x = j, y = i, z = c.pitchpos.z}
							local ball = getTileItemById(pos,2109).uid
								if ball > 0 then
									doRemoveItem(ball)
								end
						end
					end
					if getTileItemById(c.ballpos,2109).uid < 1 then
						doCreateItem(2109,1,c.ballpos)
					end
			end
		end
    end
return true
end
]]></globalevent>
<globalevent name="tim" type="start" event="script"><![CDATA[
		domodlib('tutorial_m')
		domodlib('football-lib')
		function onStartup()
			setGlobalStorageValue(c.BLUE_SCORE,0)
			setGlobalStorageValue(c.RED_SCORE,0)
				for i = c.pitchpos.fromy, c.pitchpos.toy do
					for j = c.pitchpos.fromx, c.pitchpos.tox do
						local pos = {x = j, y = i, z = c.pitchpos.z}
						local ball = getTileItemById(pos,2109).uid
						if ball > 0 then
							doRemoveItem(ball)
						end
					end
				end
				if getTileItemById(c.ballpos,2109).uid < 1 then
					doCreateItem(2109,1,c.ballpos)
				end
			return true
		end
]]></globalevent>
</mod>


Now player for 0.3.6 :

search for this :

Code:
<globalevent name="timer" interval="1000" event="script"><![CDATA[

And change for this :
Code:
<globalevent name="timer" interval="1" event="script"><![CDATA[


--->Map : If somone can supply me with a better football pitch map i will be glad :p

world.rar
--Updated to nologout zone.So players cant log during event.




-->Site part :
[Modern ACC]Football highscores-




Tested on both versions.
 
Last edited:
Its a nice script for sure, but dont you think there are quite many football scripts now? =0
 
Wow, thanks a lot! This is a very nice script, thanks for helping out the community and contributing :)

rep+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
There should be so when you enter fotball field you automatically change your base speed to etc 400. So there is no speed difference even if you are level 10 or 300

Great release btw, looks awesome :D

Dosn't play in aid, uid. <---- Great!
 
Last edited:
There should be so when you enter fotball field you automatically change your base speed to etc 400. So there is no speed difference even if you are level 10 or 300

Great release btw, looks awesome :D

Dosn't play in aid, uid. <---- Great!

Actually it is like that read the 5th point :p
 
It doesn't work for me.
errorxd.png
 
Okay Fixed it was some extra commas :p.... if you arnt going to use reward then dont remove the reward item just type "false" beside rewards


Bumb vedio uploaded +

Tested On both versions.
 
Last edited:
Code:
[03/09/2010 23:50:14] [Error - GlobalEvent Interface] 
[03/09/2010 23:50:14] buffer:onStartup
[03/09/2010 23:50:14] Description: 
[03/09/2010 23:50:14] [string "loadBuffer"]:3: attempt to index global 'c' (a nil value)
[03/09/2010 23:50:14] stack traceback:
[03/09/2010 23:50:14] 	[string "loadBuffer"]:3: in function <[string "loadBuffer"]:2>

[03/09/2010 23:49:46] [Error - MoveEvents Interface] 
[03/09/2010 23:49:46] buffer
[03/09/2010 23:49:46] Description: 
[03/09/2010 23:49:46] [string "c = {..."]:24: '}' expected near 'y'

[03/09/2010 23:54:13] [Error - Action Interface] 
[03/09/2010 23:54:13] buffer:onUse
[03/09/2010 23:54:13] Description: 
[03/09/2010 23:54:13] [string "loadBuffer"]:47: attempt to index global 'c' (a nil value)
[03/09/2010 23:54:13] stack traceback:
[03/09/2010 23:54:13] 	[string "loadBuffer"]:47: in function <[string "loadBuffer"]:40>
 
Then you fu**ed the config part the part where you edit stuff in , pos etc..

@up
if you have a test server and you want to know if you rlly did somthng wron in editing , then put the map in that server and put the mod(without editing pos) and start.



Please more testers.
 
I don't think I fucked up anything.
Script:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Foot ball" version="1.0" author="Damadger" contact="otland.net" enabled="yes">
<config name="tutorial_m"><![CDATA[
 c = {
    players = 3,  -- ****dont change this.***
 
	 pitchpos = {fromx = 1805, fromy = 325, tox = 1825, toy = 333, z = 7},    -- here you need to put the x and y from the farest north west sqm of the pitch, to the farest west east sqm in the pitch(including goal)
 
     ballpos = {x = 1815, y = 330, z = 7}, -- default position of ball in middle of pitch
 
     original = 60 , --match time ( it will be devided by 2 for each half)
 
     team1pos = {
                          --Position of #TEAM_1# players standing to pull the lever
                              {x = 1813, y = 335, z = 7},
                              {x = 1814, y = 335, z = 7},
                              {x = 1815, y = 335, z = 7},
 
			 --- Position of #TEAM_2# players standing to pull the lever
                                {x = 1817, y = 335, z = 7},
								{x = 1818, y = 335, z = 7},
                                {x = 1819, y = 335, z = 7}
	                  },
 
	 destination = {
	                    --- team 1 pitch side
                              {x = 1807 y = 329, z = 7},
	                          {x = 1807 y = 330, z = 7},
                       		  {x = 1807 y = 331, z = 7},	   
 
							--- team 2 pitch side
                              {x = 1824 y = 329, z = 7},
	                          {x = 1824 y = 330, z = 7},
                       		  {x = 1824 y = 331, z = 7}	   
                      },
 
     storage = 1919,
 
	 BLUE_SCORE = 1223,
 
	 RED_SCORE = 1224,
 
 
	 rewards = false,    -- false if you want to disable rewards
	       rewards_id = {2494, 2472, 2514, 2160} --Player are rewarded randomly
	 }
 
]]></config>
<action actionid="2275" event="script"> <![CDATA[
		domodlib('tutorial_m')
local redOutfit_male = {
lookType = math.random(128,134), 
lookHead = 94, 
lookBody = 94, 
lookLegs = 94, 
lookFeet = 94, 
lookTypeEx = 0, 
lookAddons = 3
}
 
local redOutfit_female = {
lookType = math.random(136,142),
lookHead = 94, 
lookBody = 94, 
lookLegs = 94, 
lookFeet = 94, 
lookTypeEx = 0, 
lookAddons = 3
}
local blueOutfit_male = {
lookType = math.random(128,134), 
lookHead = 88, 
lookBody = 88, 
lookLegs = 88, 
lookFeet = 88, 
lookTypeEx = 0, 
lookAddons = 3
}
 
local blueOutfit_female = {
lookType = math.random(136,142), 
lookHead = 88, 
lookBody = 88, 
lookLegs = 88, 
lookFeet = 88, 
lookTypeEx = 0, 
lookAddons = 3
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local n = 1
    if getGlobalStorageValue(1222) > 0 then
       doPlayerSendCancel(cid,"There is a on going match right now, please come again later.")
    return true
    end
 local players = {}
	for _, position in ipairs(c.team1pos) do
		local pid = getTopCreature(position).uid
		if(pid == 0 or not isPlayer(pid)) then
			doPlayerSendCancel(cid, "You need ".. c.players * 2 .." players to start the match.")
			return true
		end
 
		table.insert(players, pid)
	end
 
	for i, pid in ipairs(players) do
	    setPlayerStorageValue(pid,c.storage,n)
	     n = n+1
		doTeleportThing(pid, c.destination[getPlayerStorageValue(pid,c.storage)], false)
		doSendMagicEffect(c.destination[i], CONST_ME_ENERGYAREA)
 
	end
	for i, pid in ipairs(players) do
	    if getPlayerStorageValue(pid,c.storage) > 0 and getPlayerStorageValue(pid,c.storage) <= c.players then
		      doCreatureChangeOutfit(pid,( getPlayerSex(cid) == 1 and blueOutfit_male or blueOutfit_female))
	    elseif getPlayerStorageValue(pid,c.storage) > c.players  then
			   doCreatureChangeOutfit(pid,( getPlayerSex(cid) == 1 and redOutfit_male or redOutfit_female))
	     end
	end
    setGlobalStorageValue(1222,c.original)
 
	return item.itemid == 1945 and doTransformItem(item.uid,1946) or doTransformItem(item.uid,1945)
end
]]> </action>
<movevent type="AddItem" tileitem="1" fromaid="7070" toaid="7072" event="script"><![CDATA[
		domodlib('tutorial_m')
		function onAddItem(moveitem, tileitem, position, cid)
 
if(moveitem.itemid ~= 2109) then
	 if getItemDescriptionsById(moveitem.itemid).type == ITEM_TYPE_MAGICFIELD then
	      doRemoveItem(moveitem.uid)
	  else
	   doPlayerAddItem(cid, moveitem.itemid,1)
	   doRemoveItem(moveitem.uid)
 
  	  end
else
   if getGlobalStorageValue(1222) < 0 then
 
	     doTeleportThing(moveitem.uid,c.ballpos)
	else
	      if tileitem.actionid == 7070 then
	             if getGlobalStorageValue(1222) >= c.original/2 then -- blue goal
                      if getPlayerStorageValue(cid,c.storage) > 0 then      
	                         doTeleportThing(moveitem.uid,c.ballpos,false)
		                     addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) > c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) > c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				             setGlobalStorageValue( c.RED_SCORE, getGlobalStorageValue(c.RED_SCORE) +1)
		                             for _,tid in ipairs(getPlayersOnline()) do
					                      if getPlayerStorageValue(tid,c.storage) > 0 then
		                                       doTeleportThing(tid,c.destination[getPlayerStorageValue(tid,c.storage)])
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                                  end    
		                             end
                      end
	             elseif getGlobalStorageValue(1222) < c.original/2 then -- red goal
	                  if getPlayerStorageValue(cid,c.storage) > 0 then      
	                       doTeleportThing(moveitem.uid,c.ballpos,false)
		                   addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) <= c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) <= c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				           setGlobalStorageValue( c.BLUE_SCORE, getGlobalStorageValue(c.BLUE_SCORE) +1)
		                             for _,tid in ipairs(getPlayersOnline()) do
 
					                      if getPlayerStorageValue(tid,c.storage) > 0 then
		                                       doTeleportThing(tid, (getPlayerStorageValue(tid,c.storage) <= c.players and c.destination[getPlayerStorageValue(tid,c.storage)+c.players] or c.destination[getPlayerStorageValue(tid,c.storage)-c.players]))
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                                  end    
		                             end
                     end
	             end
          elseif tileitem.actionid == 7071 then	
                if getGlobalStorageValue(1222) >= c.original/ 2 then --red goal
                    if getPlayerStorageValue(cid,c.storage) > 0 then      
	                      doTeleportThing(moveitem.uid,c.ballpos,false)
		                  addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) <= c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) <= c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				          setGlobalStorageValue( c.BLUE_SCORE, getGlobalStorageValue(c.BLUE_SCORE) +1)
		                            for _,tid in ipairs(getPlayersOnline()) do
					                     if getPlayerStorageValue(tid,c.storage) > 0 then
		                                      doTeleportThing(tid,c.destination[getPlayerStorageValue(tid,c.storage)])
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                                 end    
		                            end
                    end
	            elseif getGlobalStorageValue(1222) < c.original / 2 then --blue
	                if getPlayerStorageValue(cid,c.storage) > 0 then      
	                      doTeleportThing(moveitem.uid,c.ballpos,false)
		                  addEvent(doSendAnimatedText,20,c.ballpos,getPlayerStorageValue(cid,c.storage) > c.players and "Goal!" or "Own goal!",getPlayerStorageValue(cid,c.storage) > c.players and TEXTCOLOR_LIGHTBLUE or TEXTCOLOR_RED)
				          setGlobalStorageValue( c.RED_SCORE, getGlobalStorageValue(c.RED_SCORE) +1)
		                        for _,tid in ipairs(getPlayersOnline()) do
					                   if getPlayerStorageValue(tid,c.storage) > 0 then
		                                      doTeleportThing(tid, (getPlayerStorageValue(tid,c.storage) <= c.players and c.destination[getPlayerStorageValue(tid,c.storage)+c.players] or c.destination[getPlayerStorageValue(tid,c.storage)-c.players]))
                                                    for i = 1, #c.destination do
		                                                   doSendMagicEffect(c.destination[i],10)
		                                            end
		                               end    
		                        end
                    end
	            end	
          end
     end		  
 
end
 
return true
end
 
]]> </movevent>
 
<movevent type="StepIn" actionid="23301" event="script">
<![CDATA[
		domodlib('tutorial_m')
		function onStepIn(cid, item, position, fromPosition)
   if(getCreatureSpeed(cid) ~= 700) then 
            doRemoveCondition(cid, CONDITION_HASTE) 
            doChangeSpeed(cid, 700 - getCreatureSpeed(cid)) 
    end 
return true
end
 
 
]]> </movevent>
<globalevent name="timer" interval="1000" event="script"><![CDATA[
		domodlib('tutorial_m')
function onThink(cid,interval)
local half = c.original/2
local random_item = c.rewards_id[math.random(1, #c.rewards_id)]
   if getGlobalStorageValue(1222) >= 0 then
            setGlobalStorageValue(1222,getGlobalStorageValue(1222) - 1)
   else
   	 	    setGlobalStorageValue(c.BLUE_SCORE,0)
	        setGlobalStorageValue(c.RED_SCORE,0)
   end
   for _,cid in ipairs(getPlayersOnline()) do
            if getGlobalStorageValue(1222) >= 0 and getGlobalStorageValue(1222) < half then
			   if getPlayerStorageValue(cid,c.storage) > 0 then
                     doPlayerSendCancel(cid, "Time per half : "..( os.date("%M : %S",half)).."   |   Second half : "..( os.date("%M : %S",getGlobalStorageValue(1222))).."   |    Red : "..getGlobalStorageValue(c.RED_SCORE).." goals  *  Blue : "..getGlobalStorageValue(c.BLUE_SCORE).." goals")
               end           
		   elseif getGlobalStorageValue(1222) >= half and getGlobalStorageValue(1222) <= c.original then
		         if getPlayerStorageValue(cid,c.storage) > 0 then
                     doPlayerSendCancel(cid, "Time per half : "..( os.date("%M : %S", half )).."   |   First half : "..( os.date("%M : %S",getGlobalStorageValue(1222))).."   |    Red : "..getGlobalStorageValue(c.RED_SCORE).." goals  *  Blue : "..getGlobalStorageValue(c.BLUE_SCORE).." goals")
                 end
			end
            if getPlayerStorageValue(cid,c.storage) > 0 then
                   if getGlobalStorageValue(1222) < 0 then
	                     if c.rewards == true then
	                          if getGlobalStorageValue(c.RED_SCORE) > getGlobalStorageValue(c.BLUE_SCORE) then
		                             if getPlayerStorageValue(cid,c.storage) > c.players then
			                               doPlayerSendTextMessage(cid,25, "Your teams won the match. And recieved a ["..getItemNameById(random_item).."].")
                                           doPlayerAddItem(cid,random_item,1)
			                         elseif getPlayerStorageValue(cid,c.storage) <= c.players then
			                               doPlayerSendTextMessage(cid,22,"You team have lost. No reward for you!")
			                         end
		                      elseif getGlobalStorageValue(c.BLUE_SCORE) > getGlobalStorageValue(c.RED_SCORE) then
		                             if getPlayerStorageValue(cid,c.storage) <= c.players then
			                               doPlayerSendTextMessage(cid,25, "Your teams won the match. And recieved a ["..getItemNameById(random_item).."].")
                                           doPlayerAddItem(cid,random_item,1)
			                         elseif getPlayerStorageValue(cid,c.storage) > c.players then
			                               doPlayerSendTextMessage(cid,22,"You team have lost. No reward for you!")
			                         end
		                      else
		                           doPlayerSendTextMessage(cid,22,"Neither of teams won. No rewards!")
 
		                       end
		                  end
		                          doChangeSpeed(cid,getCreatureSpeed(cid))
                                  doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)))
	                              doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
	                              setPlayerStorageValue(cid,c.storage,-1)
                                           for i = c.pitchpos.fromy, c.pitchpos.toy do
		                                          for j = c.pitchpos.fromx, c.pitchpos.tox do
			                                            local pos = {x = j, y = i, z = c.pitchpos.z, stackpos = 253}
			                                                       local ball = getTileItemById(pos,2109)
			                                                           if getTileItemById(c.ballpos,2109).uid < 1 then
			                                                                  if ball.uid > 0 then
			                                                                       doTeleportThing(ball.uid,c.ballpos)
			                                                                  end
			                                                           end
		                                           end
		                                  end
 
                    elseif getGlobalStorageValue(1222) == half then
	                            doTeleportThing(cid, (getPlayerStorageValue(cid,c.storage) <= c.players and c.destination[getPlayerStorageValue(cid,c.storage)+c.players] or c.destination[getPlayerStorageValue(cid,c.storage)-c.players]))
                                doPlayerSendTextMessage(cid,22,"Refree : Second half begins.")
		                                for i = 1, #c.destination do
		                                        doSendMagicEffect(c.destination[i],10)
		                                end
		                                for i = c.pitchpos.fromy, c.pitchpos.toy do
		                                        for j = c.pitchpos.fromx, c.pitchpos.tox do
			                                              local pos = {x = j, y = i, z = c.pitchpos.z, stackpos = 253}
			                                              local ball = getTileItemById(pos,2109)
			                                                   if getTileItemById(c.ballpos,2109).uid < 1 then
			                                                          if ball.uid > 0 then
			                                                                 doTeleportThing(ball.uid,c.ballpos)
			                                                          end
			                                                   end
		                                        end
		                                end
 
	                end
            end
    end
return true
end
]]></globalevent>
<globalevent name="tim" type="start" event="script"><![CDATA[
		domodlib('tutorial_m')
		function onStartup()
		 setGlobalStorageValue(c.BLUE_SCORE,0)
	        setGlobalStorageValue(c.RED_SCORE,0)
		if getTileItemById(c.ballpos,2109).uid < 1 then
		  doCreateItem(2109,1,c.ballpos)
		end
		return true
		end
]]></globalevent>
</mod>
 
No you did somthng wrong gimme min i will tell you where

Edit ; there is no commas between the "x" and "z' in the destination values
 
bug or i'm wrong :)
Code:
                          --Position of #TEAM_1# players standing to pull the lever
                              {x = 1025, y = 1024, z = 7},
                              [COLOR="red"][B]{x = 1026, y = 1024, z = 7},
                              {x = 1026, y = 1024, z = 7},[/COLOR][/B]
 
you are Wrong :p As you must change positions lol ..
 
Last edited:
[04/09/2010 02:54:15] > Loading football.xml...[Error - ScriptingManager::loadFromXml] Cannot load mod mods/football.xml
[04/09/2010 02:54:15] Line: 318, Info: StartTag: invalid element name

Help me please :x

using tfs 0.3.6
 
Please recopy the mod and dont player in anything except the config part ..
 
Last edited:
how can i make to just play like 4mins in the football?
i know its in "original = 60" but i don't know what i need to write there):

and ty for the mod :D
 
how can i make to just play like 4mins in the football?
i know its in "original = 60" but i don't know what i need to write there):

and ty for the mod :D

60 is seconds - 4 *60 = 240 (4 minutes)


@Damadger - very nice script - using it on tfs 0.3.6pl1. I had a nice soccer field already built but couldn't make it functional because of the scripts...This script is better than I had imagined when I mapped the field. Rep given...

The only issue I have is that after a soccer game - I have to reload mods to get it to reset. Is there some sort of code we could put into the mod that would automatically reload mods when the players end the game?
 
Back
Top