HR_Shaft

Random Weapons Infinite Ammo v1 for Phasor v2

Mar 30th, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.99 KB | None | 0 0
  1. --[[ ###  Random Weapons Infinite Ammo v1 ###]]--
  2. --[[ ###    by H® Shaft for Phasor v2     ###]]--
  3.  
  4. -- gametype MUST have weapons set to generic
  5. -- Players will be given a randomly selected weapon with unlimited ammo each time they die/respawn.
  6.  
  7. team_play = false
  8. weapons = {}
  9. mybattery = {}
  10.  
  11. function GetRequiredVersion()
  12.     return 200
  13. end
  14.  
  15. function OnScriptLoad(process, game, persistent)
  16.     if game == true or game == "PC" then
  17.         GAME = "PC"
  18.         gametype_base = 0x671340
  19.         map_name = readstring(0x698F21)
  20.     else
  21.         GAME = "CE"
  22.         gametype_base = 0x5F5498
  23.         map_name = readstring(0x61D151)
  24.     end
  25.     for i=0,15 do
  26.         if getplayer(i) then
  27.             mybattery[i] = 0
  28.             weapons[i] = {}
  29.         end
  30.     end    
  31.     gametype = readbyte(gametype_base + 0x30)
  32.     if getteamplay() == true then team_play = true else team_play = false end  
  33. end
  34.  
  35. function OnNewGame(map)
  36.     if GAME == "PC" then
  37.         gametype_base = 0x671340
  38.         map_name = readstring(0x698F21)
  39.     elseif GAME == "CE" then
  40.         gametype_base = 0x5F5498
  41.         map_name = readstring(0x61D151)
  42.     end
  43.     for i=0,15 do
  44.         if getplayer(i) then
  45.             mybattery[i] = 0
  46.             weapons[i] = {}
  47.         end
  48.     end
  49.     gametype = readbyte(gametype_base + 0x30)
  50.     if getteamplay() == true then team_play = true else team_play = false end      
  51. end    
  52.    
  53. function getteamplay()
  54.     if readbyte(gametype_base + 0x34) == 1 then
  55.         return true
  56.     else
  57.         return false
  58.     end
  59. end
  60.  
  61. function OnPlayerJoin(player)
  62.     if getplayer(player) then
  63.         mybattery[player] = 0
  64.         weapons[player] = nil
  65.         sendconsoletext(player, "Random weapons with unlimited ammo!")
  66.     end
  67. end
  68.  
  69. function OnPlayerKill(killer, victim, mode)
  70.     if getplayer(victim) then
  71.         weapons[victim] = nil
  72.         mybattery[victim] = 0
  73.     end
  74. end
  75.  
  76. function OnPlayerLeave(player)
  77.     if getplayer(player) then
  78.         weapons[player] = nil
  79.         mybattery[player] = nil
  80.     end
  81. end
  82.  
  83. function OnTeamChange(player, old_team, new_team, relevant)
  84.     if getplayer(player) then
  85.         weapons[player] = nil
  86.         mybattery[player] = 1
  87.     end
  88.     return nil
  89. end
  90.  
  91. function OnPlayerSpawn(player, m_objectId)
  92.     if getplayer(player) then
  93.         weapons[player] = nil
  94.         mybattery[player] = 0
  95.         local m_objectId = getplayerobjectid(player)       
  96.         if m_objectId then
  97.             gameweap = registertimer(0, "AssignGameWeapons", player)
  98.         end
  99.     end
  100. end
  101.  
  102. function AssignGameWeapons(id, count, player)
  103.     if getplayer(player) then
  104.         local m_objectId = getplayerobjectid(player)
  105.         local m_object = getobject(m_objectId)
  106.         local clip = 0
  107.         local ammo = 9999
  108.         local battery = 0
  109.         if m_objectId then
  110.             for i = 0,3 do
  111.                 local weapID = readdword(getobject(m_objectId), 0x2F8 + i*4)
  112.                 if weapID ~= 0xFFFFFFFF then
  113.                     destroyobject(weapID)
  114.                 end
  115.             end
  116.             if m_object then
  117.                 writebyte(m_object + 0x31E, 1)
  118.                 writebyte(m_object + 0x31F, 1) 
  119.             end
  120.             local randomweap = getrandomnumber(1, 11)
  121.             if randomweap == 1 then
  122.                 clip = 12
  123.                 weapons[player] = "weapons\\shotgun\\shotgun"
  124.                 sendconsoletext(player, "Shotgun")
  125.             elseif randomweap == 2 then
  126.                 clip = 60
  127.                 weapons[player] = "weapons\\assault rifle\\assault rifle"
  128.                 sendconsoletext(player, "Assault Rifle")
  129.             elseif randomweap == 3 then
  130.                 clip = 100
  131.                 weapons[player] = "weapons\\flamethrower\\flamethrower"
  132.                 sendconsoletext(player, "Flame-Thrower")
  133.             elseif randomweap == 4 then
  134.                 clip = 20
  135.                 weapons[player] = "weapons\\needler\\mp_needler"
  136.                 sendconsoletext(player, "Needler")
  137.             elseif randomweap == 5 then
  138.                 clip = 12
  139.                 weapons[player] = "weapons\\pistol\\pistol"
  140.                 sendconsoletext(player, "Pistol")
  141.             elseif randomweap == 6 then
  142.                 battery = 0
  143.                 weapons[player] = "weapons\\plasma pistol\\plasma pistol"
  144.                 sendconsoletext(player, " Plasma Pistol")
  145.             elseif randomweap == 7 then
  146.                 battery = 0
  147.                 weapons[player] = "weapons\\plasma rifle\\plasma rifle"
  148.                 sendconsoletext(player, "Plasma Rifle")
  149.             elseif randomweap == 8 then
  150.                 battery = 0
  151.                 weapons[player] = "weapons\\plasma_cannon\\plasma_cannon"
  152.                 sendconsoletext(player, "Fuel-Rod Gun")
  153.             elseif randomweap == 9 then
  154.                 clip = 2
  155.                 weapons[player] = "weapons\\rocket launcher\\rocket launcher"
  156.                 sendconsoletext(player, "Rocket Launcher")
  157.             elseif randomweap == 10 then
  158.                 clip = 4
  159.                 weapons[player] = "weapons\\sniper rifle\\sniper rifle"
  160.                 sendconsoletext(player, "Sniper Rifle")
  161.             end
  162.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  163.             assignweapon(player, m_weaponId)
  164.             local m_weapon = getobject(m_weaponId)
  165.             if randomweap == 6 or randomweap == 7 or randomweap == 8 then
  166.                 if m_weapon then
  167.                     writefloat(m_weapon + 0x240, battery)
  168.                     updateammo(m_weaponId)
  169.                     infbattery = registertimer(1000, "InfBattery", {m_weapon, player})
  170.                     mybattery[player] = 1
  171.                 end
  172.             else
  173.                 if m_weapon then
  174.                     writeword(m_weapon + 0x2B6, ammo)
  175.                     writeword(m_weapon + 0x2B8, clip)
  176.                     updateammo(m_weaponId)
  177.                 end
  178.             end        
  179.         end
  180.     end
  181.     return false
  182. end
  183.  
  184. function InfBattery(id, count, arg)
  185.     local m_weapon = arg[1]
  186.     local player = arg[2]
  187.     if m_weapon then
  188.         if readfloat(m_weapon + 0x240) == 1 and mybattery[player] == 1 then
  189.             destroyplayerweaps(player)
  190.             replaceplasmaweap = registertimer(0, "ReplacePlasmaWeap", {player, m_weapon})
  191.             mybattery[player] = 0
  192.         end
  193.     end
  194.     return true
  195. end
  196.  
  197. function ReplacePlasmaWeap(id, count, arg)
  198.     local player = arg[1]
  199.     local m_weapon = arg[2]
  200.     if count == 1 then
  201.         if player then
  202.             local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
  203.             assignweapon(player, m_weaponId)
  204.             privatesay(player, "Battery recharged.")
  205.         end
  206.         mybattery[player] = 0
  207.     end
  208.     return false
  209. end
  210.  
  211. function getweaponobjectid(player, slot)
  212.     local m_objectId = getplayerobjectid(player)
  213.     if m_objectId then return readdword(getobject(m_objectId) + 0x2F8 + slot*4) end
  214. end
  215.  
  216. function destroyplayerweaps(player)
  217.     for i=0,3 do
  218.         local weap_id = getweaponobjectid(player, i)
  219.         if weap_id ~= 0xFFFFFFFF then destroyobject(weap_id) end
  220.     end
  221. end
  222.  
  223. function OnObjectInteraction(player, objId, mapId)
  224.     local Pass = nil
  225.     local name, type = gettaginfo(mapId)
  226.     if type == "weap" then
  227.         if gametype == 1 or gametype == 3 then
  228.             if name == "weapons\\ball\\ball" or name == "weapons\\flag\\flag" then
  229.                 Pass = true
  230.             elseif weapons[player] ~= nil then
  231.                 if name ~= weapons[player] then
  232.                     Pass = false
  233.                 end
  234.             end
  235.         else
  236.             if weapons[player] ~= nil then
  237.                 if name ~= weapons[player] then
  238.                     Pass = false
  239.                 end
  240.             end
  241.         end
  242.     end
  243.     return Pass
  244. end
  245.  
  246. function OnGameEnd(stage)
  247.     if stage == 1 then
  248.         if gameweap then
  249.             removetimer(gameweap)
  250.             gameweap = nil
  251.         end
  252.         if infbattery then
  253.             removetimer(infbattery)
  254.             infbattery = nil
  255.         end
  256.         if replaceplasmaweap then
  257.             removetimer(replaceplasmaweap)
  258.             replaceplasmaweap = nil
  259.         end
  260.     end    
  261. end
  262.  
  263. -- Created by H® Shaft thank you to Oxide, AelitePrime, Nugget & Wizard.
  264. -- Visit http://halorace.org/forum/index.php?topic=514.0 or
  265. -- Visit http://pastebin.com/u/HR_Shaft for more phasor scripts
Advertisement
Add Comment
Please, Sign In to add comment