Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[ ### Plasma Rifles Infinite Ammo v1 ###]]--
- --[[ ### by H® Shaft for Phasor v2 ###]]--
- -- gametype MUST have weapons set to generic
- team_play = false
- weapons = {}
- mybattery = {}
- function GetRequiredVersion()
- return 200
- end
- function OnScriptLoad(process, game, persistent)
- if game == true or game == "PC" then
- GAME = "PC"
- gametype_base = 0x671340
- map_name = readstring(0x698F21)
- else
- GAME = "CE"
- gametype_base = 0x5F5498
- map_name = readstring(0x61D151)
- end
- for i=0,15 do
- if getplayer(i) then
- weapons[i] = {}
- mybattery[i] = 0
- end
- end
- gametype = readbyte(gametype_base + 0x30)
- if getteamplay() == true then team_play = true else team_play = false end
- end
- function OnNewGame(map)
- if GAME == "PC" then
- gametype_base = 0x671340
- map_name = readstring(0x698F21)
- elseif GAME == "CE" then
- gametype_base = 0x5F5498
- map_name = readstring(0x61D151)
- end
- for i=0,15 do
- if getplayer(i) then
- weapons[i] = {}
- mybattery[i] = 0
- end
- end
- gametype = readbyte(gametype_base + 0x30)
- if getteamplay() == true then team_play = true else team_play = false end
- end
- function getteamplay()
- if readbyte(gametype_base + 0x34) == 1 then
- return true
- else
- return false
- end
- end
- function OnPlayerJoin(player)
- if getplayer(player) then
- weapons[player] = nil
- mybattery[player] = 0
- privatesay(player, "Plasma Rifles! Unlimited Ammo!")
- end
- end
- function OnPlayerKill(killer, victim, mode)
- if getplayer(victim) then
- weapons[victim] = nil
- mybattery[victim] = 0
- end
- end
- function OnPlayerLeave(player)
- if getplayer(player) then
- weapons[player] = nil
- mybattery[player] = nil
- end
- end
- function OnTeamChange(player, old_team, new_team, relevant)
- if getplayer(player) then
- weapons[player] = nil
- mybattery[player] = 1
- end
- return nil
- end
- function OnPlayerSpawn(player, m_objectId)
- if getplayer(player) then
- weapons[player] = nil
- mybattery[player] = 0
- local m_objectId = getplayerobjectid(player)
- if m_objectId then
- gameweap = registertimer(0, "AssignGameWeapons", player)
- end
- end
- end
- function AssignGameWeapons(id, count, player)
- if getplayer(player) then
- local m_objectId = getplayerobjectid(player)
- local m_object = getobject(m_objectId)
- local battery = 0
- if m_objectId then
- for i = 0,3 do
- local weapID = readdword(getobject(m_objectId) + 0x2F8 + i*4)
- if weapID ~= 0xFFFFFFFF then
- destroyobject(weapID)
- end
- end
- if m_object then
- writebyte(m_object + 0x31E, 1)
- writebyte(m_object + 0x31F, 1)
- end
- local m_weaponId = createobject(gettagid("weap", "weapons\\plasma rifle\\plasma rifle"), 0, 10, false, 0, 0, 0)
- weapons[player] = "weapons\\plasma rifle\\plasma rifle"
- battery = 0
- assignweapon(player, m_weaponId)
- local m_weapon = getobject(m_weaponId)
- if m_weapon then
- writefloat(m_weapon + 0x240, battery)
- updateammo(m_weaponId)
- infbattery = registertimer(1000, "InfBattery", {m_weapon, player})
- mybattery[player] = 1
- end
- end
- end
- return false
- end
- function InfBattery(id, count, arg)
- if arg[1] == nil or arg[2] == nil then return end
- local m_weapon = arg[1]
- local player = arg[2]
- if m_weapon and m_weapon == arg[1] then
- if readfloat(m_weapon + 0x240) == 1 and mybattery[player] == 1 then
- local m_objectId = getplayerobjectid(player)
- for i = 0,3 do
- local weapID = readdword(getobject(m_objectId) + 0x2F8 + i*4)
- if weapID ~= 0xFFFFFFFF then
- destroyobject(weapID)
- end
- end
- replaceplasmaweap = registertimer(0, "ReplacePlasmaWeap", {player, m_weapon})
- mybattery[player] = 0
- end
- end
- return true
- end
- function ReplacePlasmaWeap(id, count, arg)
- if arg[1] == nil or arg[2] == nil then return end
- local player = arg[1]
- local m_weapon = arg[2]
- if count == 1 then
- if player and m_weapon == arg[2] then
- local m_weaponId = createobject(gettagid("weap", weapons[player]), 0, 10, false, 0, 0, 0)
- assignweapon(player, m_weaponId)
- privatesay(player, "Battery recharged!")
- end
- mybattery[player] = 0
- end
- return false
- end
- function getweaponobjectid(player, slot)
- local m_objectId = getplayerobjectid(player)
- if m_objectId then return readdword(getobject(m_objectId) + 0x2F8 + slot*4) end
- end
- function destroyplayerweaps(player)
- for i=0,3 do
- local weap_id = getweaponobjectid(player, i)
- if weap_id ~= 0xFFFFFFFF then destroyobject(weap_id) end
- end
- end
- function OnObjectInteraction(player, objId, mapId)
- local Pass = nil
- local name, type = gettaginfo(mapId)
- if type == "weap" then
- if gametype == 1 or gametype == 3 then
- if name == "weapons\\ball\\ball" or name == "weapons\\flag\\flag" then
- Pass = true
- elseif weapons[player] ~= nil then
- if name ~= weapons[player] then
- Pass = false
- end
- end
- else
- if weapons[player] ~= nil then
- if name ~= weapons[player] then
- Pass = false
- end
- end
- end
- end
- return Pass
- end
- function OnObjectCreationAttempt(mapId, parentId, player)
- if mapId == gettagid("weap", "weapons\\assault rifle\\assault rifle") or
- mapId == gettagid("weap", "weapons\\rocket launcher\\rocket launcher") or
- mapId == gettagid("weap", "weapons\\flamethrower\\flamethrower") or
- mapId == gettagid("weap", "weapons\\plasma_cannon\\plasma_cannon") or
- mapId == gettagid("weap", "weapons\\plasma pistol\\plasma pistol") or
- mapId == gettagid("weap", "weapons\\pistol\\pistol") or
- mapId == gettagid("weap", "weapons\\sniper rifle\\sniper rifle") or
- mapId == gettagid("weap", "weapons\\needler\\mp_needler") or
- mapId == gettagid("weap", "weapons\\shotgun\\shotgun") then
- return false
- end
- end
- function OnGameEnd(stage)
- if stage == 1 then
- if gameweap then
- removetimer(gameweap)
- gameweap = nil
- end
- end
- end
- -- Created by H® Shaft thank you to Oxide, AelitePrime, Nugget & Wizard.
- -- Visit http://halorace.org/forum/index.php?topic=514.0 or
- -- Visit http://pastebin.com/u/HR_Shaft for more phasor scripts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement