joadson

Untitled

Jan 28th, 2013
228
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MOD 1
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <mod name="CTF" version="1.0" author="Doggynub" contact="otland.net" enabled="yes">
  4.   <config name="toto"><![CDATA[
  5.  
  6.  
  7.  
  8. --[[ Storage Settings]]--
  9.  
  10. Owner = 1990 -- put empty storage
  11. FLAG2_INn = 1991 -- put empty storage
  12. FLAG_IN = 1992 -- put empty storage
  13. TEAM1_FLAGS = 1993 -- put empty storage
  14. TEAM2_FLAGS = 1994 -- put empty storage
  15. Event_Start = 1995 -- put empty storage
  16. Event_timeend = 1996 -- put empty storage
  17. Event_Tile_Close = 1997 -- put empty storage
  18. joined = 1998 --put empty storage
  19. Timer = 1999 --put empty storage
  20. --------------------------------------
  21.  
  22. --[[ Places setting ]]--
  23.  
  24. BLUE_FLAG = {x=1990,y=2772,z=6} -- Blue flag Place
  25. RED_FLAG = {x=2042,y=2772,z=6} --red flag Place
  26. Tp_Place = {x=160,y=53,z=7} -- Place where the event teleport will be created.
  27. Wait_Place = {x=174,y=54,z=7} -- Positions Players will  be sent when the enter event's teleport
  28. frompos = {x=160, y=54, z=7} --start sqm in the waiting room(1 floor)
  29. topos = {x=174,y=54,z=7} -- end sqm in the waiting room(1 floor)
  30. Red_Position = {x=2040,y=2772,z=7} -- Red team temple pos
  31. Blue_Position = {x=1992,y=2772,z=7} -- Blue team temple pos
  32.  
  33. ---------------------------------------
  34.  
  35. --[[Event setting ]]--
  36.  
  37. Event_WaitTime = 2 -- time for the collection of player then event will start (in minutes)
  38. Event_MaxTime = 20--- in minutes ( this is the max time for an event to bb running )
  39. Players_Speed = 20000 -- put the level of base speed in event ( like if you want the speed of lvl 300 then wright 300)
  40.   Flag_Holder_Speed = 2000 -- [Old-Styled feature] speed for the player when he hold a flag better not to increase.
  41. TEAM2_NAME = "Red" -- team 2 name
  42. TEAM1_NAME = "Green" -- team 1 name
  43. FLAG_SCORE = 3 -- score when team gets he wins
  44. Teleport_On_Score = true -- this teleport all players to their team main position when some one score a flag , make false to disable.
  45. Players_Least_Number = 2 -- this means if there is less than 2 players joined the event will be cancelled
  46. Min_Join_Level = 100 -- min lvl for a player to join event
  47. rewards_random = {
  48.                                                                                                 [60] = { -- Rewards of 60% , if it is then it will randomly give one of the items in the items verible if there you put more than one item there
  49.                                                                                                                                                 items = {2475,2471,2494}
  50.                                                                                                                                 },
  51.                                                                                                 [30] = { -- Rewards of 30%
  52.                                                                                                                                                 items = {32366,8918,2495}
  53.                                                                                                                                 },
  54.  
  55.                                                                                                 [10] = { -- Rewards of 10%
  56.                                                                                                                                                 items = {6132,9693}
  57.                                                                                                                                 }
  58.                                                                                 }
  59.  
  60.   ]]></config>
  61.   <lib name="CTF-lib"><![CDATA[
  62. function isTeamTwo(cid)
  63.         return (isPlayer(cid) and getPlayerStorageValue(cid,5054) > -1)
  64. end
  65. function isTeamOne(cid)
  66.         return (isPlayer(cid) and getPlayerStorageValue(cid,5055) > -1)
  67. end
  68. function resetTheTeams(cid)
  69.         return (isPlayer(cid) and setPlayerStorageValue(cid,5054,-1) and setPlayerStorageValue(cid,5055,-1))
  70. end
  71. function setflagOwner(cid)
  72.         return setPlayerStorageValue(cid,Owner,1)
  73. end
  74. function flagOwner(cid)
  75.         return (isPlayer(cid) and getPlayerStorageValue(cid,Owner) > 0)
  76. end
  77. function releaseBF(cid)
  78.         setGlobalStorageValue(FLAG_IN,-1)
  79.         setPlayerStorageValue(cid,103, 0)
  80.         setPlayerStorageValue(cid,Owner,-1)
  81. return true
  82. end
  83. function releaseRF(cid)
  84.         setGlobalStorageValue(FLAG2_INn,-1)
  85.         setPlayerStorageValue(cid,103, 0)
  86.         setPlayerStorageValue(cid,Owner,-1)
  87. return true
  88. end
  89. function setFirstTeam(cid)
  90.         return setPlayerStorageValue(cid,5055,1)
  91. end
  92. function setSecondTeam(cid)
  93.         return setPlayerStorageValue(cid,5054,2)
  94. end
  95. function addToRed()
  96.         return setGlobalStorageValue(TEAM2_FLAGS,getGlobalStorageValue(TEAM2_FLAGS)+1)
  97. end
  98. function addToBlue()
  99.         return setGlobalStorageValue(TEAM1_FLAGS,getGlobalStorageValue(TEAM1_FLAGS)+1)
  100. end
  101. function getBlueScore()
  102.         return getGlobalStorageValue(TEAM1_FLAGS)
  103. end
  104. function getRedScore()
  105.         return getGlobalStorageValue(TEAM2_FLAGS)
  106. end
  107. function getTheSpeed(level)
  108.         value = (220 +(2 *(level -1)))
  109.         return value
  110. end
  111.  
  112. function resetTheStorage()
  113.         setGlobalStorageValue(Event_Start,-1)
  114.         setGlobalStorageValue(Event_timeend,-1)
  115.         setGlobalStorageValue(TEAM1_FLAGS,0)
  116.         setGlobalStorageValue(FLAG2_INn,-1)
  117.         setGlobalStorageValue(FLAG_IN,-1)
  118.         setGlobalStorageValue(TEAM2_FLAGS,0)
  119. return true
  120. end
  121. function blueStolen()
  122.         return getGlobalStorageValue(FLAG_IN)
  123. end
  124. function redStolen()
  125.         return getGlobalStorageValue(FLAG2_INn)
  126. end
  127. function giveReward(cid)
  128.         local t = math.random(1,100)
  129.         if t <= 10 then
  130.                 local rare = rewards_random[10].items[math.random(1,#rewards_random[10].items)]
  131.                 doPlayerAddItem(cid,rare,1)
  132.                 doPlayerSendTextMessage(cid,25,"Rare rate Reward : you won "..getItemNameById(rare)..".")
  133.  
  134.         elseif t > 10 and t <= 40 then
  135.                 local semi = rewards_random[30].items[math.random(1,#rewards_random[30].items)]
  136.                 doPlayerAddItem(cid,semi,1)
  137.                 doPlayerSendTextMessage(cid,25,"Semi rate Reward : you won "..getItemNameById(semi)..".")
  138.  
  139.  
  140.         elseif t > 40 then
  141.                 local aver = rewards_random[60].items[math.random(1,#rewards_random[60].items)]
  142.                 doPlayerAddItem(cid,aver,1)
  143.                 doPlayerSendTextMessage(cid,25,"Averege rate Reward : you won "..getItemNameById(aver)..".")
  144.         end
  145.         return true
  146. end
  147. ]]></lib>
  148.   <event type="login" name="Tutorial Login" event="script"><![CDATA[
  149. domodlib('toto')
  150. domodlib('CTF-lib')
  151. function onLogin(cid)
  152.         if getGlobalStorageValue(Event_Start) < 1 then
  153.                 if isTeamOne(cid) or isTeamTwo(cid) then
  154.                         resetTheTeams(cid)
  155.                 end
  156.         end
  157.         registerCreatureEvent(cid, "Attk")
  158.         registerCreatureEvent(cid, "ctff")
  159.         registerCreatureEvent(cid, "prepare")
  160. return true
  161. end
  162. ]]></event>
  163.   <event type="combat" name="Attk" event="script"><![CDATA[
  164. domodlib('toto')
  165. domodlib('CTF-lib')
  166.  
  167. function onCombat(cid, target)
  168.         if isTeamOne(cid) and isTeamOne(target) then
  169.                 return false
  170.         end
  171.         if isTeamTwo(cid) and isTeamTwo(target) then
  172.                 return false
  173.         end
  174.         return true
  175. end
  176. ]]></event>
  177.   <event type="statschange" name="prepare" event="script"><![CDATA[
  178. domodlib('toto')
  179. domodlib('CTF-lib')
  180.  
  181. local corpse_ids = {
  182.                 [0] = 3065, -- female
  183.                 [1] = 3058 -- male
  184. }
  185. function onStatsChange(cid, attacker, type, combat, value)
  186.                 if combat == COMBAT_HEALING then
  187.                         return true
  188.                 end
  189.                 if getCreatureHealth(cid) > value then
  190.                         return true
  191.                 end
  192.                 if getGlobalStorageValue(Event_Start) > 0 then
  193.                         if flagOwner(cid) then
  194.                                 if isTeamOne(cid) then
  195.                                         doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").."[Flag Holder].")
  196.                                         doTeleportThing(cid,Blue_Position,false)
  197.                                         doSendMagicEffect(Blue_Position,10)
  198.                                         doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
  199.                                         doCreatureAddMana(cid,getCreatureMaxMana(cid))
  200.                                         releaseRF(cid)
  201.                                                         for _,cid in ipairs(getPlayersOnline()) do
  202.                                                                 if isTeamOne(cid) or isTeamTwo(cid) then
  203.                                                                         doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " has died with the "..TEAM2_NAME.." team flag. The flag is returned back to the "..TEAM1_NAME.." team.")
  204.                                                                 end
  205.                                                         end
  206.                                         return false
  207.                                 elseif isTeamTwo(cid) then
  208.                                         doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").."[Flag Holder].")
  209.                                         doTeleportThing(cid,Red_Position,false)
  210.                                         doSendMagicEffect(Red_Position,10)
  211.                                         doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
  212.                                         doCreatureAddMana(cid,getCreatureMaxMana(cid))
  213.                                         releaseBF(cid)
  214.                                                         for _,cid in ipairs(getPlayersOnline()) do
  215.                                                                 if isTeamOne(cid) or isTeamTwo(cid) then
  216.                                                                         doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " has died with the "..TEAM1_NAME.." team flag. The flag is returned back to the "..TEAM1_NAME.." team.")
  217.                                                                 end
  218.                                                         end
  219.                                 return false
  220.                                 end
  221.  
  222.                         else
  223.                                 if isTeamOne(cid) or isTeamTwo(cid) then
  224.                                         doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").."[Normal kill].")
  225.                                         doTeleportThing(cid,( isTeamTwo(cid) and Red_Position or Blue_Position ),false)
  226.                                         doSendMagicEffect(Red_Position,10)
  227.                                         doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
  228.                                         doCreatureAddMana(cid,getCreatureMaxMana(cid))
  229.                                         return false
  230.                                 end
  231.                         end
  232.  
  233.                 end
  234. return true
  235. end
  236.  
  237. ]]></event>
  238.   <movevent type="StepIn" actionid="6000" event="script"><![CDATA[
  239. domodlib('toto')
  240. domodlib('CTF-lib')
  241.  
  242. function eventEnds()
  243.         doBroadcastMessage('CTF-Event : The '..TEAM2_NAME..' team won and reciaved their reward.')
  244.                 for _,cid in ipairs(getPlayersOnline()) do
  245.                         if isTeamTwo(cid) then
  246.                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  247.                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  248.                                 doRemoveConditions(cid,false)
  249.                                 resetTheTeams(cid)
  250.                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  251.                                 giveReward(cid)
  252.  
  253.                         elseif isTeamOne(cid) then
  254.                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  255.                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  256.                                 doRemoveConditions(cid,false)
  257.                                 doPlayerSendTextMessage(cid,22,'Your team have lost.')
  258.                                 resetTheTeams(cid)
  259.                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  260.                         end
  261.                 end
  262.         addEvent(resetTheStorage,5)
  263. end
  264. function onStepIn(cid, item, position, fromPosition)
  265.         if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
  266.                 if isTeamTwo(cid) and redStolen() < 0 then
  267.                         if not flagOwner(cid) then
  268.                                 doTeleportThing(cid, fromPosition,TRUE)
  269.                                 doSendMagicEffect(getThingPos(cid),2)
  270.                                 doPlayerSendTextMessage(cid, 27, "This is your team flag, you cant take it!")
  271.                         end
  272.                 elseif isTeamTwo(cid) and redStolen() > 0 and blueStolen() < 0 then
  273.                         doPlayerSendTextMessage(cid, 27, "Your team's Flag has been stolen, go get it back!")
  274.                         doTeleportThing(cid, fromPosition,TRUE)
  275.                         doSendMagicEffect(getThingPos(cid),2)
  276.                   return true
  277.                 end
  278.                 if isTeamTwo(cid) and flagOwner(cid) and blueStolen() > 0 and redStolen() < 0 then
  279.                         if getRedScore() == FLAG_SCORE -1 then
  280.                                 addEvent(eventEnds,1000)
  281.                                 addToRed()
  282.                                 doTeleportThing(cid, fromPosition,TRUE)
  283.                                 doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
  284.                                 releaseBF(cid)
  285.                                         for _,tid in ipairs(getPlayersOnline()) do
  286.                                                 if isTeamOne(tid) or isTeamTwo(tid) then
  287.                                                         doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the last flag and earned match win to the ".. TEAM2_NAME.." team!")
  288.                                                 end
  289.                                         end
  290.                         else
  291.                                 releaseBF(cid)
  292.                                 addToRed()
  293.                                 doTeleportThing(cid, fromPosition,TRUE)
  294.                                 doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
  295.                                         for _,tid in ipairs(getPlayersOnline()) do
  296.                                                 if isTeamOne(tid) or isTeamTwo(tid) then
  297.                                                         doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the flag and earned 1 point to the ".. TEAM2_NAME.." team!")
  298.                                                                 if Teleport_On_Score == true then
  299.                                                                         doTeleportThing(tid,( isTeamTwo(tid) and Red_Position or Blue_Position ), false)
  300.                                                                         doSendMagicEffect(getThingPos(tid),10)
  301.                                                                 end
  302.                                                 end
  303.                                         end
  304.                         end
  305.                 end
  306.                 if isTeamOne(cid) then
  307.                         if blueStolen() < 0 and redStolen() > 0 then
  308.                                 if flagOwner(cid) then
  309.                                         doPlayerSendTextMessage(cid, 27, "You already holding the flag!")
  310.                                         doTeleportThing(cid, fromPosition,TRUE)
  311.                                         doSendMagicEffect(getThingPos(cid),2)
  312.                                 elseif (not flagOwner(cid)) then
  313.                                         doPlayerSendTextMessage(cid, 27, "Your Team mates already stole the oponent flag, defend him!")
  314.                                         doTeleportThing(cid, fromPosition,TRUE)
  315.                                         doSendMagicEffect(getThingPos(cid),2)
  316.                                 end
  317.                         elseif blueStolen() > 0 and redStolen() < 0 then
  318.                                 doPlayerSendTextMessage(cid, 27, "Your team's flag is taken you can't capture or steel a flag!")
  319.                                 doTeleportThing(cid, fromPosition,TRUE)
  320.                                 doSendMagicEffect(getThingPos(cid),2)
  321.                         end
  322.                         if redStolen() < 0 and blueStolen() < 0 then
  323.                                 setGlobalStorageValue(FLAG2_INn,1)
  324.                                 setflagOwner(cid)
  325.                                 setPlayerStorageValue(cid,103, os.time()+300)
  326.                                 doTeleportThing(cid, fromPosition,TRUE)
  327.                                 doChangeSpeed(cid, getTheSpeed(Flag_Holder_Speed)- getCreatureSpeed(cid) )
  328.                                         for _,tid in ipairs(getPlayersOnline()) do
  329.                                                 if isTeamOne(tid) or isTeamTwo(tid) then
  330.                                                         doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " stolen the "..TEAM2_NAME.." team flag!")
  331.                                                 end
  332.                                         end
  333.                         end
  334.                 end
  335.         end
  336. return true
  337. end
  338. ]]></movevent>
  339.   <movevent type="StepIn" actionid="3435" event="script"><![CDATA[
  340. domodlib('toto')
  341. domodlib('CTF-lib')
  342. function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
  343.         if getStorage(Event_Tile_Close) > 0 then
  344.                 if getPlayerLevel(cid) < Min_Join_Level then
  345.                    doTeleportThing(cid,fromPosition,false)
  346.                         doSendMagicEffect(fromPosition,10)
  347.                         doPlayerSendTextMessage(cid,21,"Only players of level "..Min_Join_Level.." are allowed to pass.")
  348.                 else
  349.                         doTeleportThing(cid,Wait_Place,false)
  350.                         doSendMagicEffect(Wait_Place,10)
  351.                 end
  352.         else
  353.                 doTeleportThing(cid,fromPosition,false)
  354.                 doSendMagicEffect(fromPosition,10)
  355.                 doPlayerSendTextMessage(cid,21,"Come back later, event is closed now.")
  356.         end
  357. return true
  358. end
  359.  
  360. ]]></movevent>
  361.   <movevent type="StepIn" actionid="6001" event="script"><![CDATA[
  362. domodlib('toto')
  363. domodlib('CTF-lib')
  364.  
  365. function eventEnded()
  366.         if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
  367.                 doBroadcastMessage('CTF-Event : The '.. TEAM1_NAME..' team won and reciaved their reward.')
  368.                         for _,cid in ipairs(getPlayersOnline()) do
  369.                                 if isTeamOne(cid) then
  370.                                         doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  371.                                         doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  372.                                         doRemoveConditions(cid,false)
  373.                                         resetTheTeams(cid)
  374.                                         doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  375.                                         giveReward(cid)
  376.                                 elseif isTeamTwo(cid) then
  377.                                         doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  378.                                         doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  379.                                         doRemoveConditions(cid,false)
  380.                                         doPlayerSendTextMessage(cid,22,'Your team have lost.')
  381.                                         resetTheTeams(cid)
  382.                                         doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  383.                                 end
  384.                         end
  385.         end
  386.         addEvent(resetTheStorage,5)
  387. end
  388. function onStepIn(cid, item, position, fromPosition)
  389.         if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
  390.                 if isTeamOne(cid) and blueStolen() < 0 then
  391.                         if not flagOwner(cid) then
  392.                                 doTeleportThing(cid, fromPosition,TRUE)
  393.                                 doSendMagicEffect(getThingPos(cid),2)
  394.                                 doPlayerSendTextMessage(cid, 27, "This is your team flag, you cant take it!")
  395.                         end
  396.                 elseif isTeamOne(cid) and blueStolen() > 0 and redStolen() < 0 then
  397.                         doPlayerSendTextMessage(cid, 27, "Your team's Flag has been stolen, go get it back!")
  398.                         doTeleportThing(cid, fromPosition,TRUE)
  399.                         doSendMagicEffect(getThingPos(cid),2)
  400.                  return true
  401.                 end
  402.                 if isTeamOne(cid) and flagOwner(cid) and redStolen() > 0 and blueStolen() < 0 then
  403.                         if getBlueScore() == FLAG_SCORE -1 then
  404.                                 addEvent(eventEnded,1000)
  405.                                 addToBlue()
  406.                                 doTeleportThing(cid, fromPosition,TRUE)
  407.                                 doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
  408.                                 releaseRF(cid)
  409.                                         for _,tid in ipairs(getPlayersOnline()) do
  410.                                                 if isTeamOne(tid) or isTeamTwo(tid) then
  411.                                                         doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the last flag and earned match win to the ".. TEAM1_NAME.." team!")
  412.                                                 end
  413.                                         end
  414.                         else
  415.                                 releaseRF(cid)
  416.                                 addToBlue()
  417.                                 doTeleportThing(cid, fromPosition,TRUE)
  418.                                 doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
  419.                                         for _,tid in ipairs(getPlayersOnline()) do
  420.                                                 if isTeamOne(tid) or isTeamTwo(tid) then
  421.                                                         doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the flag and earned 1 point to the ".. TEAM1_NAME.." team!")
  422.                                                                 if Teleport_On_Score == true then
  423.                                                                         doTeleportThing(tid,( isTeamTwo(tid) and Red_Position or Blue_Position ), false)
  424.                                                                         doSendMagicEffect(getThingPos(tid),10)
  425.                                                                 end
  426.                                                 end
  427.                                         end
  428.                         end
  429.                 end
  430.                 if isTeamTwo(cid) then
  431.                         if blueStolen() > 0 and redStolen() < 0 then
  432.                                 if flagOwner(cid) then
  433.                                         doPlayerSendTextMessage(cid, 27, "You already holding the flag!")
  434.                                         doTeleportThing(cid, fromPosition,TRUE)
  435.                                         doSendMagicEffect(getThingPos(cid),2)
  436.                                 elseif (not flagOwner(cid)) then
  437.                                         doPlayerSendTextMessage(cid, 27, "Your Team mates already stole the oponent flag, defend him!")
  438.                                         doTeleportThing(cid, fromPosition,TRUE)
  439.                                         doSendMagicEffect(getThingPos(cid),2)
  440.                                 end
  441.                         elseif redStolen() > 0 and blueStolen() < 0 then
  442.                                 doPlayerSendTextMessage(cid, 27, "Your team's flag is taken you can't capture or steel a flag!")
  443.                                 doTeleportThing(cid, fromPosition,TRUE)
  444.                                 doSendMagicEffect(getThingPos(cid),2)
  445.                         end
  446.                         if blueStolen() < 0 and redStolen() < 0 then
  447.                                 setGlobalStorageValue(FLAG_IN,1)
  448.                                 setflagOwner(cid)
  449.                                 setPlayerStorageValue(cid,103, os.time()+300)
  450.                                 doTeleportThing(cid, fromPosition,TRUE)
  451.                                 doChangeSpeed(cid, getTheSpeed(Flag_Holder_Speed)- getCreatureSpeed(cid) )
  452.                                         for _,tid in ipairs(getPlayersOnline()) do
  453.                                                 if isTeamOne(tid) or isTeamTwo(tid) then
  454.                                                         doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " stolen the "..TEAM1_NAME.." team flag!")
  455.                                                 end
  456.                                         end
  457.                         end
  458.                 end
  459.         end
  460. return true
  461. end
  462. ]]></movevent>
  463.   <globalevent name="ctf" interval="120" event="script"><![CDATA[
  464. domodlib('toto')
  465. domodlib('CTF-lib')
  466. local players = {}
  467. local bmale = createConditionObject(CONDITION_OUTFIT)
  468.                 setConditionParam(bmale, CONDITION_PARAM_TICKS, -1)
  469.                 addOutfitCondition(bmale, {lookType = math.random(128,134), lookHead = 115, lookBody =114, lookLegs = 81, lookFeet = 81, lookTypeEx = 0, lookAddons = 3})
  470.  
  471.         local bfemale = createConditionObject(CONDITION_OUTFIT)
  472.                 setConditionParam(bfemale, CONDITION_PARAM_TICKS, -1)
  473.                 addOutfitCondition(bfemale, {lookType = math.random(136,142), lookHead = 115, lookBody =114, lookLegs = 81, lookFeet = 81, lookTypeEx = 0, lookAddons = 3})
  474.  
  475.         local rmale = createConditionObject(CONDITION_OUTFIT)
  476.                 setConditionParam(rmale, CONDITION_PARAM_TICKS, -1)
  477.                 addOutfitCondition(rmale, {lookType = math.random(128,134), lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
  478.  
  479.         local rfemale = createConditionObject(CONDITION_OUTFIT)
  480.                 setConditionParam(rfemale, CONDITION_PARAM_TICKS, -1)
  481.                 addOutfitCondition(rfemale, {lookType = math.random(136,142),lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
  482.         local fight = createConditionObject(CONDITION_INFIGHT)
  483.                 setConditionParam(fight, CONDITION_PARAM_TICKS, -1)
  484. function eventEnd()
  485.         if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
  486.                 if getRedScore() > getBlueScore() then
  487.                         doBroadcastMessage('CTF-Event : The '.. TEAM2_NAME..' team won and recieved their reward.')
  488.                                 for _,cid in ipairs(getPlayersOnline()) do
  489.                                         if isTeamTwo(cid) then
  490.                                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  491.                                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  492.                                                 doRemoveConditions(cid,false)
  493.                                                 resetTheTeams(cid)
  494.                                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  495.                                                 giveReward(cid)
  496.                                         elseif isTeamOne(cid) then
  497.                                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  498.                                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  499.                                                 doRemoveConditions(cid,false)
  500.                                                 doPlayerSendTextMessage(cid,22,'Your team have lost.')
  501.                                                 resetTheTeams(cid)
  502.                                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  503.                                         end
  504.                                 end
  505.  
  506.                 elseif getRedScore() < getBlueScore() then
  507.                         doBroadcastMessage('CTF-Event : The '.. TEAM1_NAME..' team won and recieved their reward.')
  508.                                 for _,cid in ipairs(getPlayersOnline()) do
  509.                                         if isTeamOne(cid) then
  510.                                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  511.                                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  512.                                                 doRemoveConditions(cid,false)
  513.                                                 resetTheTeams(cid)
  514.                                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  515.                                                 giveReward(cid)
  516.                                         elseif isTeamTwo(cid) then
  517.                                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  518.                                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  519.                                                 doRemoveConditions(cid,false)
  520.                                                 doPlayerSendTextMessage(cid,22,'Your team have lost.')
  521.                                                 resetTheTeams(cid)
  522.                                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  523.                                         end
  524.                                 end
  525.                 elseif getRedScore() == getBlueScore() then
  526.                         doBroadcastMessage('CTF-Event : The Event ended with a draw between both teams.')
  527.                                 for _,cid in ipairs(getPlayersOnline()) do
  528.                                         if isTeamTwo(cid) or isTeamOne(cid) then
  529.                                                 doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
  530.                                                 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
  531.                                                 doRemoveConditions(cid,false)
  532.                                                 doPlayerSendTextMessage(cid,22,'It was a draw between both teams.')
  533.                                                 resetTheTeams(cid)
  534.                                                 doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
  535.                                         end
  536.                                 end
  537.  
  538.                 end
  539.                 addEvent(resetTheStorage,1000)
  540.         end
  541. end
  542.  
  543. function eventStart()
  544.         doSetStorage(Event_Tile_Close,-1)
  545.         setGlobalStorageValue(Event_timeend,1)
  546.         setGlobalStorageValue(Timer, os.time() + Event_MaxTime*60)
  547.         addEvent(eventEnd,Event_MaxTime*60*1000)
  548.  
  549.  
  550.  
  551.                         for v = frompos.x , topos.x do
  552.                                 for k = frompos.y , topos.y do
  553.                                         for i = 1, 200 do
  554.                                                 position = {x = v, y = k, z = 7, stackpos = i}
  555.                                                 pid = getThingfromPos(position).uid
  556.                                                         if(pid ~= nil and isPlayer(pid)) then
  557.                                                                 table.insert(players, pid)
  558.                                                         end
  559.                                         end
  560.                                 end
  561.                         end
  562.                         if math.mod(#players, 2) ~= 0 then
  563.                                 doTeleportThing(players[#players],getTownTemplePosition(getPlayerTown(players[#players])),false)
  564.                                 doSendMagicEffect(getThingPosition(players[#players]),10)
  565.                                 doPlayerSendTextMessage(players[#players], 19, "Sorry, you have been kicked from event to balance teams.")
  566.                                 table.remove(players)
  567.                         end
  568.                         if #players < Players_Least_Number then
  569.                                 doBroadcastMessage("CTF event was cancelled because less than "..Players_Least_Number.." players joined")
  570.                                 resetTheStorage()
  571.                                         if #players > 0 then
  572.                                                 for i = 1,#players do
  573.                                                          doTeleportThing(players[i],getTownTemplePosition(getPlayerTown(players[i])),false)
  574.                                                          doSendMagicEffect(getThingPos(players[i]), 10)
  575.                                                 end
  576.                                         end
  577.                         else
  578.                                          doBroadcastMessage("CTF started")
  579.                                                 for i = 1, math.floor(#players/2) do
  580.                                                         setFirstTeam(players[i])
  581.                                                 end
  582.                                                 for i = math.floor(#players/2)+1 , #players do
  583.                                                         setSecondTeam(players[i])
  584.                                                 end
  585.                                                 for _,cid in ipairs(getPlayersOnline()) do
  586.                                                         if isTeamOne(cid) then
  587.                                                                 if getPlayerSex(cid) == 1 then
  588.                                                                         doAddCondition(cid, bmale)
  589.                                                                 elseif getPlayerSex(cid) ~= 1 then
  590.                                                                         doAddCondition(cid, bfemale)
  591.                                                                 end
  592.                                                                 doAddCondition(cid, fight)
  593.                                                                 doTeleportThing(cid,Blue_Position,false)
  594.                                                                 doSendMagicEffect(Blue_Position, 10)
  595.                                                                 doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid))
  596.                                                         elseif  isTeamTwo(cid) then
  597.                                                                 if getPlayerSex(cid) == 1 then
  598.                                                                         doAddCondition(cid, rmale)
  599.                                                                 elseif getPlayerSex(cid) ~= 1 then
  600.                                                                         doAddCondition(cid, rfemale)
  601.                                                                 end
  602.                                                                 doAddCondition(cid, fight)
  603.                                                                 doTeleportThing(cid,Red_Position,false)
  604.                                                                 doSendMagicEffect(Red_Position, 10)
  605.                                                                 doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid))
  606.                                                         end
  607.                                                 end
  608.                                                 players = {}
  609.  
  610.                         end
  611. end
  612. function onThink(interval)
  613.    if getGlobalStorageValue(Event_Start) < 0 then
  614.                 setGlobalStorageValue(Event_Start,1)
  615.                 doSetStorage(Event_Tile_Close,1)
  616.                 doBroadcastMessage("CTF event is opened and teleport is created. It will start in "..Event_WaitTime.." minutes.")
  617.                 players = {}
  618.                 if getTileItemById(Tp_Place, 1387).uid < 1 then
  619.                         doItemSetAttribute(doCreateItem(1387,1, Tp_Place), "aid", 3435)
  620.                 end
  621.  
  622.                 f= Event_WaitTime - 1
  623.                         for i = 1,Event_WaitTime-1 do
  624.                                 addEvent(doBroadcastMessage,i*60*1000,"CTF event is opened and teleport is created. It will start in "..f.." minutes.")
  625.                                 f= f-1
  626.                         end
  627.                 addEvent(eventStart,Event_WaitTime*60*1000)
  628.         end
  629. return true
  630. end
  631. ]]></globalevent>
  632.   <event type="think" name="ctff" event="script"><![CDATA[
  633. domodlib('toto')
  634. domodlib('CTF-lib')
  635.  
  636. local bl = BLUE_FLAG
  637. local re = RED_FLAG
  638. function onThink(interval)
  639.         if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
  640.                 if redStolen() < 0 then
  641.                         doSendAnimatedText(re,"FLAG!",TEXTCOLOR_DARKRED)
  642.                         doSendMagicEffect(re, CONST_ME_SOUND_RED)
  643.                 end
  644.                 if blueStolen() < 0 then
  645.                         doSendAnimatedText(bl,"FLAG!",TEXTCOLOR_GREEN)
  646.                         doSendMagicEffect(bl, CONST_ME_SOUND_GREEN)
  647.                 end
  648.                 for _, cid in ipairs(getPlayersOnline()) do
  649.                         if flagOwner(cid) then
  650.                                 if isTeamOne(cid) or isTeamTwo(cid) then
  651.                                         if hasCondition(cid,CONDITION_HASTE) then
  652.                                                 doRemoveCondition(cid,CONDITION_HASTE)
  653.                                         end
  654.                                 end
  655.                                 pl = getThingPos(cid)
  656.                                         if isTeamTwo(cid) then
  657.                                                 if getPlayerStorageValue(cid,103) < os.time() then
  658.                                                         releaseBF(cid)
  659.                                                                 for _,cid in ipairs(getPlayersOnline()) do
  660.                                                                         if isTeamOne(cid) or isTeamTwo(cid) then
  661.                                                                                 doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " wasted 5 minutes with FLAG."..TEAM2_NAME.." flag is again on spawn!")
  662.                                                                         end
  663.                                                                 end
  664.                                                 else
  665.                                                         doSendAnimatedText(pl,"FLAG!",TEXTCOLOR_GREEN)
  666.                                                         doSendMagicEffect(pl, CONST_ME_SOUND_GREEN)
  667.                                                 end
  668.                                         elseif isTeamOne(cid) then
  669.                                                 if getPlayerStorageValue(cid,103) < os.time() then
  670.                                                         releaseRF(cid)
  671.                                                                 for _,cid in ipairs(getPlayersOnline()) do
  672.                                                                         if isTeamOne(cid) or isTeamTwo(cid) then
  673.                                                                                 doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " wasted 5 minutes with FLAG."..TEAM1_NAME.." flag is again on spawn!")
  674.                                                                         end
  675.                                                                 end
  676.                                                 else
  677.                                                         doSendAnimatedText(pl,"FLAG!",COLOR_RED)
  678.                                                         doSendMagicEffect(pl, CONST_ME_SOUND_RED)
  679.                                                 end
  680.                                         end
  681.                         end
  682.                 end
  683.         end
  684.   return true
  685. end
  686. ]]></event>
  687.   <globalevent name="ctff22" interval="0.4" event="script"><![CDATA[
  688. domodlib('toto')
  689. domodlib('CTF-lib')
  690.  
  691. function onThink(interval)
  692.         for _,cid in ipairs(getPlayersOnline()) do
  693.                 if isTeamOne(cid) or isTeamTwo(cid) then
  694.                         if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
  695.                                 if getGlobalStorageValue(Timer)- os.time() >= 0 then
  696.                                         doPlayerSendCancel(cid, "Time -> ".. os.date("%M:%S ",getGlobalStorageValue(Timer)- os.time()) .. "  |  ".. TEAM1_NAME.." Score : "..getBlueScore(cid).."/"..FLAG_SCORE.." captures  |  ".. TEAM2_NAME.." Score : "..getRedScore(cid).."/"..FLAG_SCORE.." captures")
  697.                                 end
  698.                         end
  699.                 end
  700.         end
  701. return true
  702. end
  703. ]]></globalevent>
  704.   <globalevent name="starting" type="startup" event="script"><![CDATA[
  705. domodlib('toto')
  706. domodlib('CTF-lib')
  707. function onstartup()
  708.         resetTheStorage()
  709.  
  710. return true
  711. end
  712. ]]></globalevent>
  713. </mod>
  714.  
  715. MOD 2 is giving conflicting with MOD 1
  716.  
  717. [code]<?xml version="1.0" encoding="UTF-8"?>
  718. <mod name="Team Event" version="2.0" author="Damadgerz" contact="support@lualand.net" enabled="yes">
  719.  <description>
  720.    </description>
  721. <config name="teamSetting"><![CDATA[
  722. --[[Local Config]]--
  723.  
  724. --//storages
  725.  
  726. inBlue = 9900
  727. inRed = 9901
  728. joiner = 9907
  729.  
  730. blueKills = 9902
  731. redKills = 9903
  732.  
  733. eventRecruiting = 9904
  734. eventStarted = 9905
  735. eventTime = 9906
  736.  
  737. itemToGet = 9908
  738. countItemToGet = 9909
  739.  
  740. nextExecute = 9910
  741.  
  742. blueCount = 9911
  743. redCount = 9912
  744.  
  745. time = 2
  746. frags = 20
  747.  
  748. --// Positions
  749.  
  750. teleporterPosition = {x = 160, y = 53, z = 7} --Place where the event tp will be created
  751.  
  752. waitRoomPlace = {x = 2162, y = 2860, z = 7} --Place of the waitnig room (the place ppl will wait for team to be full)
  753.  
  754. waitRoomDimensions = { --Enter the start pos[top left sqm] and end pos[bottom right sqm] of waitnig room here
  755.                             startPos = {x = 2153, y = 2853, z = 7},
  756.                             endPos = {x = 2172, y = 2867, z = 7}
  757.                             }
  758.  
  759.  
  760. eventPlaceDimensions = { --Enter the start pos[top left sqm] and end pos[bottom right sqm] of event place here
  761.                             startPos = {x = 2125, y = 2776, z = 7},
  762.                             endPos = {x = 2199, y = 2828, z = 7}
  763.                             }
  764. blueTeamPos = {x = 2189, y = 2782, z = 7}
  765. redTeamPos = {x = 2132, y = 2814, z = 7}
  766.  
  767.  
  768. --// General settings
  769.  
  770. recruitTime = 1 -- Time in minutes to gather players to event, will broadcast event started each min
  771.  
  772. minimumPlayersJoins = 2 --If the number of layer joined is less than that then event would be cancelled
  773.  
  774. balanceTeams = true -- This will balance number of players in both teams the extra player will be kicked out of event
  775.  
  776. removeTeleportOnEventEnd = false -- if you want to remove the tp when the event finish set it to true, normally tp will just be diabled
  777.  
  778. eventMaxTime = 10 -- Time in minutes, this is the max time event will be running. After checks are caried winner is declared
  779.  
  780. showEventSats = false -- This is like a timer that is always there about event stats (time,oponents left, teammates left). It appears in the cancel messages place.
  781.  
  782. sendLeftPlayers = false -- Well this will send to all alive players the names& numebr of the oponents left each interval defined down          
  783. intervalToSendLeftPlayers = 11 -- interval(in seconds) to sendLeftPlayers , must be more than 10 sec
  784.  
  785.  
  786. countDownOnStart = true -- Well this occurs when players are teleported to their places in the arena , so if this is true it start to count down to the joined players then when count down finish they can start killing each other(event really begins)
  787.  
  788. countDownFrom = 10 -- Starts count down from this number when event start, if above is set true            
  789.  
  790. minJoinLevel = 60000 -- minimm lvl that can join event
  791.  
  792. rewards = { --Example [%] = {  {itemid/name, count}  ,..........}   count isnt more than 100
  793.  
  794.                     [65] = { {2476,1} , {"gold coin",500} },
  795.                     [25] = { {"golden armor",1} , {2152,90} },
  796.                     [10] = { {"dragon scale mail",1} , {"crystal coin",10} }
  797.                 }
  798.  
  799.             --[[ Note : make sure if you edited % that sum should be equal to 100, you can add more % elements to suit your needs also more items if you want in each %
  800.                     [65],[25],[10] -> is the % of this item to be found the rest is clear ,items in each % and it will be chosen randomly]]--
  801.  
  802.  
  803. ]]></config>
  804.  <lib name="teamFunctions"><![CDATA[
  805. domodlib('teamSetting')
  806.  
  807. --[[Conditions don't touch]]--
  808. local bmale = createConditionObject(CONDITION_OUTFIT)
  809. setConditionParam(bmale, CONDITION_PARAM_TICKS, -1)
  810. addOutfitCondition(bmale, {lookType = math.random(128,134), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})
  811.  
  812. local bfemale = createConditionObject(CONDITION_OUTFIT)
  813. setConditionParam(bfemale, CONDITION_PARAM_TICKS, -1)
  814. addOutfitCondition(bfemale, {lookType = math.random(136,142), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})
  815.  
  816. local rmale = createConditionObject(CONDITION_OUTFIT)
  817. setConditionParam(rmale, CONDITION_PARAM_TICKS, -1)
  818. addOutfitCondition(rmale, {lookType = math.random(128,134), lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
  819.  
  820. local rfemale = createConditionObject(CONDITION_OUTFIT)
  821. setConditionParam(rfemale, CONDITION_PARAM_TICKS, -1)
  822. addOutfitCondition(rfemale, {lookType = math.random(136,142),lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
  823.  
  824. local infight = createConditionObject(CONDITION_INFIGHT,-1)
  825. --[[Local Config]]--
  826.  
  827. --[[Functions]]--
  828.  
  829. -- General info
  830. function isFightOn()
  831.     return getStorage(eventStarted) > 0
  832. end
  833. function isRecruitOn()
  834.     return getStorage(eventRecruiting) > 0
  835. end
  836. function getMinJoinLevel()
  837.     return minJoinLevel
  838. end
  839. function getJoiners()
  840.     joiners = {}
  841.     for _,cid in ipairs(getPlayersOnline()) do
  842.         if isJoiner(cid) then
  843.             if isInRecruitArea(cid) or isInFightArea(cid) then
  844.                 table.insert(joiners,cid)
  845.             end
  846.         end
  847.     end
  848.     return joiners
  849. end
  850.  
  851. function getLeftMembersNames(team)
  852.     str = "Oponents left("..#team..") :"
  853.     left = ""
  854.     for k,cid in ipairs(team) do left  = (left ..""..(k == 1 and "" or ", ")..""..getCreatureName(cid).."["..getPlayerLevel(cid).."]" ) end
  855.     str = str .." " .. (left == "" and "none" or left).. "."
  856.     return str
  857. end
  858. function disPlayEventStats()
  859.     --if not showEventSats then return false end
  860.     --if getStorage(eventTime) - os.time() <= 0 then return false end
  861.  
  862.     --left = os.date("%M:%S",(getStorage(eventTime) - os.time()))
  863.     for _,cid in ipairs(getJoiners()) do
  864.         oponentsLeft = isBlue(cid) and #getRedMembers() or #getBlueMembers()
  865.         teamMatesLeft = isBlue(cid) and math.max(0,#getBlueMembers()-1) or math.max(0,#getRedMembers()-1)
  866.         doPlayerSendCancel(cid,"Oponents left: "..oponentsLeft.."/"..oponentCount(cid).."   ||   Team-mates left: "..teamMatesLeft.."/".. math.max(0,matesCount(cid)-1))
  867.     end
  868. end
  869.  
  870. function doSendLeftPlayers()
  871.     if not sendLeftPlayers then return false end
  872.     if intervalToSendLeftPlayers <= 10 then return false end
  873.     for _,cid in ipairs(getJoiners()) do
  874.         doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],getLeftMembersNames(isRed(cid) and getBlueMembers() or getRedMembers()))
  875.     end
  876. end
  877.  
  878. function getBlueMembers()
  879.     members = {}
  880.     for _,cid in ipairs(getPlayersOnline()) do
  881.         if isBlue(cid) then
  882.             table.insert(members,cid)
  883.         end
  884.     end
  885.     return members
  886. end
  887. function getRedMembers()
  888.     members = {}
  889.     for _,cid in ipairs(getPlayersOnline()) do
  890.         if isRed(cid) then
  891.             table.insert(members,cid)
  892.         end
  893.     end
  894.     return members
  895. end
  896.  
  897.  
  898. -- starting fight
  899.  
  900. function startRecruiting()
  901.     doSetStorage(eventRecruiting,1)
  902. end
  903. function startEvent()
  904.     doSetStorage(eventRecruiting,-1)
  905.  
  906.     if removeTeleportOnEventEnd then
  907.         tp = getTileItemById(teleporterPosition,1387).uid
  908.         if tp > 0 then doRemoveItem(tp) end
  909.     end
  910.  
  911.     if not balanceTeams() then
  912.         resetEvent()
  913.         return false
  914.     end
  915.     for _,cid in ipairs(getBlueMembers()) do
  916.         doTeleportThing(cid,blueTeamPos,false)
  917.         doSendMagicEffect(getThingPos(cid),10)
  918.     end
  919.     setBlueCount(#getBlueMembers())
  920.     for _,cid in ipairs(getRedMembers()) do
  921.         doTeleportThing(cid,redTeamPos,false)
  922.         doSendMagicEffect(getThingPos(cid),10)
  923.     end
  924.     setRedCount(#getRedMembers())
  925.     startCountDown()
  926.     return true
  927. end
  928.  
  929. function setBlueCount(count)
  930.     doSetStorage(blueCount,-1)
  931.     doSetStorage(blueCount,count)
  932. end
  933. function oponentCount(cid)
  934.     return isBlue(cid) and getStorage(redCount) or getStorage(blueCount)
  935. end
  936. function matesCount(cid)
  937.     return isBlue(cid) and getStorage(blueCount) or getStorage(redCount)
  938. end
  939.  
  940. function setRedCount(count)
  941.     doSetStorage(redCount,-1)
  942.     doSetStorage(redCount,count)
  943. end
  944. function balanceTeams()
  945.     members = getJoiners()
  946.     if #members < minimumPlayersJoins then
  947.         doBroadcastMessage("O evento foi cancelado pois só ".. #members .. " jogadores entraram.")
  948.         return false
  949.     end
  950.     if (math.mod(#members,2) ~= 0) then
  951.         kicked = members[#members]
  952.         ClearEnd(kicked)
  953.         doPlayerSendTextMessage(kicked,MESSAGE_TYPES["info"],"Desculpe, você foi expulso do evento para equilibrar ambas as equipes.")
  954.     end
  955.     count = 1
  956.     for _,cid in ipairs(getJoiners()) do
  957.         if (math.mod(count,2) ~= 0) then
  958.             addToBlue(cid)
  959.         else
  960.             addToRed(cid)
  961.         end
  962.         count = count + 1
  963.     end
  964.     return true
  965. end
  966. function startCountDown()
  967.     if(countDownOnStart) then
  968.         for _,cid in ipairs(getJoiners()) do
  969.             doCreatureSetNoMove(cid,true)
  970.             for i = 0,countDownFrom do
  971.                 addEvent(doPlayerSendTextMessage,i*1000, cid, MESSAGE_TYPES["info"], (i == 0 and countDownFrom or countDownFrom-i) )
  972.             end
  973.         end
  974.         addEvent(startFight,(countDownFrom+1)*1000)
  975.     else
  976.         startFight()
  977.     end
  978. end
  979. function startFight()
  980.     doSetStorage(eventStarted,1)
  981.     for _,cid in ipairs(getJoiners()) do
  982.         doCreatureSetNoMove(cid,false)
  983.         doPlayerSendTextMessage(cid,MESSAGE_TYPES["warning"],"Comece a Luta!")
  984.     end
  985.     --addEvent(endTeamEvent,eventMaxTime*60*1000,"maxTime")
  986.     --doSetStorage(eventTime,os.time()+eventMaxTime*60)
  987. end
  988.  
  989. function teleportToWaitRoom(cid)
  990.     doTeleportThing(cid,waitRoomPlace)
  991.     doSendMagicEffect(waitRoomPlace,10)
  992.     if getPlayerGroupId(cid) < 4 then
  993.         addToJoiners(cid)
  994.     end
  995.     doPlayerSendTextMessage(cid,MESSAGE_TYPES["blue"],"Por favor, seja paciente até o evento começar e não deslogue.")
  996.     return true
  997. end
  998.  
  999. function results()
  1000.         if(getGlobalStorageValue(eventStarted) == 1) then
  1001.             local red = getGlobalStorageValue(redKills)
  1002.             local blue = getGlobalStorageValue(blueKills)          
  1003.             doBroadcastMessage("Rush Events, resultados:\nRed Team score: ".. red .." frags.\nBlue Team score: ".. blue .." frags.\nJogo está em andamento e tem a duração de ".. frags .." frags.", MESSAGE_STATUS_WARNING)
  1004.             addEvent(results, time * 1000 * 60)
  1005.     end
  1006.     end
  1007.  
  1008. -- Modifing teams & checking member states
  1009. function isBlue(cid)
  1010.     return (getPlayerStorageValue(cid,inBlue) > 0)
  1011. end
  1012. function isRed(cid)
  1013.     return (getPlayerStorageValue(cid,inRed) > 0)
  1014. end
  1015. function isJoiner(cid)
  1016.     return (getPlayerStorageValue(cid,joiner) > 0)
  1017. end
  1018. function addToBlue(cid)
  1019.     setPlayerStorageValue(cid,inBlue,1)
  1020.     doAddCondition(cid, (getPlayerSex(cid) == 1) and bmale or bfemale)
  1021.     doAddCondition(cid,infight)
  1022. end
  1023. function addToRed(cid)
  1024.     setPlayerStorageValue(cid,inRed,1)
  1025.     doAddCondition(cid, (getPlayerSex(cid) == 1) and rmale or rfemale)
  1026.     doAddCondition(cid,infight)
  1027. end
  1028. function addToJoiners(cid)
  1029.     setPlayerStorageValue(cid,joiner,1)
  1030. end
  1031. function removeFromBlue(cid)
  1032.     setPlayerStorageValue(cid,inBlue,-1)
  1033. end
  1034. function removeFromRed(cid)
  1035.     setPlayerStorageValue(cid,inRed,-1)
  1036. end
  1037. function removeFromjoiners(cid)
  1038.     setPlayerStorageValue(cid,joiner,-1)
  1039. end
  1040. function isInRecruitArea(cid)
  1041.     return isInRange(getThingPos(cid),waitRoomDimensions.startPos,waitRoomDimensions.endPos)
  1042. end
  1043. function isInFightArea(cid)
  1044.     return isInRange(getThingPos(cid),eventPlaceDimensions.startPos,eventPlaceDimensions.endPos)
  1045. end
  1046. function clearTeamEventStorages(cid)
  1047.    
  1048.     if isInRecruitArea(cid) or isInFightArea(cid) then
  1049.     if isBlue(cid) then
  1050.         doTeleportThing(cid, blueTeamPos)
  1051.         doSendMagicEffect(getThingPos(cid),10)
  1052.         elseif isRed(cid) then
  1053.         doTeleportThing(cid, redTeamPos)
  1054.         doSendMagicEffect(getThingPos(cid),10)
  1055.     end
  1056.     end
  1057.  
  1058.     if isFightOn() then
  1059.         if isJoiner(cid) then
  1060.             if isBlue(cid) then
  1061.                 addRedKills()
  1062.             elseif isRed(cid) then
  1063.                 addBlueKills()
  1064.             end
  1065.             doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"[NOOB] Você morreu, volte e mate quem te matou!")
  1066.         end
  1067.     end
  1068.  
  1069. end
  1070. function ClearEnd(cid)
  1071.     if isInRecruitArea(cid) or isInFightArea(cid) then
  1072.         doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)))
  1073.         doSendMagicEffect(getThingPos(cid),10)
  1074.     end
  1075.  
  1076.     removeFromjoiners(cid)
  1077.     removeFromBlue(cid)
  1078.     removeFromRed(cid)
  1079.     doRemoveConditions(cid, false)
  1080.  
  1081. end
  1082. function haveUnrecivedReward(cid)
  1083.     return getPlayerStorageValue(cid,itemToGet) > 0 and getPlayerStorageValue(cid,countItemToGet) > 0
  1084. end
  1085. function recieveLateReward(cid)
  1086.     if haveUnrecivedReward(cid) then
  1087.         if not doPlayerAddItem(cid,getPlayerStorageValue(cid,itemToGet),getPlayerStorageValue(cid,countItemToGet),false) then
  1088.             msg = "Sua backpack está cheia para receber o item, desocupe algum slot e relogue para receber o premio."
  1089.             doPlayerSendTextMessage(cid,MESSAGE_TYPES["warning"],msg)
  1090.         else
  1091.             setPlayerStorageValue(cid,itemToGet,-1)
  1092.             setPlayerStorageValue(cid,countItemToGet,-1)
  1093.             doPlayerSendTextMessage(cid,MESSAGE_TYPES["info"],"Você recebeu sua recompensa.")
  1094.         end
  1095.     end
  1096. end
  1097.  
  1098. -- Win or lose
  1099. function thereIsAWinner()
  1100.     if redWon() or blueWon() then
  1101.         return true
  1102.     end
  1103.     return false
  1104. end
  1105. function blueWon()
  1106.     return( (#getBlueMembers() > 0 ) and ( getGlobalStorageValue(9903) >= frags) )
  1107. end
  1108. function redWon()
  1109.     return( (#getRedMembers() > 0) and (getGlobalStorageValue(9902) >= frags) )
  1110. end
  1111. function isDraw()
  1112.     --return #getBlueMembers() == #getRedMembers()
  1113.     if blueKills == redKills then
  1114.     end
  1115. end
  1116. function getWinner()
  1117.     if redKills >= frags then
  1118.         return {getBlueMembers(),getRedMembers(),"a equipe Azul venceu"}
  1119.     elseif blueKills >= frags then
  1120.         return {getRedMembers(),getBlueMembers(),"a equipe Vermelha venceu."}
  1121.     else
  1122.         return { {},{},"Empate o.O"}
  1123.     end
  1124. end
  1125.  
  1126. -- Adding kills
  1127. function addBlueKills()
  1128.     doSetStorage(blueKills, math.max(1,getStorage(blueKills)+1))
  1129. end
  1130. function addRedKills()
  1131.     doSetStorage(redKills, math.max(1,getStorage(redKills)+1))
  1132. end
  1133.  
  1134. -- Ending event
  1135.  
  1136. function endTeamEvent(type)
  1137.     if isFightOn() then
  1138.         doSetStorage(eventStarted,-1)
  1139.         doBroadcastMessage("O evento terminou e "..getWinner()[3])
  1140.         if not isDraw() then
  1141.             win(getWinner()[1],type)
  1142.             lose(getWinner()[2],type)
  1143.         else
  1144.             draw()
  1145.         end
  1146.     end
  1147.     addEvent(resetEvent,2 * 1000) --- tp player to home remove all storages and reset event global storages
  1148.     end
  1149.  
  1150. function getPercent()
  1151.     rand= math.random(1,100)
  1152.     prev = 0
  1153.     chosenItem = 0
  1154.     for k, v in pairs(rewards) do
  1155.         if rand > prev and rand <= k+prev then
  1156.             chosenItem = k
  1157.             break
  1158.         else
  1159.             prev =  k+prev
  1160.         end
  1161.     end
  1162.     return chosenItem
  1163. end
  1164.  
  1165. function generateReward(cid)
  1166.     percent = getPercent()
  1167.     if percent == 0 then
  1168.         print("Erro ao receber o item.Fale com ADM")
  1169.         return true
  1170.     end
  1171.  
  1172.     randomizer = rewards[percent][math.random(1,#rewards[percent])]
  1173.     item = not tonumber(randomizer[1]) and getItemIdByName(randomizer[1]) or randomizer[1]
  1174.     count = isItemStackable(item) and math.min(randomizer[2],100) or 1
  1175.     if item == nil or item == 0 then
  1176.         print("Erro ao receber o item.Fale com ADM")
  1177.         return true
  1178.     end
  1179.  
  1180.     msg = "You have won ".. (count == 1 and "a" or count) .." " .. getItemNameById(item) .. "" .. (count == 1 and "" or "s").."."
  1181.  
  1182.     if not doPlayerAddItem(cid,item,count,false) then
  1183.         msg = msg.. "Sua backpack está cheia para receber o item, desocupe algum slot e relogue para receber o premio."
  1184.         setPlayerStorageValue(cid,itemToGet,item)
  1185.         setPlayerStorageValue(cid,countItemToGet,count)
  1186.     end
  1187.  
  1188.     doPlayerSendTextMessage(cid,MESSAGE_TYPES["white"],msg)
  1189.  
  1190. end
  1191.  
  1192.  
  1193.  
  1194. function generateStatsMessage(cid, type, stats)
  1195.     msg = {
  1196.                     ["KO"] = { ["win"] = "Sua equipe venceu por completar os ".. frags .." frags. Você receberá sua recompensa logo, verifique suas mensagens recebidas.",
  1197.                                 ["lose"] = "Sua equipe perdeu porque a equipe adversária completou os  ".. frags .." frags."
  1198.                             },
  1199.                     ["maxTime"] = {
  1200.                                     ["win"] = "Sua equipe venceu por completar os ".. frags .." frags. Você receberá sua recompensa logo, verifique suas mensagens recebidas.",
  1201.                                     ["lose"] = "Sua equipe perdeu porque a equipe adversária completou os  ".. frags .." frags.",
  1202.                                     ["draw"] = "Empate, nenhum time ganhou."
  1203.                                 }
  1204.                 }
  1205.     doPlayerSendTextMessage(cid,MESSAGE_TYPES["info"],msg[type][stats])
  1206.  
  1207. end
  1208. function win(winners,type)
  1209.     for _,cid in ipairs(winners) do
  1210.         generateStatsMessage(cid, type, "win")
  1211.         generateReward(cid)
  1212.     end
  1213. end
  1214. function lose(losers,type)
  1215.     for _,cid in ipairs(losers) do
  1216.         generateStatsMessage(cid, type, "lose")
  1217.     end
  1218. end
  1219. function draw()
  1220.     for _,cid in ipairs(getJoiners()) do
  1221.         generateStatsMessage(cid, "maxTime", "draw")
  1222.     end
  1223. end
  1224.  
  1225. function resetEvent()
  1226.     doSetStorage(eventRecruiting,-1)
  1227.     doSetStorage(nextExecute,-1)
  1228.     doSetStorage(eventStarted,-1)
  1229.     doSetStorage(eventTime,-1)
  1230.     doSetStorage(blueKills,-1)
  1231.     doSetStorage(redKills,-1)
  1232.     for _,cid in ipairs(getPlayersOnline()) do
  1233.         if isBlue(cid) or isRed(cid) or isJoiner(cid) then
  1234.             clearTeamEventStorages(cid)
  1235.             ClearEnd(cid)
  1236.         end
  1237.     end
  1238. end
  1239.  
  1240.  
  1241. ]]></lib>
  1242.  <event type="login" name="teambattleLogin" event="script"><![CDATA[
  1243. domodlib('teamFunctions')
  1244.  
  1245. function onLogin(cid)
  1246.     clearTeamEventStorages(cid)
  1247.     ClearEnd(cid)
  1248.     recieveLateReward(cid)
  1249.  
  1250.     registerCreatureEvent(cid, "teamEventStats")
  1251.     registerCreatureEvent(cid, "teambattleLogout")
  1252.     registerCreatureEvent(cid, "teambattleCombat")
  1253.     return true
  1254. end
  1255. ]]></event>
  1256. <event type="combat" name="teambattleCombat" event="script"><![CDATA[
  1257. domodlib('teamFunctions')
  1258.  
  1259. function onCombat(cid, target)
  1260.     if isFightOn() then
  1261.         if isBlue(cid) and isBlue(target) then
  1262.             return false
  1263.         end
  1264.         if isRed(cid) and isRed(target) then
  1265.             return false
  1266.         end
  1267.     end
  1268.     return true
  1269. end
  1270.  
  1271. ]]></event>
  1272.  <event type="logout" name="teambattleLogout" event="script"><![CDATA[
  1273. domodlib('teamFunctions')
  1274.  
  1275. function onLogout(cid)
  1276.     clearTeamEventStorages(cid)
  1277.     ClearEnd(cid)
  1278.     if thereIsAWinner() then
  1279.         endTeamEvent("KO")
  1280.     end
  1281.     return true
  1282. end
  1283.  
  1284. ]]></event>
  1285. <event type="statschange" name="teamEventStats" event="script"><![CDATA[
  1286. domodlib('teamFunctions')
  1287.  
  1288. corpse_ids = {
  1289.         [0] = 3065, -- female
  1290.         [1] = 3058 -- male
  1291. }
  1292. function onStatsChange(cid, attacker, type, combat, value)
  1293.     if combat == COMBAT_HEALING then
  1294.         return true
  1295.     end
  1296.     if getCreatureHealth(cid) > value then
  1297.         return true
  1298.     end
  1299.  
  1300.     if isInFightArea(cid) and isFightOn() then
  1301.         if isBlue(cid) or isRed(cid) then
  1302.             corpse = doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid))
  1303.             doCreateItem(2016, 2, getThingPos(cid))
  1304.             doItemSetAttribute(corpse, "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".[Evento]")
  1305.             doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
  1306.             clearTeamEventStorages(cid)
  1307.             if thereIsAWinner() then
  1308.                 endTeamEvent("KO")
  1309.             end
  1310.             return false
  1311.         end
  1312.  
  1313.     end
  1314.  
  1315.     return true
  1316. end
  1317. ]]></event>
  1318.  
  1319. <globalevent name = "teamBattleStart" time="01:43" event="script"><![CDATA[
  1320. domodlib('teamFunctions')
  1321.  
  1322. function onTimer()
  1323.     resetEvent()
  1324.     if getTileItemById(teleporterPosition,1387).uid < 1 then
  1325.         tp = doCreateItem(1387,1,teleporterPosition)
  1326.         doItemSetAttribute(tp, "aid", 9990)
  1327.     end
  1328.  
  1329.     startRecruiting()
  1330.     for i = 0, recruitTime-1 do
  1331.         addEvent(doBroadcastMessage, i * 60* 1000,"Rush-War começará em "..(i == 0 and recruitTime or recruitTime-i).." minutes. Entre no portal para participar.",MESSAGE_TYPES["warning"])
  1332.     end
  1333.  
  1334.     addEvent(startEvent, recruitTime * 60 * 1000)
  1335.     addEvent(results, time * 1000 * 60)
  1336.  
  1337.     return true
  1338. end
  1339.  
  1340.  
  1341.  ]]></globalevent>
  1342.  
  1343. <globalevent name = "teamBattletime" interval="1" event="script"><![CDATA[
  1344. domodlib('teamFunctions')
  1345.  
  1346. function onThink()
  1347.     if isFightOn() then
  1348.         disPlayEventStats()
  1349.  
  1350.         if getStorage(nextExecute) == -1 or getStorage(nextExecute) <= os.time() then
  1351.             doSendLeftPlayers()
  1352.             doSetStorage(nextExecute,os.time()+intervalToSendLeftPlayers)
  1353.         end
  1354.     end
  1355.     return true
  1356. end
  1357.  
  1358.  ]]></globalevent>
  1359. <movevent type="StepIn" actionid="9990" event="script"><![CDATA[
  1360. domodlib('teamFunctions')
  1361.  
  1362. function onStepIn(cid, item, position, fromPosition)
  1363.     if not isRecruitOn() then
  1364.         doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"O evento não começou!")
  1365.         doTeleportThing(cid,fromPosition)
  1366.         doSendMagicEffect(fromPosition,2)
  1367.         return true
  1368.     end
  1369.     if getPlayerLevel(cid) < getMinJoinLevel() then
  1370.         doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"Somente jogadores do level ".. getMinJoinLevel().. "+ podem participar do evento.")
  1371.         doTeleportThing(cid,fromPosition)
  1372.         return true
  1373.     end
  1374.     teleportToWaitRoom(cid)
  1375.     return true
  1376. end
  1377.  
  1378.  
  1379. ]]> </movevent>
  1380. </mod>
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×