Advertisement
HR_Shaft

Random Weapons for The_Cage_un for Phasor v2+

Jan 9th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.88 KB | None | 0 0
  1. --[[ ###  Random Weapons Infinite Ammo v1 for The_Cage_un ###]]--
  2. --[[ ###           by H® Shaft for Phasor v2              ###]]--
  3.  
  4. -- gametype MUST have weapons set to generic
  5. -- Script designed specifically and only for the Halo CE map The Cage un: Link: http://www.mediafire.com/download/nx8a3mr370ncz4z/the_cage_un.zip
  6.  
  7. team_play = false
  8. game_started = false
  9. weapons = {}
  10. mybattery = {}
  11. needler_clip = 40
  12. shotgun_clip = 6
  13. assault_clip = 32
  14. dmr_clip = 15
  15. frgrocket_clip = 5
  16. pistol_clip = 10
  17. needlerifle_clip = 18
  18. glaunch_clip = 5
  19. sniper_clip = 4
  20.  
  21. function GetRequiredVersion()
  22.     return 200
  23. end
  24.  
  25. function OnScriptLoad(process, game, persistent)
  26.     if game == true or game == "PC" then
  27.         GAME = "PC"
  28.         gametype_base = 0x671340
  29.         map_name = readstring(0x698F21)
  30.     else
  31.         GAME = "CE"
  32.         gametype_base = 0x5F5498
  33.         map_name = readstring(0x61D151)
  34.     end
  35.     for i=0,15 do
  36.         if getplayer(i) then
  37.             mybattery[i] = 0
  38.             weapons[i] = {}
  39.         end
  40.     end    
  41.     gametype = readbyte(gametype_base + 0x30)
  42.     team_play = getteamplay()  
  43. end
  44.  
  45. function OnNewGame(map)
  46.     if GAME == "PC" then
  47.         gametype_base = 0x671340
  48.         map_name = readstring(0x698F21)
  49.     elseif GAME == "CE" then
  50.         gametype_base = 0x5F5498
  51.         map_name = readstring(0x61D151)
  52.     end
  53.     for i=0,15 do
  54.         if getplayer(i) then
  55.             mybattery[i] = 0
  56.             weapons[i] = {}
  57.         end
  58.     end
  59.     game_started = true
  60.     gametype = readbyte(gametype_base + 0x30)
  61.     team_play = getteamplay()
  62.     spawnhp = registertimer(90000, "SpawnHP")  
  63. end
  64.  
  65. function getteamplay()
  66.     if readbyte(gametype_base + 0x34) == 1 then
  67.         return true
  68.     else
  69.         return false
  70.     end
  71. end
  72.  
  73. function OnPlayerJoin(player)
  74.     if getplayer(player) then
  75.         mybattery[player] = 0
  76.         weapons[player] = nil
  77.         welcome = registertimer(9000, "Welcome", player)
  78.     end
  79. end
  80.  
  81. function SpawnHP(id, count)
  82.     if game_started then
  83.         if count == 1 or count == 5 or count == 15 then
  84.             local hp_1 = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2145"), 0, 90, true, 0.307, 18.0, 16.97)
  85.             local hp_2 = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2145"), 0, 90, true, -13.70, 19.72, 16.87)
  86.             local hp_3 = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2145"), 0, 90, true, -4.54, 12.70, 17.69)
  87.             local hp_4 = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2145"), 0, 90, true, 6.07, 0.365, 16.22)
  88.             local hp_5 = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2145"), 0, 90, true, 8.89, 5.71, 18.70)
  89.             local hp_6 = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2145"), 0, 90, true, 2.79, 7.26, 21.18)
  90.         end
  91.     end
  92.     return true
  93. end
  94.  
  95. function ApplyHP(id, count, player)
  96.     if count == 1 then
  97.         if player and game_started then
  98.             local name = getname(player)   
  99.             local m_playerObjId = getplayerobjectid(player)
  100.             if m_playerObjId ~= nil then
  101.                 local m_object = getobject(m_playerObjId)
  102.                 local obj_health = readfloat(m_object + 0xE0)
  103.                 if obj_health < 1 then
  104.                     writefloat(m_object + 0xE0, 1)
  105.                     sendconsoletext(player, "Bonus: Your health has been restored.", 5, 0)
  106.                 end
  107.             end
  108.         end
  109.     end
  110.     return false
  111. end
  112.  
  113. function Welcome(id, count, player)
  114.     if count == 1 then
  115.         if getplayer(player) then
  116.             sendconsoletext(player, "Welcome to Random Weapons for The Cage!", 10, 0)
  117.             sendconsoletext(player, "Each time you spawn, you will be given a random weapon.", 10, 0)
  118.         end
  119.     end
  120.     return false   
  121. end
  122.  
  123. function OnPlayerKill(killer, victim, mode)
  124.     local response = nil
  125.     if getplayer(victim) then
  126.         weapons[victim] = nil
  127.         mybattery[victim] = 0
  128.         if mode == 0 then          
  129.             response = false
  130.         else
  131.             response = true
  132.         end    
  133.     end
  134.     return response
  135. end
  136.  
  137. function OnPlayerLeave(player)
  138.     if getplayer(player) then
  139.         weapons[player] = nil
  140.         mybattery[player] = nil
  141.     end
  142. end
  143.  
  144. function OnTeamChange(player, old_team, new_team, relevant)
  145.     if getplayer(player) then
  146.         weapons[player] = nil
  147.         mybattery[player] = 1
  148.     end
  149.     return nil
  150. end
  151.  
  152. function OnPlayerSpawnEnd(player, m_objectId)
  153.     if getplayer(player) then
  154.         weapons[player] = nil
  155.         mybattery[player] = 0
  156.         ChangeFFAColor(player)
  157.         local m_objectId = getplayerobjectid(player)       
  158.         if m_objectId then
  159.             gameweap = registertimer(0, "AssignGameWeapons", player)
  160.         end
  161.     end
  162. end
  163.  
  164. function ChangeFFAColor(player)
  165.     if getplayer(player) then
  166.         local m_objectId = getplayerobjectid(player)
  167.         if m_objectId then
  168.             local m_object = getobject(m_objectId)
  169.             if m_object then
  170.                 local m_player = getplayer(player)
  171.                 local color = getrandomnumber(1, 18)
  172.                 writeword(m_player + 0x60, color)
  173.             end
  174.         end
  175.     end
  176. end
  177.  
  178. function AssignGameWeapons(id, count, player)
  179.     if getplayer(player) and game_started then
  180.         local m_objectId = getplayerobjectid(player)
  181.         local m_object = getobject(m_objectId)
  182.         local clip = 0
  183.         local ammo = 9999
  184.         local battery = 0
  185.        
  186.         if m_objectId then
  187.             for i = 0,3 do
  188.                 local weapID = readdword(getobject(m_objectId), 0x2F8 + i*4)
  189.                 if weapID ~= 0xFFFFFFFF then
  190.                     destroyobject(weapID)
  191.                 end
  192.             end
  193.        
  194.             local randomweap = getrandomnumber(1, 9)
  195.             local randomclip = getrandomnumber(1, 20)
  196.        
  197.             if randomweap == 1 then
  198.                 if randomclip > 19 then
  199.                     clip = 9999
  200.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  201.                 else   
  202.                     clip = shotgun_clip
  203.                 end
  204.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_671" -- Shotgun
  205.                 sendconsoletext(player, "Shotgun", 5, 0)
  206.             elseif randomweap == 2 then
  207.                 if randomclip > 19 then
  208.                     clip = 9999
  209.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  210.                 else   
  211.                     clip = needler_clip
  212.                 end        
  213.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_1031" -- Needler
  214.                 sendconsoletext(player, "Needler", 5, 0)
  215.             elseif randomweap == 3 then
  216.                 if randomclip > 19 then
  217.                     clip = 9999
  218.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  219.                 else   
  220.                     clip = assault_clip
  221.                 end
  222.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_1154" -- Assault Rifle
  223.                 sendconsoletext(player, "Assault Rifle", 5, 0)
  224.             elseif randomweap == 4 then
  225.                 if randomclip > 19 then
  226.                     clip = 9999
  227.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  228.                 else   
  229.                     clip = needlerifle_clip
  230.                 end
  231.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_958" -- Needle Rifle
  232.                 sendconsoletext(player, "Needle Rifle", 5, 0)
  233.             elseif randomweap == 5 then
  234.                 if randomclip > 19 then
  235.                     clip = 9999
  236.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  237.                 else   
  238.                     clip = dmr_clip
  239.                 end
  240.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_854" -- Designated Marksman Rifle
  241.                 sendconsoletext(player, "Designated Marksman Rifle", 5, 0)
  242.             elseif randomweap == 6 then    
  243.                 if randomclip > 19 then
  244.                     clip = 9999
  245.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  246.                 else   
  247.                     clip = frgrocket_clip
  248.                 end
  249.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_313" -- Fuelrod Rocket
  250.                 sendconsoletext(player, "Fuelrod Rocket", 5, 0)
  251.             elseif randomweap == 7 then
  252.                 if randomclip > 19 then
  253.                     clip = 9999
  254.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  255.                 else   
  256.                     clip = pistol_clip
  257.                 end
  258.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_1211" -- Magnum Pistol
  259.                 sendconsoletext(player, "Magnum Pistol", 5, 0)
  260.             elseif randomweap == 8 then
  261.                 if randomclip > 19 then
  262.                     clip = 9999
  263.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  264.                 else   
  265.                     clip = glaunch_clip
  266.                 end
  267.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_1058" -- Grenade Launcher
  268.                 sendconsoletext(player, "Grenade Launcher", 5, 0)
  269.             elseif randomweap == 9 then
  270.                 if randomclip > 19 then
  271.                     clip = 9999
  272.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  273.                 else   
  274.                     clip = sniper_clip
  275.                 end
  276.                 weapons[player] = "deathstar\\the_cage\\weapon\\tag_456" -- Sniper Rifle
  277.                 sendconsoletext(player, "Sniper Rifle", 5, 0)
  278.             end
  279.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  280.             assignweapon(player, m_weaponId)
  281.             local m_weapon = getobject(m_weaponId)
  282.             --[[
  283.             if randomweap == 6 or randomweap == 7 then
  284.                 if m_weapon then
  285.                     writefloat(m_weapon + 0x240, battery)
  286.                     updateammo(m_weaponId)
  287.                     infbattery = registertimer(1000, "InfBattery", {m_weapon, player})
  288.                     mybattery[player] = 1
  289.                 end            
  290.             else ]]--
  291.             if m_weapon then
  292.                 writeword(m_weapon + 0x2B6, ammo)
  293.                 writeword(m_weapon + 0x2B8, clip)
  294.                 updateammo(m_weaponId)
  295.             end
  296.             local random_nade = getrandomnumber(1, 7)
  297.             if m_object then
  298.                 writebyte(m_object, 0x31E, 0)
  299.                 writebyte(m_object, 0x31F, 0)
  300.                 if random_nade == 1 then
  301.                     writebyte(m_object, 0x31E, 2)
  302.                     writebyte(m_object, 0x31F, 2)
  303.                     sendconsoletext(player, "Grenades: 2 of each.", 5, 0)
  304.                 elseif random_nade == 2 then
  305.                     writebyte(m_object, 0x31E, 1)
  306.                     writebyte(m_object, 0x31F, 1)
  307.                     sendconsoletext(player, "Grenades: 1 of each.", 5, 0)
  308.                 elseif random_nade == 3 then   
  309.                     writebyte(m_object, 0x31E, 1)
  310.                     writebyte(m_object, 0x31F, 0)
  311.                     sendconsoletext(player, "Grenades: 1 frag.", 5, 0)
  312.                 elseif random_nade == 4 then
  313.                     writebyte(m_object, 0x31E, 0)
  314.                     writebyte(m_object, 0x31F, 1)
  315.                     sendconsoletext(player, "Grenades: 1 Plasma.", 5, 0)
  316.                 elseif random_nade == 5 then
  317.                     writebyte(m_object, 0x31E, 2)
  318.                     writebyte(m_object, 0x31F, 0)
  319.                     sendconsoletext(player, "Grenades: 2 Frags.", 5, 0)
  320.                 elseif random_nade == 6 then
  321.                     writebyte(m_object, 0x31E, 0)
  322.                     writebyte(m_object, 0x31F, 2)
  323.                     sendconsoletext(player, "Grenades: 2 Plasma.", 5, 0)
  324.                 elseif random_nade == 7 then
  325.                     writebyte(m_object, 0x31E, 0)
  326.                     writebyte(m_object, 0x31F, 0)
  327.                 else
  328.                     writebyte(m_object, 0x31E, 0)
  329.                     writebyte(m_object, 0x31F, 0)              
  330.                 end    
  331.             end
  332.             local random_camo = getrandomnumber(1, 30)
  333.             local id = resolveplayer(player)
  334.             if random_camo > 29 then
  335.                 svcmd("sv_invis " .. id)
  336.                 sendconsoletext(player, "You are Invisible!", 5, 0)
  337.             end
  338.             local random_os = getrandomnumber(1, 30)
  339.             if random_os > 29 then
  340.                 if readfloat(m_object + 0xE4) <= 1 then
  341.                     local x,y,z = getobjectcoords(m_objectId)
  342.                     local os = createobject(gettagid("eqip", "deathstar\\the_cage\\equipment\\tag_2139"), 0, 0, false, x, y, z+0.5)
  343.                     if os ~= nil then writefloat(getobject(os) + 0x70, -2) end
  344.                 else
  345.                     writefloat(m_object + 0xE4, 3)
  346.                 end
  347.                 sendconsoletext(player, "You have an Overshield!", 5, 0)
  348.             end            
  349.             if gametype ~= 5 then
  350.                 local random_speed = getrandomnumber(1, 30)
  351.                 if random_speed >= 29 then
  352.                     setspeed(player, 1.5)
  353.                     sendconsoletext(player, "150% Speed!", 5, 0)
  354.                 elseif random_speed >= 1 and random_speed < 3 then 
  355.                     setspeed(player, 1.25)
  356.                     sendconsoletext(player, "125% Speed!", 5, 0)               
  357.                 end
  358.             end
  359.             health = registertimer(0, "ApplyHP", player)   
  360.         end
  361.     end
  362.     return false
  363. end
  364.  
  365. function OnWeaponReload(player, weapon)
  366.     local reload = nil
  367.         if getplayer(player) then
  368.             local m_player = getplayer(player)
  369.             local m_objectId = readdword(m_player + 0x34)
  370.             local m_object = getobject(m_objectId)
  371.             if m_object then
  372.                 local m_weaponId = readdword(m_object + 0x118)
  373.                 if m_weaponId then
  374.                     local m_weapon = getobject(m_weaponId)         
  375.                     local weapname = gettaginfo(readdword(m_weapon))
  376.                     if m_weapon then
  377.                         if weapname == "deathstar\\the_cage\\weapon\\tag_1058" then
  378.                             writeword(getobject(weapon) + 0x2B8, glaunch_clip)
  379.                             updateammo(weapon)
  380.                             reload = false
  381.                         elseif weapname == "deathstar\\the_cage\\weapon\\tag_1031" then
  382.                             writeword(getobject(weapon) + 0x2B8, needler_clip)
  383.                             updateammo(weapon)
  384.                             reload = false 
  385.                         else
  386.                             reload = true
  387.                         end
  388.                     end    
  389.                 end
  390.             end
  391.         end
  392.     return reload
  393. end
  394.  
  395. function InfBattery(id, count, arg)
  396.     local m_weapon = arg[1]
  397.     local player = arg[2]
  398.     if m_weapon and game_started then
  399.         if readfloat(m_weapon + 0x240) == 1 and mybattery[player] == 1 then
  400.             destroyplayerweaps(player)
  401.             replaceplasmaweap = registertimer(0, "ReplacePlasmaWeap", {player, m_weapon})
  402.             mybattery[player] = 0
  403.         end
  404.     end
  405.     return true
  406. end
  407.  
  408. function ReplacePlasmaWeap(id, count, arg)
  409.     local player = arg[1]
  410.     local m_weapon = arg[2]
  411.     if count == 1 then
  412.         if player and game_started then
  413.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  414.             assignweapon(player, m_weaponId)
  415.             privatesay(player, "Battery recharged.")
  416.         end
  417.         mybattery[player] = 0
  418.     end
  419.     return false
  420. end
  421.  
  422. function getweaponobjectid(player, slot)
  423.     local m_objectId = getplayerobjectid(player)
  424.     if m_objectId then return readdword(getobject(m_objectId) + 0x2F8 + slot*4) end
  425. end
  426.  
  427. function destroyplayerweaps(player)
  428.     for i=0,3 do
  429.         local weap_id = getweaponobjectid(player, i)
  430.         if weap_id ~= 0xFFFFFFFF then destroyobject(weap_id) end
  431.     end
  432. end
  433.  
  434. function OnDamageLookup(receiving, causing, tagid)
  435.    
  436.     if receiving and causing and receiving ~= causing then
  437.         local player = objectidtoplayer(causing)
  438.         local tagname, tagtype = gettaginfo(tagid)
  439.         local melee = string.find(tagname, "tag_874") or string.find(tagname, "tag_1222") or string.find(tagname, "tag_691") or string.find(tagname, "tag_348") or string.find(tagname, "tag_478") or string.find(tagname, "tag_874")
  440.         local needler = string.find(tagname, "tag_1052") or string.find(tagname, "tag_1002")
  441.         local glaunch = string.find(tagname, "tag_1127") or string.find(tagname, "tag_1126")
  442.         local c_player = objectidtoplayer(causing)
  443.         local r_player = objectidtoplayer(receiving)
  444.         --log_msg(1, "tag: " .. tagname)
  445.         if c_player and r_player then
  446.             if melee then odl_multiplier(9999) end 
  447.             if needler then odl_multiplier(1.25) end
  448.             if glaunch then odl_multiplier(1.25) end
  449.         end
  450.     end
  451.  
  452.     return nil
  453. end
  454.  
  455. function OnObjectInteraction(player, objId, mapId)
  456.     local Pass = nil
  457.     local name, type = gettaginfo(mapId)
  458.     if type == "weap" then
  459.         if gametype == 1 or gametype == 3 then
  460.             if name == "deathstar\\the_cage\\weapon\\tag_2687" or name == "deathstar\\the_cage\\weapon\\tag_2151" then
  461.                 Pass = true
  462.             elseif weapons[player] ~= nil then
  463.                 if name ~= weapons[player] then
  464.                     Pass = false
  465.                 end
  466.             end
  467.         else
  468.             if weapons[player] ~= nil then
  469.                 if name ~= weapons[player] then
  470.                     Pass = false
  471.                 end
  472.             end
  473.         end
  474.     elseif type == "eqip" then
  475.         if name == "deathstar\\the_cage\\equipment\\tag_1265" or name == "deathstar\\the_cage\\equipment\\tag_1321" then
  476.             Pass = false
  477.         end
  478.     end
  479.     return Pass
  480. end
  481.  
  482. function OnGameEnd(stage)
  483.     if stage == 1 then
  484.         game_started = false   
  485.         if gameweap then
  486.             gameweap = nil
  487.         end
  488.         if infbattery then
  489.             infbattery = nil
  490.         end
  491.         if replaceplasmaweap then
  492.             replaceplasmaweap = nil
  493.         end
  494.         if spawnhp then
  495.             spawnhp = nil
  496.         end        
  497.     elseif stage == 3 then
  498.         for i = 0, 15 do
  499.             if getplayer(i) then
  500.                 privatesay(i, "Thank you for playing Random Weapons for The Cage!")
  501.                 privatesay(i, "by H\174 Shaft")
  502.             end
  503.         end    
  504.     end    
  505. end
  506.  
  507.  
  508. -- Start sendconsoletext overloaded by Nugget
  509. console = {}
  510. console.__index = console
  511. consoletimer = registertimer(100, "ConsoleTimer")
  512. phasor_sendconsoletext = sendconsoletext
  513.  
  514. function sendconsoletext(player, message, time, order, align, height, func)
  515.     if player then
  516.         console[player] = console[player] or {}
  517.         local temp = {}
  518.         temp.player = player
  519.         temp.id = nextid(player, order)
  520.         temp.message = message or ""
  521.         temp.time = time or 0.7
  522.         temp.remain = temp.time
  523.         temp.align = align or "left"
  524.         temp.height = height or 0
  525.         if type(func) == "function" then
  526.             temp.func = func
  527.         elseif type(func) == "string" then
  528.             temp.func = _G[func]
  529.         end
  530.         console[player][temp.id] = temp
  531.         setmetatable(console[player][temp.id], console)
  532.         return console[player][temp.id]
  533.     end
  534. end
  535.  
  536. function nextid(player, order)
  537.     if not order then
  538.         local x = 0
  539.         for k,v in pairs(console[player]) do
  540.             if k > x + 1 then
  541.                 return x + 1
  542.             end
  543.             x = x + 1
  544.         end
  545.         return x + 1
  546.     else
  547.         local original = order
  548.         while console[player][order] do
  549.             order = order + 0.001
  550.             if order == original + 0.999 then break end
  551.         end
  552.         return order
  553.     end
  554. end
  555.  
  556. function getmessage(player, order)
  557.     if console[player] then
  558.         if order then
  559.             return console[player][order]
  560.         end
  561.     end
  562. end
  563.  
  564. function getmessages(player)
  565.     return console[player]
  566. end
  567.  
  568. function getmessageblock(player, order)
  569.     local temp = {}
  570.     for k,v in opairs(console[player]) do
  571.         if k >= order and k < order + 1 then
  572.             table.insert(temp, console[player][k])
  573.         end
  574.     end
  575.     return temp
  576. end
  577.  
  578. function console:getmessage()
  579.     return self.message
  580. end
  581.  
  582. function console:append(message, reset)
  583.     if console[self.player] then
  584.         if console[self.player][self.id] then
  585.             if getplayer(self.player) then
  586.                 if reset then
  587.                     if reset == true then
  588.                         console[self.player][self.id].remain = console[self.player][self.id].time
  589.                     elseif tonumber(reset) then
  590.                         console[self.player][self.id].time = tonumber(reset)
  591.                         console[self.player][self.id].remain = tonumber(reset)
  592.                     end
  593.                 end
  594.                 console[self.player][self.id].message = message or ""
  595.                 return true
  596.             end
  597.         end
  598.     end
  599. end
  600.  
  601. function console:shift(order)
  602.     local temp = console[self.player][self.id]
  603.     console[self.player][self.id] = console[self.player][order]
  604.     console[self.player][order] = temp
  605. end
  606.  
  607. function console:pause(time)
  608.     console[self.player][self.id].pausetime = time or 5
  609. end
  610.  
  611. function console:delete()
  612.     console[self.player][self.id] = nil
  613. end
  614.  
  615. function ConsoleTimer(id, count)
  616.     for i,_ in opairs(console) do
  617.         if tonumber(i) then
  618.             if getplayer(i) then
  619.                 for k,v in opairs(console[i]) do
  620.                     if console[i][k].pausetime then
  621.                         console[i][k].pausetime = console[i][k].pausetime - 0.1
  622.                         if console[i][k].pausetime <= 0 then
  623.                             console[i][k].pausetime = nil
  624.                         end
  625.                     else
  626.                         if console[i][k].func then
  627.                             if not console[i][k].func(i) then
  628.                                 console[i][k] = nil
  629.                             end
  630.                         end
  631.                         if console[i][k] then
  632.                             console[i][k].remain = console[i][k].remain - 0.1
  633.                             if console[i][k].remain <= 0 then
  634.                                 console[i][k] = nil
  635.                             end
  636.                         end
  637.                     end
  638.                 end
  639.                 if table.len(console[i]) > 0 then
  640.                     local paused = 0
  641.                     for k,v in pairs(console[i]) do
  642.                         if console[i][k].pausetime then
  643.                             paused = paused + 1
  644.                         end
  645.                     end
  646.                     if paused < table.len(console[i]) then
  647.                         local str = ""
  648.                         for i = 0,30 do
  649.                             str = str .. " \n"
  650.                         end
  651.                         phasor_sendconsoletext(i, str)
  652.                         for k,v in opairs(console[i]) do
  653.                             if not console[i][k].pausetime then
  654.                                 if console[i][k].align == "right" or console[i][k].align == "center" then
  655.                                     phasor_sendconsoletext(i, consolecenter(string.sub(console[i][k].message, 1, 78)))
  656.                                 else
  657.                                     phasor_sendconsoletext(i, string.sub(console[i][k].message, 1, 78))
  658.                                 end
  659.                             end
  660.                         end
  661.                     end
  662.                 end
  663.             else
  664.                 console[i] = nil
  665.             end
  666.         end
  667.     end
  668.    
  669.     return true
  670. end
  671.  
  672. function consolecenter(text)
  673.     if text then
  674.         local len = string.len(text)
  675.         for i = len + 1, 78 do
  676.             text = " " .. text
  677.         end
  678.         return text
  679.     end
  680. end
  681.  
  682. function opairs(t)
  683.     local keys = {}
  684.     for k,v in pairs(t) do
  685.         table.insert(keys, k)
  686.     end    
  687.     table.sort(keys,
  688.     function(a,b)
  689.         if type(a) == "number" and type(b) == "number" then
  690.             return a < b
  691.         end
  692.         an = string.lower(tostring(a))
  693.         bn = string.lower(tostring(b))
  694.         if an ~= bn then
  695.             return an < bn
  696.         else
  697.             return tostring(a) < tostring(b)
  698.         end
  699.     end)
  700.     local count = 1
  701.     return function()
  702.         if table.unpack(keys) then
  703.             local key = keys[count]
  704.             local value = t[key]
  705.             count = count + 1
  706.             return key,value
  707.         end
  708.     end
  709. end
  710.  
  711. function table.len(t)
  712.     local count = 0
  713.     for k,v in pairs(t) do
  714.         count = count + 1
  715.     end
  716.     return count
  717. end
  718. -- Stop sendconsoletext overloaded
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement