Advertisement
HR_Shaft

Random Weapons for Asylum_v2 for Phasor v2+

Jan 9th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.15 KB | None | 0 0
  1. --[[ ###  Random Weapons Infinite Ammo v1 for Asylum v2 ###]]--
  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 Asylum v2: Link: http://www.mediafire.com/download/o5kzzo1u2zjriop/asylum_v2.zip
  6.  
  7. team_play = false
  8. game_started = false
  9. weapons = {}
  10. mybattery = {}
  11. needler_clip = 36
  12. shotgun_clip = 6
  13. assault_clip = 32
  14. dmr_clip = 15
  15. flame_clip = 200
  16. pistol_clip = 12
  17. needlerifle_clip = 18
  18. sniper_clip = 4
  19. battery = 0
  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\\asylum\\equipment\\tag_2097"), 0, 90, true, 16.33, -20.81, 8.02)
  85.             local hp_2 = createobject(gettagid("eqip", "deathstar\\asylum\\equipment\\tag_2097"), 0, 90, true, 14.74, -1.14, 8)
  86.             local hp_3 = createobject(gettagid("eqip", "deathstar\\asylum\\equipment\\tag_2097"), 0, 90, true, -8.65, 7.9, 7.95)
  87.             local hp_4 = createobject(gettagid("eqip", "deathstar\\asylum\\equipment\\tag_2097"), 0, 90, true, -12.95, -11.15, 1.16)
  88.             local hp_5 = createobject(gettagid("eqip", "deathstar\\asylum\\equipment\\tag_2097"), 0, 90, true, -11.58, -21.43, 10.15)
  89.             local hp_6 = createobject(gettagid("eqip", "deathstar\\asylum\\equipment\\tag_2097"), 0, 90, true, 15.23, 8.26, 10.15)
  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 Asylum V2!", 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\\asylum\\weapon\\tag_578" -- 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\\asylum\\weapon\\tag_766" -- 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\\asylum\\weapon\\tag_1086" -- 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\\asylum\\weapon\\tag_210" -- 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\\asylum\\weapon\\tag_987" -- 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 = flame_clip
  248.                 end
  249.                 weapons[player] = "deathstar\\asylum\\weapon\\tag_1362" -- Flamethrower
  250.                 sendconsoletext(player, "Flamethrower", 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\\asylum\\weapon\\tag_1534" -- Pistol
  259.                 sendconsoletext(player, "Pistol", 5, 0)
  260.             elseif randomweap == 8 then
  261.                 battery = 0
  262.                 weapons[player] = "deathstar\\asylum\\weapon\\tag_940" -- Plasma Rifle
  263.                 sendconsoletext(player, "Plasma Rifle", 5, 0)
  264.             elseif randomweap == 9 then
  265.                 if randomclip > 19 then
  266.                     clip = 9999
  267.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  268.                 else   
  269.                     clip = sniper_clip
  270.                 end
  271.                 weapons[player] = "deathstar\\asylum\\weapon\\tag_407" -- Sniper Rifle
  272.                 sendconsoletext(player, "Sniper Rifle", 5, 0)
  273.             end
  274.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  275.             assignweapon(player, m_weaponId)
  276.             local m_weapon = getobject(m_weaponId)
  277.            
  278.             if randomweap == 8 then
  279.                 if m_weapon then
  280.                     writefloat(m_weapon + 0x240, battery)
  281.                     updateammo(m_weaponId)
  282.                     infbattery = registertimer(1000, "InfBattery", {m_weapon, player})
  283.                     mybattery[player] = 1
  284.                 end            
  285.             else
  286.                 if m_weapon then
  287.                     writeword(m_weapon + 0x2B6, ammo)
  288.                     writeword(m_weapon + 0x2B8, clip)
  289.                     updateammo(m_weaponId)
  290.                 end
  291.             end
  292.             local random_nade = getrandomnumber(1, 7)
  293.             if m_object then
  294.                 writebyte(m_object, 0x31E, 0)
  295.                 writebyte(m_object, 0x31F, 0)
  296.                 if random_nade == 1 then
  297.                     writebyte(m_object, 0x31E, 2)
  298.                     writebyte(m_object, 0x31F, 2)
  299.                     sendconsoletext(player, "Grenades: 2 of each.", 5, 0)
  300.                 elseif random_nade == 2 then
  301.                     writebyte(m_object, 0x31E, 1)
  302.                     writebyte(m_object, 0x31F, 1)
  303.                     sendconsoletext(player, "Grenades: 1 of each.", 5, 0)
  304.                 elseif random_nade == 3 then   
  305.                     writebyte(m_object, 0x31E, 1)
  306.                     writebyte(m_object, 0x31F, 0)
  307.                     sendconsoletext(player, "Grenades: 1 frag.", 5, 0)
  308.                 elseif random_nade == 4 then
  309.                     writebyte(m_object, 0x31E, 0)
  310.                     writebyte(m_object, 0x31F, 1)
  311.                     sendconsoletext(player, "Grenades: 1 Plasma.", 5, 0)
  312.                 elseif random_nade == 5 then
  313.                     writebyte(m_object, 0x31E, 2)
  314.                     writebyte(m_object, 0x31F, 0)
  315.                     sendconsoletext(player, "Grenades: 2 Frags.", 5, 0)
  316.                 elseif random_nade == 6 then
  317.                     writebyte(m_object, 0x31E, 0)
  318.                     writebyte(m_object, 0x31F, 2)
  319.                     sendconsoletext(player, "Grenades: 2 Plasma.", 5, 0)
  320.                 elseif random_nade == 7 then
  321.                     writebyte(m_object, 0x31E, 0)
  322.                     writebyte(m_object, 0x31F, 0)
  323.                 else
  324.                     writebyte(m_object, 0x31E, 0)
  325.                     writebyte(m_object, 0x31F, 0)              
  326.                 end    
  327.             end
  328.             local random_camo = getrandomnumber(1, 30)
  329.             local id = resolveplayer(player)
  330.             if random_camo > 29 then
  331.                 svcmd("sv_invis " .. id)
  332.                 sendconsoletext(player, "You are Invisible!", 5, 0)
  333.             end                
  334.             if gametype ~= 5 then
  335.                 local random_speed = getrandomnumber(1, 30)
  336.                 if random_speed >= 29 then
  337.                     setspeed(player, 1.5)
  338.                     sendconsoletext(player, "150% Speed!", 5, 0)
  339.                 elseif random_speed >= 1 and random_speed < 3 then 
  340.                     setspeed(player, 1.25)
  341.                     sendconsoletext(player, "125% Speed!", 5, 0)               
  342.                 end
  343.             end
  344.             health = registertimer(0, "ApplyHP", player)   
  345.         end
  346.     end
  347.     return false
  348. end
  349.  
  350. function OnWeaponReload(player, weapon)
  351.     local reload = nil
  352.         if getplayer(player) then
  353.             local m_player = getplayer(player)
  354.             local m_objectId = readdword(m_player + 0x34)
  355.             local m_object = getobject(m_objectId)
  356.             if m_object then
  357.                 local m_weaponId = readdword(m_object + 0x118)
  358.                 if m_weaponId then
  359.                     local m_weapon = getobject(m_weaponId)         
  360.                     local weapname = gettaginfo(readdword(m_weapon))
  361.                     if m_weapon then
  362.                         if weapname == "deathstar\\asylum\\weapon\\tag_1362" then
  363.                             writeword(getobject(weapon) + 0x2B8, flame_clip)
  364.                             updateammo(weapon)
  365.                             reload = false
  366.                         elseif weapname == "deathstar\\asylum\\weapon\\tag_766" then
  367.                             writeword(getobject(weapon) + 0x2B8, needler_clip)
  368.                             updateammo(weapon)
  369.                             reload = false 
  370.                         else
  371.                             reload = true
  372.                         end
  373.                     end    
  374.                 end
  375.             end
  376.         end
  377.     return reload
  378. end
  379.  
  380. function InfBattery(id, count, arg)
  381.     local m_weapon = arg[1]
  382.     local player = arg[2]
  383.     if m_weapon and game_started then
  384.         if readfloat(m_weapon + 0x240) == 1 and mybattery[player] == 1 then
  385.             destroyplayerweaps(player)
  386.             replaceplasmaweap = registertimer(0, "ReplacePlasmaWeap", {player, m_weapon})
  387.             mybattery[player] = 0
  388.         end
  389.     end
  390.     return true
  391. end
  392.  
  393. function ReplacePlasmaWeap(id, count, arg)
  394.     local player = arg[1]
  395.     local m_weapon = arg[2]
  396.     if count == 1 then
  397.         if player and game_started then
  398.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  399.             assignweapon(player, m_weaponId)
  400.             privatesay(player, "Battery recharged.")
  401.         end
  402.         mybattery[player] = 0
  403.     end
  404.     return false
  405. end
  406.  
  407. function getweaponobjectid(player, slot)
  408.     local m_objectId = getplayerobjectid(player)
  409.     if m_objectId then return readdword(getobject(m_objectId) + 0x2F8 + slot*4) end
  410. end
  411.  
  412. function destroyplayerweaps(player)
  413.     for i=0,3 do
  414.         local weap_id = getweaponobjectid(player, i)
  415.         if weap_id ~= 0xFFFFFFFF then destroyobject(weap_id) end
  416.     end
  417. end
  418.  
  419. function OnDamageLookup(receiving, causing, tagid)
  420.    
  421.     if receiving and causing and receiving ~= causing then
  422.         local player = objectidtoplayer(causing)
  423.         local tagname, tagtype = gettaginfo(tagid)
  424.         local melee = string.find(tagname, "tag_239") or string.find(tagname, "tag_1008") or string.find(tagname, "tag_1394") or string.find(tagname, "tag_1546") or string.find(tagname, "tag_429") or string.find(tagname, "tag_1977") or string.find(tagname, "tag_1956")
  425.         local needler = string.find(tagname, "tag_305") or string.find(tagname, "tag_281") or string.find(tagname, "tag_272") or string.find(tagname, "tag_789")       
  426.         local c_player = objectidtoplayer(causing)
  427.         local r_player = objectidtoplayer(receiving)
  428.         --log_msg(1, "tag: " .. tagname)
  429.         if c_player and r_player then
  430.             if melee then odl_multiplier(9999) end 
  431.             if needler then odl_multiplier(1.25) end
  432.         end
  433.     end
  434.  
  435.     return nil
  436. end
  437.  
  438. function OnObjectInteraction(player, objId, mapId)
  439.     local Pass = nil
  440.     local name, type = gettaginfo(mapId)
  441.     if type == "weap" then
  442.         if gametype == 1 or gametype == 3 then
  443.             if name == "deathstar\\asylum\\weapon\\tag_2103" or name == "deathstar\\asylum\\weapon\\tag_2601" then
  444.                 Pass = true
  445.             elseif weapons[player] ~= nil then
  446.                 if name ~= weapons[player] then
  447.                     Pass = false
  448.                 end
  449.             end
  450.         else
  451.             if weapons[player] ~= nil then
  452.                 if name ~= weapons[player] then
  453.                     Pass = false
  454.                 end
  455.             end
  456.         end
  457.     elseif type == "eqip" then
  458.         if name == "deathstar\\asylum\\equipment\\tag_1142" or name == "deathstar\\asylum\\equipment\\tag_1176" then
  459.             Pass = false
  460.         end
  461.     end
  462.     return Pass
  463. end
  464.  
  465. function OnGameEnd(stage)
  466.     if stage == 1 then
  467.         game_started = false   
  468.         if gameweap then
  469.             gameweap = nil
  470.         end
  471.         if infbattery then
  472.             infbattery = nil
  473.         end
  474.         if replaceplasmaweap then
  475.             replaceplasmaweap = nil
  476.         end
  477.         if spawnhp then
  478.             spawnhp = nil
  479.         end        
  480.     elseif stage == 3 then
  481.         for i = 0, 15 do
  482.             if getplayer(i) then
  483.                 privatesay(i, "Thank you for playing Random Weapons for Asylum v2!")
  484.                 privatesay(i, "by H\174 Shaft")
  485.             end
  486.         end    
  487.     end    
  488. end
  489.  
  490.  
  491. -- Start sendconsoletext overloaded by Nugget
  492. console = {}
  493. console.__index = console
  494. consoletimer = registertimer(100, "ConsoleTimer")
  495. phasor_sendconsoletext = sendconsoletext
  496.  
  497. function sendconsoletext(player, message, time, order, align, height, func)
  498.     if player then
  499.         console[player] = console[player] or {}
  500.         local temp = {}
  501.         temp.player = player
  502.         temp.id = nextid(player, order)
  503.         temp.message = message or ""
  504.         temp.time = time or 0.7
  505.         temp.remain = temp.time
  506.         temp.align = align or "left"
  507.         temp.height = height or 0
  508.         if type(func) == "function" then
  509.             temp.func = func
  510.         elseif type(func) == "string" then
  511.             temp.func = _G[func]
  512.         end
  513.         console[player][temp.id] = temp
  514.         setmetatable(console[player][temp.id], console)
  515.         return console[player][temp.id]
  516.     end
  517. end
  518.  
  519. function nextid(player, order)
  520.     if not order then
  521.         local x = 0
  522.         for k,v in pairs(console[player]) do
  523.             if k > x + 1 then
  524.                 return x + 1
  525.             end
  526.             x = x + 1
  527.         end
  528.         return x + 1
  529.     else
  530.         local original = order
  531.         while console[player][order] do
  532.             order = order + 0.001
  533.             if order == original + 0.999 then break end
  534.         end
  535.         return order
  536.     end
  537. end
  538.  
  539. function getmessage(player, order)
  540.     if console[player] then
  541.         if order then
  542.             return console[player][order]
  543.         end
  544.     end
  545. end
  546.  
  547. function getmessages(player)
  548.     return console[player]
  549. end
  550.  
  551. function getmessageblock(player, order)
  552.     local temp = {}
  553.     for k,v in opairs(console[player]) do
  554.         if k >= order and k < order + 1 then
  555.             table.insert(temp, console[player][k])
  556.         end
  557.     end
  558.     return temp
  559. end
  560.  
  561. function console:getmessage()
  562.     return self.message
  563. end
  564.  
  565. function console:append(message, reset)
  566.     if console[self.player] then
  567.         if console[self.player][self.id] then
  568.             if getplayer(self.player) then
  569.                 if reset then
  570.                     if reset == true then
  571.                         console[self.player][self.id].remain = console[self.player][self.id].time
  572.                     elseif tonumber(reset) then
  573.                         console[self.player][self.id].time = tonumber(reset)
  574.                         console[self.player][self.id].remain = tonumber(reset)
  575.                     end
  576.                 end
  577.                 console[self.player][self.id].message = message or ""
  578.                 return true
  579.             end
  580.         end
  581.     end
  582. end
  583.  
  584. function console:shift(order)
  585.     local temp = console[self.player][self.id]
  586.     console[self.player][self.id] = console[self.player][order]
  587.     console[self.player][order] = temp
  588. end
  589.  
  590. function console:pause(time)
  591.     console[self.player][self.id].pausetime = time or 5
  592. end
  593.  
  594. function console:delete()
  595.     console[self.player][self.id] = nil
  596. end
  597.  
  598. function ConsoleTimer(id, count)
  599.     for i,_ in opairs(console) do
  600.         if tonumber(i) then
  601.             if getplayer(i) then
  602.                 for k,v in opairs(console[i]) do
  603.                     if console[i][k].pausetime then
  604.                         console[i][k].pausetime = console[i][k].pausetime - 0.1
  605.                         if console[i][k].pausetime <= 0 then
  606.                             console[i][k].pausetime = nil
  607.                         end
  608.                     else
  609.                         if console[i][k].func then
  610.                             if not console[i][k].func(i) then
  611.                                 console[i][k] = nil
  612.                             end
  613.                         end
  614.                         if console[i][k] then
  615.                             console[i][k].remain = console[i][k].remain - 0.1
  616.                             if console[i][k].remain <= 0 then
  617.                                 console[i][k] = nil
  618.                             end
  619.                         end
  620.                     end
  621.                 end
  622.                 if table.len(console[i]) > 0 then
  623.                     local paused = 0
  624.                     for k,v in pairs(console[i]) do
  625.                         if console[i][k].pausetime then
  626.                             paused = paused + 1
  627.                         end
  628.                     end
  629.                     if paused < table.len(console[i]) then
  630.                         local str = ""
  631.                         for i = 0,30 do
  632.                             str = str .. " \n"
  633.                         end
  634.                         phasor_sendconsoletext(i, str)
  635.                         for k,v in opairs(console[i]) do
  636.                             if not console[i][k].pausetime then
  637.                                 if console[i][k].align == "right" or console[i][k].align == "center" then
  638.                                     phasor_sendconsoletext(i, consolecenter(string.sub(console[i][k].message, 1, 78)))
  639.                                 else
  640.                                     phasor_sendconsoletext(i, string.sub(console[i][k].message, 1, 78))
  641.                                 end
  642.                             end
  643.                         end
  644.                     end
  645.                 end
  646.             else
  647.                 console[i] = nil
  648.             end
  649.         end
  650.     end
  651.    
  652.     return true
  653. end
  654.  
  655. function consolecenter(text)
  656.     if text then
  657.         local len = string.len(text)
  658.         for i = len + 1, 78 do
  659.             text = " " .. text
  660.         end
  661.         return text
  662.     end
  663. end
  664.  
  665. function opairs(t)
  666.     local keys = {}
  667.     for k,v in pairs(t) do
  668.         table.insert(keys, k)
  669.     end    
  670.     table.sort(keys,
  671.     function(a,b)
  672.         if type(a) == "number" and type(b) == "number" then
  673.             return a < b
  674.         end
  675.         an = string.lower(tostring(a))
  676.         bn = string.lower(tostring(b))
  677.         if an ~= bn then
  678.             return an < bn
  679.         else
  680.             return tostring(a) < tostring(b)
  681.         end
  682.     end)
  683.     local count = 1
  684.     return function()
  685.         if table.unpack(keys) then
  686.             local key = keys[count]
  687.             local value = t[key]
  688.             count = count + 1
  689.             return key,value
  690.         end
  691.     end
  692. end
  693.  
  694. function table.len(t)
  695.     local count = 0
  696.     for k,v in pairs(t) do
  697.         count = count + 1
  698.     end
  699.     return count
  700. end
  701. -- Stop sendconsoletext overloaded
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement