Have I got a treat for you! This new script for Phantom Forces Hack allows you to unlock EVERY single weapon and attachment in the game, this also includes weapons that usually only admins have access to! In order for this to work, you need to have the KSG 12 unlocked (unlockable at level 1). For More Free Roblox Cheats.

Features Of Phantom Forces Hack
Unlock Admin Weapons
Unlock All Weapons
Unlock All Attachments
Script :
-- modules
local network, char, loadgun, loadknife; do
for _, object in next, getgc(true) do
if (typeof(object) == "table") then
if (rawget(object, "send")) then
network = object;
elseif (rawget(object, "setbasewalkspeed")) then
char = object;
end
elseif (typeof(object) == "function") then
local name = debug.getinfo(object).name;
if (name == "loadgun") then
loadgun = object;
elseif (name == "loadknife") then
loadknife = object;
end
end
end
end
-- services
local replicatedStorage = game:GetService("ReplicatedStorage");
-- cache
local content = replicatedStorage:WaitForChild("Content");
local productionContent = content:WaitForChild("ProductionContent");
local attachmentModules = productionContent:WaitForChild("AttachmentModules");
local gunModules = productionContent:WaitForChild("GunModules");
-- stored data
local gunIgnore = {"JUGGUN", "HK417Old", "PAINTBALL GUN", "RAILGUN OLD", "PPK12", "SVK12E", "MG42"};
local weaponData = {};
local attachmentData = {};
local primaryClasses = { "ASSAULT", "BATTLE", "CARBINE", "SHOTGUN", "PDW", "DMR", "LMG", "SNIPER" };
local generalClassData = {
["ASSAULT"] = "AK12",
["BATTLE"] = "AK12",
["CARBINE"] = "M4A1",
["SHOTGUN"] = "KSG 12",
["PDW"] = "MP5K",
["DMR"] = "INTERVENTION",
["LMG"] = "COLT LMG",
["SNIPER"] = "INTERVENTION",
["PISTOL"] = "M9",
["MACHINE PISTOL"] = "M9",
["REVOLVER"] = "M9",
["OTHER"] = "M9",
["FRAGMENTATION"] = "M67 FRAG",
["HIGH EXPLOSIVE"] = "M67 FRAG",
["IMPACT"] = "M67 FRAG",
["ONE HAND BLADE"] = "KNIFE",
["TWO HAND BLADE"] = "KNIFE",
["ONE HAND BLUNT"] = "MAGLITE CLUB",
["TWO HAND BLUNT"] = "HOCKEY STICK",
};
local weapons = {};
-- hooks
do
local oldNetworkSend = network.send; network.send = function(self, name, ...)
local args = {...};
if (name == "changewep") then
weaponData[args[1]] = args[2];
args[2] = generalClassData[weapons[args[2]].type];
end
if (name == "changeatt") then
attachmentData[args[2]] = args[3];
return
end
return oldNetworkSend(self, name, unpack(args));
end
local oldLoadgrenade = char.loadgrenade; char.loadgrenade = function(self, name, ...)
name = weaponData["Grenade"] or name;
return oldLoadgrenade(self, name, ...);
end;
local oldLoadknife; oldLoadknife = hookfunction(loadknife, function(name, ...)
name = weaponData["Knife"] or name;
return oldLoadknife(name, ...);
end);
local oldLoadgun; oldLoadgun = hookfunction(loadgun, function(name, magsize, sparerounds, attachments, ...)
local gunData = weapons[name];
local newName = table.find(primaryClasses, gunData.type) and weaponData["Primary"] or weaponData["Secondary"];
name = (newName and newName or name);
local attachs = attachmentData[name];
if (attachs) then
attachments = attachs;
end
return oldLoadgun(name, magsize, sparerounds, attachments, ...);
end);
end
-- init
do
for _, module in next, gunModules:GetChildren() do
if (not table.find(gunIgnore, module.Name)) then
local data = require(module);
weapons[module.Name] = data;
end
end
for _, module in next, attachmentModules:GetChildren() do
local data = require(module);
data.unlockkills = 0;
end
for _, module in next, gunModules:GetChildren() do
if (not table.find(gunIgnore, module.Name)) then
local data = require(module);
data.unlockrank = 0;
data.adminonly = false;
data.supertest = false;
data.exclusiveunlock = false;
data.hideunlessowned = false;
data.adminonly = false;
end
end
end