Advertisement
HR_Shaft

Random Weapons for snowgrove_1 for Phasor v2+

Jan 9th, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 18.79 KB | None | 0 0
  1. --[[ ###  Random Weapons v1 for snowgrove_1 ###]]--
  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 snowgrove_1: Link: http://hce.halomaps.org/index.cfm?fid=6932
  6.  
  7. team_play = false
  8. game_started = false
  9. weapons = {}
  10. mybattery = {}
  11. spiker_clip = 40
  12. brifle_clip = 36
  13. acarbine_clip = 48
  14. smg_clip = 60
  15. needler_clip = 30
  16. shotgun_clip = 12
  17. assault_clip = 32
  18. flame_clip = 100
  19. pistol_clip = 12
  20. rocket_clip = 2
  21. sniper_clip = 4
  22. rocket_ammo = 4
  23. battery = 0
  24.  
  25.  
  26. function GetRequiredVersion()
  27.     return 200
  28. end
  29.  
  30. function OnScriptLoad(process, game, persistent)
  31.     if game == true or game == "PC" then
  32.         GAME = "PC"
  33.         gametype_base = 0x671340
  34.         map_name = readstring(0x698F21)
  35.     else
  36.         GAME = "CE"
  37.         gametype_base = 0x5F5498
  38.         map_name = readstring(0x61D151)
  39.     end
  40.     for i=0,15 do
  41.         if getplayer(i) then
  42.             mybattery[i] = 0
  43.             weapons[i] = {}
  44.         end
  45.     end    
  46.     gametype = readbyte(gametype_base + 0x30)
  47.     team_play = getteamplay()  
  48. end
  49.  
  50. function OnNewGame(map)
  51.     if GAME == "PC" then
  52.         gametype_base = 0x671340
  53.         map_name = readstring(0x698F21)
  54.     elseif GAME == "CE" then
  55.         gametype_base = 0x5F5498
  56.         map_name = readstring(0x61D151)
  57.     end
  58.     for i=0,15 do
  59.         if getplayer(i) then
  60.             mybattery[i] = 0
  61.             weapons[i] = {}
  62.         end
  63.     end
  64.     game_started = true
  65.     gametype = readbyte(gametype_base + 0x30)
  66.     team_play = getteamplay()      
  67. end
  68.  
  69. function getteamplay()
  70.     if readbyte(gametype_base + 0x34) == 1 then
  71.         return true
  72.     else
  73.         return false
  74.     end
  75. end
  76.  
  77. function OnPlayerJoin(player)
  78.     if getplayer(player) then
  79.         mybattery[player] = 0
  80.         weapons[player] = nil
  81.         welcome = registertimer(9000, "Welcome", player)
  82.     end
  83. end
  84.  
  85. function Welcome(id, count, player)
  86.     if count == 1 then
  87.         if getplayer(player) then
  88.             sendconsoletext(player, "Welcome to Random Weapons for CMT Snow Grove!", 10, 0)
  89.             sendconsoletext(player, "Each time you spawn, you will be given a random weapon.", 10, 0)
  90.         end
  91.     end
  92.     return false   
  93. end
  94.  
  95. function OnPlayerKill(killer, victim, mode)
  96.     local response = nil
  97.     if getplayer(victim) then
  98.         weapons[victim] = nil
  99.         mybattery[victim] = 0
  100.         if mode == 0 then          
  101.             response = false
  102.         else
  103.             response = true
  104.         end    
  105.     end
  106.     return response
  107. end
  108.  
  109. function OnPlayerLeave(player)
  110.     if getplayer(player) then
  111.         weapons[player] = nil
  112.         mybattery[player] = nil
  113.     end
  114. end
  115.  
  116. function OnTeamChange(player, old_team, new_team, relevant)
  117.     if getplayer(player) then
  118.         weapons[player] = nil
  119.         mybattery[player] = 1
  120.     end
  121.     return nil
  122. end
  123.  
  124. function OnPlayerSpawnEnd(player, m_objectId)
  125.     if getplayer(player) then
  126.         weapons[player] = nil
  127.         mybattery[player] = 0
  128.         ChangeFFAColor(player)
  129.         local m_objectId = getplayerobjectid(player)       
  130.         if m_objectId then
  131.             gameweap = registertimer(0, "AssignGameWeapons", player)
  132.         end
  133.     end
  134. end
  135.  
  136. function ChangeFFAColor(player)
  137.     if getplayer(player) then
  138.         local m_objectId = getplayerobjectid(player)
  139.         if m_objectId then
  140.             local m_object = getobject(m_objectId)
  141.             if m_object then
  142.                 local m_player = getplayer(player)
  143.                 local color = getrandomnumber(1, 18)
  144.                 writeword(m_player + 0x60, color)
  145.             end
  146.         end
  147.     end
  148. end
  149.  
  150. function AssignGameWeapons(id, count, player)
  151.     if getplayer(player) and game_started then
  152.         local m_objectId = getplayerobjectid(player)
  153.         local m_object = getobject(m_objectId)
  154.         local clip = 0
  155.         local ammo = 9999
  156.         local battery = 0
  157.  
  158.         if m_objectId then
  159.             for i = 0,3 do
  160.                 local weapID = readdword(getobject(m_objectId), 0x2F8 + i*4)
  161.                 if weapID ~= 0xFFFFFFFF then
  162.                     destroyobject(weapID)
  163.                 end
  164.             end
  165.             local randomweap = getrandomnumber(1, 12)
  166.             local randomclip = getrandomnumber(1, 20)
  167.             if randomweap == 1 then
  168.                 battery = 0
  169.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1020" -- plasma pistol - 1
  170.                 sendconsoletext(player, "Plasma Pistol", 5, 0)
  171.             elseif randomweap == 2 then
  172.                 if randomclip > 19 then
  173.                     clip = 9999
  174.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  175.                 else   
  176.                     clip = spiker_clip
  177.                 end        
  178.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1590" -- brute spiker - 2
  179.                 sendconsoletext(player, "Brute Spiker", 5, 0)
  180.             elseif randomweap == 3 then
  181.                 if randomclip > 19 then
  182.                     clip = 9999
  183.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  184.                 else   
  185.                     clip = needler_clip
  186.                 end
  187.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1374" -- needler - 3
  188.                 sendconsoletext(player, "Needler", 5, 0)
  189.             elseif randomweap == 4 then
  190.                 battery = 0
  191.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_842" -- plasma rifle - 4
  192.                 sendconsoletext(player, "Plasma Rifle", 5, 0)              
  193.             elseif randomweap == 5 then
  194.                 if randomclip > 19 then
  195.                     clip = 9999
  196.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  197.                 else   
  198.                     clip = shotgun_clip
  199.                 end
  200.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_842" -- shotgun - 5
  201.                 sendconsoletext(player, "Shotgun", 5, 0)
  202.             elseif randomweap == 6 then
  203.                 if randomclip > 19 then
  204.                     clip = 9999
  205.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  206.                 else   
  207.                     clip = smg_clip
  208.                 end
  209.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1690" -- smg - 6
  210.                 sendconsoletext(player, "Magnum Pistol", 5, 0)
  211.             elseif randomweap == 7 then
  212.                 if randomclip > 19 then
  213.                     clip = 9999
  214.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  215.                 else   
  216.                     clip = pistol_clip
  217.                 end        
  218.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1457" -- pistol - 7
  219.                 sendconsoletext(player, "Magnum Pistol", 5, 0)
  220.             elseif randomweap == 8 then
  221.                 if randomclip > 19 then
  222.                     clip = 9999
  223.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  224.                 else   
  225.                     clip = assault_clip
  226.                 end
  227.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1312" -- assault rifle - 8
  228.                 sendconsoletext(player, "Plasma Rifle", 5, 0)
  229.             elseif randomweap == 9 then
  230.                 if randomclip > 19 then
  231.                     clip = 9999
  232.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  233.                 else   
  234.                     clip = flame_clip
  235.                 end
  236.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1526" -- flamethrower - 9
  237.                 sendconsoletext(player, "Battle Rifle", 5, 0)
  238.             elseif randomweap == 10 then
  239.                 if randomclip > 19 then
  240.                     clip = 9999
  241.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  242.                 else   
  243.                     clip = brifle_clip
  244.                 end
  245.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_1142" -- battle rifle - 10
  246.                 sendconsoletext(player, "Rocket Launcher", 5, 0)
  247.             elseif randomweap == 11 then
  248.                 if randomclip > 19 then
  249.                     clip = 9999
  250.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  251.                 else
  252.                     clip = rocket_clip
  253.                 end
  254.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_785" -- rocket launcher - 11
  255.                 sendconsoletext(player, "Rocket Launcher", 5, 0)
  256.             elseif randomweap == 12 then
  257.                 if randomclip > 19 then
  258.                     clip = 9999
  259.                     sendconsoletext(player, "Bottomless Clip: No Reload!", 5, 0)
  260.                 else   
  261.                     clip = sniper_clip
  262.                 end
  263.                 weapons[player] = "deathstar\\cmt_Snow_Grove\\weapon\\tag_931" -- sniper rifle - 12
  264.                 sendconsoletext(player, "Sniper Rifle", 5, 0)              
  265.             end
  266.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  267.             assignweapon(player, m_weaponId)
  268.             local m_weapon = getobject(m_weaponId)
  269.             if randomweap == 1 or randomweap == 4 then
  270.                 if m_weapon then
  271.                     writefloat(m_weapon + 0x240, battery)
  272.                     updateammo(m_weaponId)
  273.                     infbattery = registertimer(1000, "InfBattery", {m_weapon, player})
  274.                     mybattery[player] = 1
  275.                 end
  276.             elseif randomclip <= 19 then
  277.                 if m_weapon then
  278.                     if randomweap == 11 then ammo = rocket_ammo clip = rocket_clip end -- rocket launcher
  279.                     writeword(m_weapon + 0x2B6, ammo)
  280.                     writeword(m_weapon + 0x2B8, clip)
  281.                     updateammo(m_weaponId)
  282.                 end            
  283.             else
  284.                 if m_weapon then
  285.                     if randomweap == 11 then ammo = rocket_ammo clip = rocket_clip end -- rocket launcher
  286.                     writeword(m_weapon + 0x2B6, ammo)
  287.                     writeword(m_weapon + 0x2B8, clip)
  288.                     updateammo(m_weaponId)
  289.                 end
  290.             end
  291.            
  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.                 end    
  324.             end
  325.             local random_camo = getrandomnumber(1, 30)
  326.             local id = resolveplayer(player)
  327.             if random_camo > 29 then
  328.                 svcmd("sv_invis " .. id)
  329.                 sendconsoletext(player, "You are Invisible!", 5, 0)
  330.             end
  331.             if gametype ~= 5 then
  332.                 local random_speed = getrandomnumber(1, 30)
  333.                 if random_speed >= 29 then
  334.                     setspeed(player, 1.5)
  335.                     sendconsoletext(player, "150% Speed!", 5, 0)
  336.                 elseif random_speed >= 1 and random_speed < 3 then 
  337.                     setspeed(player, 1.25)
  338.                     sendconsoletext(player, "125% Speed!", 5, 0)               
  339.                 end
  340.             end    
  341.         end
  342.     end
  343.     return false
  344. end
  345.  
  346. function InfBattery(id, count, arg)
  347.     local m_weapon = arg[1]
  348.     local player = arg[2]
  349.     if m_weapon and game_started then
  350.         if readfloat(m_weapon + 0x240) == 1 and mybattery[player] == 1 then
  351.             destroyplayerweaps(player)
  352.             replaceplasmaweap = registertimer(0, "ReplacePlasmaWeap", {player, m_weapon})
  353.             mybattery[player] = 0
  354.         end
  355.     end
  356.     return true
  357. end
  358.  
  359. function ReplacePlasmaWeap(id, count, arg)
  360.     local player = arg[1]
  361.     local m_weapon = arg[2]
  362.     if count == 1 then
  363.         if player and game_started then
  364.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  365.             assignweapon(player, m_weaponId)
  366.             privatesay(player, "Battery recharged.")
  367.         end
  368.         mybattery[player] = 0
  369.     end
  370.     return false
  371. end
  372.  
  373. function getweaponobjectid(player, slot)
  374.     local m_objectId = getplayerobjectid(player)
  375.     if m_objectId then return readdword(getobject(m_objectId) + 0x2F8 + slot*4) end
  376. end
  377.  
  378. function destroyplayerweaps(player)
  379.     for i=0,3 do
  380.         local weap_id = getweaponobjectid(player, i)
  381.         if weap_id ~= 0xFFFFFFFF then destroyobject(weap_id) end
  382.     end
  383. end
  384.  
  385. function OnDamageLookup(receiving, causing, tagid)
  386.    
  387.     if receiving and causing and receiving ~= causing then
  388.         local tagname, tagtype = gettaginfo(tagid)
  389.         local spikerd = string.find(tagname, "deathstar\\cmt_Snow_Grove\\damage effect\\tag_1617")
  390.         local spikerd2 = string.find(tagname, "deathstar\\cmt_Snow_Grove\\damage effect\\tag_1619")
  391.         local ppistol1 = string.find(tagname, "deathstar\\cmt_Snow_Grove\\damage effect\\tag_1057")
  392.         local ppistol2 = string.find(tagname, "deathstar\\cmt_Snow_Grove\\damage effect\\tag_1092")
  393.         local plasrifle = string.find(tagname, "deathstar\\cmt_Snow_Grove\\damage effect\\tag_1682")
  394.         local needler = string.find(tagname, "tag_1436") or string.find(tagname, "tag_1423") or string.find(tagname, "tag_1424") or string.find(tagname, "tag_1435")
  395.         local melee = false
  396.         local meleetag = nil
  397.         local melee_table = {"tag_1468", "tag_1288", "tag_1159", "tag_859", "tag_947", "tag_1596", "tag_1657", "tag_742", "tag_1389", "tag_1558", "tag_797", "tag_1829", "tag_1851", "tag_13456789"}
  398.         local melee_table_size = #melee_table
  399.         for x = 1,melee_table_size do
  400.             if string.find(tagname, melee_table[x]) ~= nil then
  401.                 melee = true
  402.                 meleetag = tagname
  403.             end
  404.         end
  405.         local c_player = objectidtoplayer(causing)
  406.         local r_player = objectidtoplayer(receiving)
  407.         if c_player and r_player then
  408.             if melee then odl_multiplier(9999) end 
  409.             if spikerd or spikerd2 then odl_multiplier(3) end
  410.             if ppistol1 then odl_multiplier(1.85) end
  411.             if ppistol2 then odl_multiplier(1.85) end
  412.             if plasrifle then odl_multiplier(1.35) end
  413.             if needler then odl_multiplier(1.7) end
  414.         end
  415.     end
  416.  
  417.     return nil
  418. end
  419.  
  420. function OnObjectInteraction(player, objId, mapId)
  421.     local Pass = nil
  422.     local name, type = gettaginfo(mapId)
  423.     if type == "weap" then
  424.         if gametype == 1 or gametype == 3 then
  425.             if name == "deathstar\\cmt_Snow_Grove\\weapon\\tag_1837" or name == "deathstar\\cmt_Snow_Grove\\weapon\\tag_1822" then
  426.                 Pass = true
  427.             elseif weapons[player] ~= nil then
  428.                 if name ~= weapons[player] then
  429.                     Pass = false
  430.                 end
  431.             end
  432.         else
  433.             if weapons[player] ~= nil then
  434.                 if name ~= weapons[player] then
  435.                     Pass = false
  436.                 end
  437.             end
  438.         end
  439.     elseif type == "eqip" then
  440.         if name == "deathstar\\cmt_Snow_Grove\\equipment\\tag_1268" or name == "deathstar\\cmt_Snow_Grove\\equipment\\tag_1117" then
  441.             Pass = false
  442.         end
  443.     end
  444.     return Pass
  445. end
  446.  
  447. function OnGameEnd(stage)
  448.     if stage == 1 then
  449.         game_started = false
  450.         if gameweap then
  451.             gameweap = nil
  452.         end
  453.         if infbattery then
  454.             infbattery = nil
  455.         end
  456.         if replaceplasmaweap then
  457.             replaceplasmaweap = nil
  458.         end
  459.     elseif stage == 3 then
  460.         for i = 0, 15 do
  461.             if getplayer(i) then
  462.                 privatesay(i, "Thank you for playing Random Weapons for CMT Snow Grove!")
  463.                 privatesay(i, "by H\174 Shaft")
  464.             end
  465.         end    
  466.     end    
  467. end
  468.  
  469.  
  470. -- Start sendconsoletext overloaded by Nugget
  471. console = {}
  472. console.__index = console
  473. consoletimer = registertimer(100, "ConsoleTimer")
  474. phasor_sendconsoletext = sendconsoletext
  475.  
  476. function sendconsoletext(player, message, time, order, align, height, func)
  477.     if player then
  478.         console[player] = console[player] or {}
  479.         local temp = {}
  480.         temp.player = player
  481.         temp.id = nextid(player, order)
  482.         temp.message = message or ""
  483.         temp.time = time or 0.7
  484.         temp.remain = temp.time
  485.         temp.align = align or "left"
  486.         temp.height = height or 0
  487.         if type(func) == "function" then
  488.             temp.func = func
  489.         elseif type(func) == "string" then
  490.             temp.func = _G[func]
  491.         end
  492.         console[player][temp.id] = temp
  493.         setmetatable(console[player][temp.id], console)
  494.         return console[player][temp.id]
  495.     end
  496. end
  497.  
  498. function nextid(player, order)
  499.     if not order then
  500.         local x = 0
  501.         for k,v in pairs(console[player]) do
  502.             if k > x + 1 then
  503.                 return x + 1
  504.             end
  505.             x = x + 1
  506.         end
  507.         return x + 1
  508.     else
  509.         local original = order
  510.         while console[player][order] do
  511.             order = order + 0.001
  512.             if order == original + 0.999 then break end
  513.         end
  514.         return order
  515.     end
  516. end
  517.  
  518. function getmessage(player, order)
  519.     if console[player] then
  520.         if order then
  521.             return console[player][order]
  522.         end
  523.     end
  524. end
  525.  
  526. function getmessages(player)
  527.     return console[player]
  528. end
  529.  
  530. function getmessageblock(player, order)
  531.     local temp = {}
  532.     for k,v in opairs(console[player]) do
  533.         if k >= order and k < order + 1 then
  534.             table.insert(temp, console[player][k])
  535.         end
  536.     end
  537.     return temp
  538. end
  539.  
  540. function console:getmessage()
  541.     return self.message
  542. end
  543.  
  544. function console:append(message, reset)
  545.     if console[self.player] then
  546.         if console[self.player][self.id] then
  547.             if getplayer(self.player) then
  548.                 if reset then
  549.                     if reset == true then
  550.                         console[self.player][self.id].remain = console[self.player][self.id].time
  551.                     elseif tonumber(reset) then
  552.                         console[self.player][self.id].time = tonumber(reset)
  553.                         console[self.player][self.id].remain = tonumber(reset)
  554.                     end
  555.                 end
  556.                 console[self.player][self.id].message = message or ""
  557.                 return true
  558.             end
  559.         end
  560.     end
  561. end
  562.  
  563. function console:shift(order)
  564.     local temp = console[self.player][self.id]
  565.     console[self.player][self.id] = console[self.player][order]
  566.     console[self.player][order] = temp
  567. end
  568.  
  569. function console:pause(time)
  570.     console[self.player][self.id].pausetime = time or 5
  571. end
  572.  
  573. function console:delete()
  574.     console[self.player][self.id] = nil
  575. end
  576.  
  577. function ConsoleTimer(id, count)
  578.     for i,_ in opairs(console) do
  579.         if tonumber(i) then
  580.             if getplayer(i) then
  581.                 for k,v in opairs(console[i]) do
  582.                     if console[i][k].pausetime then
  583.                         console[i][k].pausetime = console[i][k].pausetime - 0.1
  584.                         if console[i][k].pausetime <= 0 then
  585.                             console[i][k].pausetime = nil
  586.                         end
  587.                     else
  588.                         if console[i][k].func then
  589.                             if not console[i][k].func(i) then
  590.                                 console[i][k] = nil
  591.                             end
  592.                         end
  593.                         if console[i][k] then
  594.                             console[i][k].remain = console[i][k].remain - 0.1
  595.                             if console[i][k].remain <= 0 then
  596.                                 console[i][k] = nil
  597.                             end
  598.                         end
  599.                     end
  600.                 end
  601.                 if table.len(console[i]) > 0 then
  602.                     local paused = 0
  603.                     for k,v in pairs(console[i]) do
  604.                         if console[i][k].pausetime then
  605.                             paused = paused + 1
  606.                         end
  607.                     end
  608.                     if paused < table.len(console[i]) then
  609.                         local str = ""
  610.                         for i = 0,30 do
  611.                             str = str .. " \n"
  612.                         end
  613.                         phasor_sendconsoletext(i, str)
  614.                         for k,v in opairs(console[i]) do
  615.                             if not console[i][k].pausetime then
  616.                                 if console[i][k].align == "right" or console[i][k].align == "center" then
  617.                                     phasor_sendconsoletext(i, consolecenter(string.sub(console[i][k].message, 1, 78)))
  618.                                 else
  619.                                     phasor_sendconsoletext(i, string.sub(console[i][k].message, 1, 78))
  620.                                 end
  621.                             end
  622.                         end
  623.                     end
  624.                 end
  625.             else
  626.                 console[i] = nil
  627.             end
  628.         end
  629.     end
  630.    
  631.     return true
  632. end
  633.  
  634. function consolecenter(text)
  635.     if text then
  636.         local len = string.len(text)
  637.         for i = len + 1, 78 do
  638.             text = " " .. text
  639.         end
  640.         return text
  641.     end
  642. end
  643.  
  644. function opairs(t)
  645.     local keys = {}
  646.     for k,v in pairs(t) do
  647.         table.insert(keys, k)
  648.     end    
  649.     table.sort(keys,
  650.     function(a,b)
  651.         if type(a) == "number" and type(b) == "number" then
  652.             return a < b
  653.         end
  654.         an = string.lower(tostring(a))
  655.         bn = string.lower(tostring(b))
  656.         if an ~= bn then
  657.             return an < bn
  658.         else
  659.             return tostring(a) < tostring(b)
  660.         end
  661.     end)
  662.     local count = 1
  663.     return function()
  664.         if table.unpack(keys) then
  665.             local key = keys[count]
  666.             local value = t[key]
  667.             count = count + 1
  668.             return key,value
  669.         end
  670.     end
  671. end
  672.  
  673. function table.len(t)
  674.     local count = 0
  675.     for k,v in pairs(t) do
  676.         count = count + 1
  677.     end
  678.     return count
  679. end
  680. -- Stop sendconsoletext overloaded
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement