Advertisement
HR_Shaft

Plasma Rifles Infinite Ammo v1 for Phasor v2

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