Roblox Phantom Forces Script Pastebin Hacks

Introduction
Roblox Phantom Forces Script Pastebin Hacks 2023 will let you ace the game better than other players. These weapons are allowed to acquire by any player. Once you need to have a weapon, you will need Phantom Forces Script. Qnnit proudly presents Phantom Forces Scripts with Pastebin Phantom Forces Hack Download. These scripts will give you a range of features in the game.
Phantom Forces is perhaps the best gun-shooting game. It is a proud presentation by “Stylis Studio”. The game possesses a huge fan base all over the world due to its interesting features. All you have to do is aim and shoot your opponents with your polished skills. For this, you need special guns, rifles, and grenades.
What is Phantom Forces Script?
Phantom Forces Script is a string of code mainly represented by the URL in a few cases. Players get the Phantom Forces Graphic User Interface with any equipment or weapon they want after the execution of the script. Ski Hub is one of the examples offering Fly, Silent Aim, Xray, Break all Glass, and Walkspeed.

Phantom Forces Roblox is quite a famous shooting game that is played in teams, just like the Call of Duty game. Although the user interface might trick you into thinking that it’s a simple game but in reality, it is quite a complex game. Gamers would have to be vigilant of their surroundings and particular locations, handling of equipment & weapons.

Once you get used to the game, then there is no going; such is the interest level of Phantom Forces. The game is not just a good time pass to sharpen your reflexes in real life which might help you perform better on the job or in business. The race to get better in the game has gone beyond control so much that the demand for codes and scripts has skyrocketed.
How to Use Phantom Forces Scripts
So far, we have come to know that Phantom Forces scripts are quite useful, but now we will learn how to use these scripts effectively.

Just follow these steps:
Step 1
- Download the “Phantom Forces Scripts”
Step 2
- Open the file and “copy the script”
Step 3
- Initiate “Roblox Executor” and “Paste”
Step 4
- Press the “Execute” button and start the game
So these were the steps through which you may easily run the Phantom Forces hack Cheats.
Roblox Phantom Forces Script Pastebin Hacks
A range of Phantom Forces scripts are available in the market, but we have compiled the most effective ones for just the sake of our readers. Simply copy and paste the scripts that we have shared in detail, and you will be good to go. Now let`s move on to the actual Phantom Forces Scripts:
Script 1:
Phantom Forces Bunny Hop Script:
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
getgenv().bhop = true
local game_client = {}
do -- Client Collector
local garbage = getgc(true)
for i = 1, #garbage do
local v = garbage[i]
if typeof(v) == "table" then
if rawget(v, "getCharacterObject") then -- Used for sending LocalPlayer Character Data to Server
game_client.character_interface = v
elseif rawget(v, "getController") then -- Weapon Detection
game_client.weapon_controller_interface = v
end
end
end
end
RunService.RenderStepped:Connect(function()
if getgenv().bhop and UserInputService:IsKeyDown(Enum.KeyCode.Space) then
local character_object = game_client.character_interface.getCharacterObject()
local weapon_controller = game_client.weapon_controller_interface.getController()
local power = 4 -- This is the hardcoded value for jumping
if character_object and weapon_controller then
if character_object._floorMaterial == Enum.Material.Air then
return
end
local active_weapon = weapon_controller:getActiveWeapon()
if active_weapon:getWeaponType() == "Melee" then
power = power * 1.15
end
local velocity_y = character_object._rootPart.Velocity.y
power = power and (2 * game.Workspace.Gravity * power) ^ 0.5 or 40
local jump_power = power
if velocity_y < 0 then
jump_power = power
--else
--jump_power = (velocity_y * velocity_y + power * power) ^ 0.5
end
-- Skip the else cause its gay and will stack velocity when you're near walls for some reason
if character_object._movementMode == "prone" or character_object._movementMode == "crouch" then
character_object:setMovementMode("stand")
return
end
if active_weapon:getWeaponType() == "Firearm" and active_weapon:isAiming() then
character_object._humanoid.JumpPower = jump_power
character_object._humanoid.Jump = true
return true
end
--if character_object._speed > 5 and character_object._velocity.z < 0 and character_object:parkourDetection() then
--character_object:parkour()
--else
character_object._humanoid.JumpPower = jump_power
character_object._humanoid.Jump = true
--end
-- Skipping parkour detection cause its cringe
end
end
end) |
Script 2:
Phantom Forces Third Person Script:
-- Services
local uis = game:GetService("UserInputService")
local rs = game:GetService("RunService")
local plrs = game:GetService("Players")
local ws = game:GetService("Workspace")
-- Local
local plr = plrs.LocalPlayer
local fake_rep_object = nil
local game_client = {}
do -- Client Collector
local garbage = getgc(true)
local loaded_modules = getloadedmodules()
for i = 1, #garbage do
local v = garbage[i]
if typeof(v) == "table" then
if rawget(v, "send") and rawget(v, "fetch") then -- Networking Module
game_client.network = v
elseif rawget(v, "getCharacterObject") then -- Used for sending LocalPlayer Character Data to Server
game_client.character_interface = v
elseif rawget(v, "updateReplication") and rawget(v, "getThirdPersonObject") then -- This represents a "Player" separate from their character
game_client.replication_object = v
elseif rawget(v, "getController") then -- Weapon Detection
game_client.weapon_controller_interface = v
elseif rawget(v, "getCharacterModel") and rawget(v, 'popCharacterModel') then -- Used for Displaying other Characters
game_client.third_person_object = v
end
end
end
for i = 1, #loaded_modules do
local v = loaded_modules[i]
if v.Name == "ActiveLoadoutUtils" then
game_client.active_loadout = require(v)
elseif v.Name == "GameClock" then
game_client.game_clock = require(v)
elseif v.Name == "PlayerDataStoreClient" then
game_client.player_data = require(v)
elseif v.Name == "ContentDatabase" then
game_client.content_database = require(v)
end
end
end
local old_send = game_client.network.send
local old_new_index
local library = {}
local utility = {}
local shared = {
drawings = {},
connections = {},
hidden_connections = {},
pointers = {},
theme = {
inline = Color3.fromRGB(6, 6, 6),
dark = Color3.fromRGB(24, 24, 24),
text = Color3.fromRGB(255, 255, 255),
section = Color3.fromRGB(150, 150, 150),
accent = Color3.fromRGB(0, 102, 255)
},
accents = {},
moveKeys = {
["Movement"] = {
["Up"] = "Up",
["Down"] = "Down"
},
["Action"] = {
["Return"] = "Enter",
["Left"] = "Left",
["Right"] = "Right"
}
},
allowedKeyCodes = {"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","One","Two","Three","Four","Five","Six","Seveen","Eight","Nine","0","Insert","Tab","Home","End","LeftAlt","LeftControl","LeftShift","RightAlt","RightControl","RightShift","CapsLock","Return","Up","Down","Left","Right"},
allowedInputTypes = {"MouseButton1","MouseButton2","MouseButton3"},
shortenedInputs = {["MouseButton1"] = "MB1", ["MouseButton2"] = "MB2", ["MouseButton3"] = "MB3", ["Insert"] = "Ins", ["LeftAlt"] = "LAlt", ["LeftControl"] = "LCtrl", ["LeftShift"] = "LShift", ["RightAlt"] = "RAlt", ["RightControl"] = "RCtrl", ["RightShift"] = "RShift", ["CapsLock"] = "Caps"},
colors = {Color3.fromRGB(255, 0, 0), Color3.fromRGB(255, 100, 0), Color3.fromRGB(255, 200, 0), Color3.fromRGB(210, 255, 0), Color3.fromRGB(110, 255, 0), Color3.fromRGB(10, 255, 0), Color3.fromRGB(0, 255, 90), Color3.fromRGB(0, 255, 190), Color3.fromRGB(0, 220, 255), Color3.fromRGB(0, 120, 255), Color3.fromRGB(0, 20, 255), Color3.fromRGB(80, 0, 255), Color3.fromRGB(180, 0, 255), Color3.fromRGB(255, 0, 230), Color3.fromRGB(255, 0, 130), Color3.fromRGB(255, 255, 255), Color3.fromRGB(0, 0, 0)},
toggleKey = {Enum.KeyCode.Home, true},
unloadKey = {Enum.KeyCode.End, true},
windowActive = true
}
-- Utility Functions
do
function utility:Create(instanceType, instanceProperties)
local instance = Drawing.new(instanceType)
local parent
--
if instanceProperties["Parent"] or instanceProperties["parent"] then
parent = instanceProperties["Parent"] or instanceProperties["parent"]
--
instanceProperties["parent"] = nil
instanceProperties["Parent"] = nil
end
--
for property, value in pairs(instanceProperties) do
if property and value then
if property == "Size" or property == "Size" then
if instanceType == "Text" then
instance.Size = value
else
local xSize = (value.X.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).X) + value.X.Offset
local ySize = (value.Y.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).Y) + value.Y.Offset
--
instance.Size = Vector2.new(xSize, ySize)
end
elseif property == "Position" or property == "position" then
if instanceType == "Text" then
local xPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).X) + (value.X.Scale * ((typeof(parent.Size) == "number" and parent.TextBounds) or parent.Size).X)) + value.X.Offset
local yPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).Y) + (value.Y.Scale * ((typeof(parent.Size) == "number" and parent.TextBounds) or parent.Size).Y)) + value.Y.Offset
--
instance.Position = Vector2.new(xPosition, yPosition)
else
local xPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).X) + value.X.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).X) + value.X.Offset
local yPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).Y) + value.Y.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).Y) + value.Y.Offset
--
instance.Position = Vector2.new(xPosition, yPosition)
end
elseif property == "Color" or property == "color" then
if typeof(value) == "string" then
instance["Color"] = shared.theme[value]
--
if value == "accent" then
shared.accents[#shared.accents + 1] = instance
end
else
instance[property] = value
end
else
instance[property] = value
end
end
end
--
shared.drawings[#shared.drawings + 1] = instance
--
return instance
end
--
function utility:Update(instance, instanceProperty, instanceValue, instanceParent)
if instanceProperty == "Size" or instanceProperty == "Size" then
local xSize = (instanceValue.X.Scale * ((instanceParent and instanceParent.Size) or ws.CurrentCamera.ViewportSize).X) + instanceValue.X.Offset
local ySize = (instanceValue.Y.Scale * ((instanceParent and instanceParent.Size) or ws.CurrentCamera.ViewportSize).Y) + instanceValue.Y.Offset
--
instance.Size = Vector2.new(xSize, ySize)
elseif instanceProperty == "Position" or instanceProperty == "position" then
local xPosition = ((((instanceParent and instanceParent.Position) or Vector2.new(0, 0)).X) + (instanceValue.X.Scale * ((typeof(instanceParent.Size) == "number" and instanceParent.TextBounds) or instanceParent.Size).X)) + instanceValue.X.Offset
local yPosition = ((((instanceParent and instanceParent.Position) or Vector2.new(0, 0)).Y) + (instanceValue.Y.Scale * ((typeof(instanceParent.Size) == "number" and instanceParent.TextBounds) or instanceParent.Size).Y)) + instanceValue.Y.Offset
--
instance.Position = Vector2.new(xPosition, yPosition)
elseif instanceProperty == "Color" or instanceProperty == "color" then
if typeof(instanceValue) == "string" then
instance.Color = shared.theme[instanceValue]
--
if instanceValue == "accent" then
shared.accents[#shared.accents + 1] = instance
else
if table.find(shared.accents, instance) then
table.remove(shared.accents, table.find(shared.accents, instance))
end
end
else
instance.Color = instanceValue
end
end
end
--
function utility:Connection(connectionType, connectionCallback)
local connection = connectionType:Connect(connectionCallback)
shared.connections[#shared.connections + 1] = connection
--
return connection
end
--
function utility:RemoveConnection(connection)
for index, con in pairs(shared.connections) do
if con == connection then
shared.connections[index] = nil
con:Disconnect()
end
end
--
for index, con in pairs(shared.hidden_connections) do
if con == connection then
shared.hidden_connections[index] = nil
con:Disconnect()
end
end
end
--
function utility:Lerp(instance, instanceTo, instanceTime)
local currentTime = 0
local currentIndex = {}
local connection
--
for i,v in pairs(instanceTo) do
currentIndex[i] = instance[i]
end
--
local function lerp()
for i,v in pairs(instanceTo) do
instance[i] = ((v - currentIndex[i]) * currentTime / instanceTime) + currentIndex[i]
end
end
--
connection = rs.RenderStepped:Connect(function(delta)
if currentTime < instanceTime then
currentTime = currentTime + delta
lerp()
else
connection:Disconnect()
end
end)
end
--
function utility:Unload()
for i,v in pairs(shared.drawings) do
v:Remove()
end
--
for i,v in pairs(shared.connections) do
v:Disconnect()
end
--
shared.drawings = nil
shared.connections = nil
--
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object:popCharacterModel()
character_model:Destroy()
fake_rep_object:despawn()
end
--
shared = nil
utility = nil
library = nil
end
--
function utility:Toggle()
shared.toggleKey[2] = not shared.toggleKey[2]
--
for index, drawing in pairs(shared.drawings) do
if getmetatable(drawing).__type == "Text" then
utility:Lerp(drawing, {Transparency = shared.toggleKey[2] and 1 or 0}, 0.15)
else
utility:Lerp(drawing, {Transparency = shared.toggleKey[2] and 1 or 0}, 0.25)
end
end
end
--
function utility:ChangeAccent(accentColor)
shared.theme.accent = accentColor
--
for index, drawing in pairs(shared.accents) do
drawing.Color = shared.theme.accent
end
end
--
function utility:Object(type, properties)
local object = Instance.new(type)
for i,v in next, properties do
object[i] = v
end
return object
end
--
function utility:Round(n, scale)
return tonumber(string.format("%." .. (typeof(scale) == "number" and scale or 2) .. "f", n))
end
end
-- Library Functions
do
function library:Window(windowProperties)
-- // Variables
local window = {
current = nil,
currentindex = 1,
content = {},
pages = {}
}
local windowProperties = windowProperties or {}
--
local windowName = windowProperties.name or windowProperties.Name or "New Window"
-- // Functions
function window:Movement(moveAction, moveDirection)
if moveAction == "Movement" then
window.content[window.currentindex]:Turn(false)
--
if window.content[moveDirection == "Down" and window.currentindex + 1 or window.currentindex - 1] then
window.currentindex = moveDirection == "Down" and window.currentindex + 1 or window.currentindex - 1
else
window.currentindex = moveDirection == "Down" and 1 or #window.content
end
--
window.content[window.currentindex]:Turn(true)
else
window.content[window.currentindex]:Action(moveDirection)
end
end
--
function window:ChangeKeys(keyType, moveDirection, newKey)
for i,v in pairs(shared.moveKeys[keyType]) do
if tostring(v) == tostring(moveDirection) then
shared.moveKeys[keyType][i] = nil
shared.moveKeys[keyType][newKey] = moveDirection
end
end
end
-- // Main
local windowFrame = utility:Create("Square", {
Visible = true,
Filled = true,
Thickness = 0,
Color = shared.theme.inline,
Size = UDim2.new(0, 280, 0, 19),
Position = UDim2.new(0, 50, 0, 80)
})
--
local windowInline = utility:Create("Square", {
Parent = windowFrame,
Visible = true,
Filled = true,
Thickness = 0,
Color = shared.theme.dark,
Size = UDim2.new(1, -2, 1, -4),
Position = UDim2.new(0, 1, 0, 3)
})
--
local windowAccent = utility:Create("Square", {
Parent = windowFrame,
Visible = true,
Filled = true,
Thickness = 0,
Color = "accent",
Size = UDim2.new(1, 0, 0, 2),
Position = UDim2.new(0, 0, 0, 0)
})
--
local windowText = utility:Create("Text", {
Parent = windowAccent,
Visible = true,
Text = windowName,
Center = true,
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13,
Position = UDim2.new(0.5, 0, 0, 3)
})
-- // Connections
utility:Connection(uis.InputBegan, function(Input)
if shared.toggleKey[2] and Input.KeyCode then
if shared.moveKeys["Movement"][Input.KeyCode.Name] then
window:Movement("Movement", shared.moveKeys["Movement"][Input.KeyCode.Name])
elseif shared.moveKeys["Action"][Input.KeyCode.Name] then
window:Movement("Action", shared.moveKeys["Action"][Input.KeyCode.Name])
end
end
--
if Input.KeyCode and Input.KeyCode == shared.toggleKey[1] then
utility:Toggle()
end
end)
-- // Nested Functions
function window:ChangeName(newName)
windowText.Text = newName
end
--
function window:Refresh()
window.content = {}
local contentCount = 0
--
for index, page in pairs(window.pages) do
page:Position(19 + (contentCount * 17))
window.content[#window.content + 1] = page
contentCount = contentCount + 1
--
if page.open then
for index, section in pairs(page.sections) do
section:Position(19 + (contentCount * 17))
contentCount = contentCount + 1
--
for index, content in pairs(section.content) do
content:Position(19 + (contentCount * 17))
if not content.noaction then
window.content[#window.content + 1] = content
end
contentCount = contentCount + 1
end
end
end
end
--
utility:Update(windowFrame, "Size", UDim2.new(0, 280, 0, 23 + (contentCount * 17)))
utility:Update(windowInline, "Size", UDim2.new(1, -2, 1, -4), windowFrame)
end
--
function window:Page(pageProperties)
-- // Variables
local page = {open = false, sections = {}}
local pageProperties = pageProperties or {}
--
local pageName = pageProperties.name or pageProperties.Name or "New Page"
-- // Functions
-- // Main
local pageText = utility:Create("Text", {
Parent = windowFrame,
Visible = true,
Text = "[+] "..pageName,
Outline = true,
Font = 2,
Color = (#window.content == 0 and shared.theme.accent or shared.theme.text),
Size = 13,
Position = UDim2.new(0, 5, 0, 19 + ((#window.content) * 17))
})
-- // Nested Functions
function page:Turn(state)
if state then
utility:Update(pageText, "Color", "accent")
else
utility:Update(pageText, "Color", "text")
end
end
--
function page:Position(yAxis)
utility:Update(page.text, "Position", UDim2.new(0, 5, 0, yAxis), windowFrame)
end
--
function page:Open(state, externalOpen)
if not externalOpen then
local ind = 0
for index, other_page in pairs(window.pages) do
if other_page == page then
ind = index
else
if other_page.open then
other_page:Open(false, true)
end
end
end
--
window.currentindex = ind
end
--
page.open = state
pageText.Text = (page.open and "[-] " or "[+] ") .. pageName
--
for index, section in pairs(page.sections) do
section:Open(page.open)
end
--
window:Refresh()
end
--
function page:Action(action)
if action == "Enter" then
page:Open(not page.open)
elseif action == "Right" and not page.open then
page:Open(true)
elseif action == "Left" and page.open then
page:Open(false)
end
end
--
function page:Section(sectionProperties)
-- // Variables
local section = {content = {}}
local sectionProperties = sectionProperties or {}
--
local sectionName = sectionProperties.name or sectionProperties.Name or "New Section"
-- // Functions
-- // Main
local sectionText = utility:Create("Text", {
Visible = false,
Text = "["..sectionName.."]",
Outline = true,
Font = 2,
Color = shared.theme.section,
Size = 13
})
-- // Nested Functions
function section:Open(state)
section.text.Visible = state
--
for index, content in pairs(section.content) do
content:Open(state)
end
end
--
function section:Position(yAxis)
utility:Update(section.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function section:Label(labelProperties)
-- // Variables
local label = {noaction = true}
local labelProperties = labelProperties or {}
--
local labelName = labelProperties.name or labelProperties.Name or "New Label"
-- // Functions
-- // Main
local labelText = utility:Create("Text", {
Visible = false,
Text = labelName,
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function label:Turn(state)
if state then
utility:Update(label.text, "Color", "accent")
else
utility:Update(label.text, "Color", "text")
end
end
--
function label:Position(yAxis)
utility:Update(label.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function label:Open(state)
label.text.Visible = state
end
--
function label:Action(action)
end
-- // Returning + Other
label.name = labelName
label.text = labelText
--
section.content[#section.content + 1] = label
--
return label
end
--
function section:Button(buttonProperties)
-- // Variables
local button = {}
local buttonProperties = buttonProperties or {}
--
local buttonName = buttonProperties.name or buttonProperties.Name or "New Button"
local buttonConfirm = buttonProperties.confirm or buttonProperties.Confirm or false
local buttonCallback = buttonProperties.callback or buttonProperties.Callback or buttonProperties.CallBack or buttonProperties.callBack or function() end
-- // Functions
-- // Main
local buttonText = utility:Create("Text", {
Visible = false,
Text = buttonName,
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function button:Turn(state)
if state then
utility:Update(button.text, "Color", "accent")
else
utility:Update(button.text, "Color", "text")
end
end
--
function button:Position(yAxis)
utility:Update(button.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function button:Open(state)
button.text.Visible = state
end
--
function button:Action(action)
if buttonConfirm and button.text.Text ~= "confirm?" then
button.text.Text = "confirm?"
task.delay(3, function()
if button.text.Text == "confirm?" then
button.text.Text = buttonName
end
end)
return
end
--
button.text.Text = "<"..buttonName..">"
--
buttonCallback()
--
wait(0.2)
button.text.Text = buttonName
end
-- // Returning + Other
button.name = buttonName
button.text = buttonText
--
section.content[#section.content + 1] = button
--
return button
end
--
function section:Toggle(toggleProperties)
local toggle = {}
local toggleProperties = toggleProperties or {}
--
local toggleName = toggleProperties.name or toggleProperties.Name or "New Toggle"
local toggleDefault = toggleProperties.default or toggleProperties.Default or toggleProperties.def or toggleProperties.Def or false
local togglePointer = toggleProperties.pointer or toggleProperties.Pointer or toggleProperties.flag or toggleProperties.Flag or nil
local toggleCallback = toggleProperties.callback or toggleProperties.Callback or toggleProperties.CallBack or toggleProperties.callBack or function() end
-- // Functions
-- // Main
local toggleText = utility:Create("Text", {
Visible = false,
Text = toggleName .. " -> " .. (toggleDefault and "ON" or "OFF"),
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function toggle:Turn(state)
if state then
utility:Update(toggle.text, "Color", "accent")
else
utility:Update(toggle.text, "Color", "text")
end
end
--
function toggle:Position(yAxis)
utility:Update(toggle.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function toggle:Open(state)
toggle.text.Visible = state
end
--
function toggle:Action(action)
toggle.current = not toggle.current
toggle.text.Text = toggle.name .. " -> " .. (toggle.current and "ON" or "OFF")
--
toggleCallback(toggle.current)
end
-- // Returning + Other
toggle.name = toggleName
toggle.text = toggleText
toggle.current = toggleDefault
--
section.content[#section.content + 1] = toggle
--
if togglePointer then
local pointer = {}
--
function pointer:Get()
return toggle.current
end
--
function pointer:Set(value)
if typeof(value) == "bool" then
toggle.current = value
toggle.text.Text = toggle.name .. " -> " .. (toggle.current and "ON" or "OFF")
--
toggleCallback(toggle.current)
end
end
--
shared.pointers[togglePointer] = pointer
end
--
return toggle
end
--
function section:Slider(sliderProperties)
local slider = {}
local sliderProperties = sliderProperties or {}
--
local sliderName = sliderProperties.name or sliderProperties.Name or "New Toggle"
local sliderDefault = sliderProperties.default or sliderProperties.Default or sliderProperties.def or sliderProperties.Def or 1
local sliderMax = sliderProperties.max or sliderProperties.Max or sliderProperties.maximum or sliderProperties.Maximum or 10
local sliderMin = sliderProperties.min or sliderProperties.Min or sliderProperties.minimum or sliderProperties.Minimum or 1
local sliderDigits = sliderProperties.digits or sliderProperties.Digits or sliderProperties.scale or sliderProperties.Scale or 1
local sliderTick = sliderProperties.tick or sliderProperties.Tick or sliderProperties.decimals or sliderProperties.Decimals or 1
local sliderPointer = sliderProperties.pointer or sliderProperties.Pointer or sliderProperties.flag or sliderProperties.Flag or nil
local sliderCallback = sliderProperties.callback or sliderProperties.Callback or sliderProperties.CallBack or sliderProperties.callBack or function() end
-- // Functions
-- // Main
local sliderText = utility:Create("Text", {
Visible = false,
Text = sliderName .. " -> " .. "<" .. tostring(sliderDefault) .. "/" .. tostring(sliderMax) .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function slider:Turn(state)
if state then
utility:Update(slider.text, "Color", "accent")
else
utility:Update(slider.text, "Color", "text")
end
end
--
function slider:Position(yAxis)
utility:Update(slider.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function slider:Open(state)
slider.text.Visible = state
end
--
function slider:Action(action)
slider.current = math.clamp(action == "Left" and (slider.current - slider.tick) or (slider.current + slider.tick), slider.min, slider.max)
slider.text.Text = sliderName .. " -> " .. "<" .. utility:Round(slider.current, slider.digits) .. "/" .. utility:Round(slider.max, slider.digits) .. ">"
--
sliderCallback(slider.current)
end
-- // Returning + Other
slider.name = sliderName
slider.text = sliderText
slider.current = sliderDefault
slider.max = sliderMax
slider.min = sliderMin
slider.digits = sliderDigits
slider.tick = sliderTick
--
section.content[#section.content + 1] = slider
--
if sliderPointer then
local pointer = {}
--
function pointer:Get()
return slider.current
end
--
function pointer:Set(value)
if typeof(value) == "number" then
slider.current = value
slider.text.Text = sliderName .. " -> " .. "<" .. utility:Round(slider.current, slider.digits) .. "/" .. utility:Round(slider.max, slider.digits) .. ">"
--
sliderCallback(slider.current)
end
end
--
shared.pointers[sliderPointer] = pointer
end
--
return slider
end
--
function section:List(listProperties)
local list = {}
local listProperties = listProperties or {}
--
local listName = listProperties.name or listProperties.Name or "New Toggle"
local listEnter = listProperties.enter or listProperties.Enter or listProperties.comfirm or listProperties.Comfirm or false
local listDefault = listProperties.default or listProperties.Default or listProperties.def or listProperties.Def or 1
local listOptions = listProperties.options or listProperties.Options or {"Option 1", "Option 2", "Option 3"}
local listPointer = listProperties.pointer or listProperties.Pointer or listProperties.flag or listProperties.Flag or nil
local listCallback = listProperties.callback or listProperties.Callback or listProperties.CallBack or listProperties.callBack or function() end
-- // Functions
-- // Main
local listText = utility:Create("Text", {
Visible = false,
Text = listName .. " -> " .. "<" .. tostring(listOptions[listDefault]) .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function list:Turn(state)
if state then
utility:Update(list.text, "Color", "accent")
else
utility:Update(list.text, "Color", "text")
end
end
--
function list:Position(yAxis)
utility:Update(list.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function list:Open(state)
list.text.Visible = state
end
--
function list:Action(action)
if (listEnter and action == "Enter") then
listCallback(list.options[list.current])
else
list.current = ((list.options[action == "Left" and list.current - 1 or list.current + 1]) and (action == "Left" and list.current - 1 or list.current + 1)) or (action == "Left" and #list.options or 1)
--
list.text.Text = listName .. " -> " .. "<" .. tostring(list.options[list.current]) .. ">"
--
if not listEnter then
listCallback(list.options[list.current])
end
end
end
-- // Returning + Other
if listPointer then
local pointer = {}
--
function pointer:Get(cfg)
if cfg then
return list.current
else
return list.options[list.current]
end
end
--
function pointer:Set(value)
if typeof(value) == "number" and list.options[value] then
list.current = value
--
list.text.Text = listName .. " -> " .. "<" .. tostring(list.options[list.current]) .. ">"
--
if not listEnter then
listCallback(list.options[list.current])
end
end
end
--
shared.pointers[listPointer] = pointer
end
--
list.name = listName
list.text = listText
list.current = listDefault
list.options = listOptions
--
section.content[#section.content + 1] = list
--
return list
end
--
function section:MultiList(multiListProperties)
local multiList = {}
local multiListProperties = multiListProperties or {}
--
local multiListName = multiListProperties.name or multiListProperties.Name or "New Toggle"
local multiListDefault = multiListProperties.default or multiListProperties.Default or multiListProperties.def or multiListProperties.Def or 1
local multiListOptions = multiListProperties.options or multiListProperties.Options or {{"Option 1", false}, {"Option 2", false}, {"Option 3", false}}
local multiListPointer = multiListProperties.pointer or multiListProperties.Pointer or multiListProperties.flag or multiListProperties.Flag or nil
local multiListCallback = multiListProperties.callback or multiListProperties.Callback or multiListProperties.CallBack or multiListProperties.callBack or function() end
-- // Functions
-- // Main
local multiListText = utility:Create("Text", {
Visible = false,
Text = multiListName .. " -> " .. "<" .. (multiListOptions[multiListDefault] and (tostring(multiListOptions[multiListDefault][1]) .. ":" .. ((multiListOptions[multiListDefault][2]) and "ON" or "OFF")) or "Nil") .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function multiList:Turn(state)
if state then
utility:Update(multiList.text, "Color", "accent")
else
utility:Update(multiList.text, "Color", "text")
end
end
--
function multiList:Position(yAxis)
utility:Update(multiList.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function multiList:Open(state)
multiList.text.Visible = state
end
--
function multiList:Action(action)
if action == "Enter" then
multiList.options[multiList.current][2] = not multiList.options[multiList.current][2]
--
multiList.text.Text = multiList.name .. " -> " .. "<" .. tostring(multiList.options[multiList.current][1]) .. ":" .. (multiList.options[multiList.current][2] and "ON" or "OFF") .. ">"
--
multiListCallback(multiList.options)
else
multiList.current = ((multiList.options[action == "Left" and multiList.current - 1 or multiList.current + 1]) and (action == "Left" and multiList.current - 1 or multiList.current + 1)) or (action == "Left" and #multiList.options or 1)
--
multiList.text.Text = multiList.name .. " -> " .. "<" .. tostring(multiList.options[multiList.current][1]) .. ":" .. (multiList.options[multiList.current][2] and "ON" or "OFF") .. ">"
--
multiListCallback(multiList.options)
end
end
-- // Returning + Other
if multiListPointer then
local pointer = {}
--
function pointer:Get()
return list.options
end
--
function pointer:Set(value)
if typeof(value) == "table" and value[multiList.current] then
multiList.options = value
--
multiList.text.Text = multiList.name .. " -> " .. "<" .. tostring(multiList.options[multiList.current][1]) .. ":" .. (multiList.options[multiList.current][2] and "ON" or "OFF") .. ">"
--
multiListCallback(multiList.options)
end
end
--
shared.pointers[multiListPointer] = pointer
end
--
multiList.name = multiListName
multiList.text = multiListText
multiList.current = multiListDefault
multiList.options = multiListOptions
--
section.content[#section.content + 1] = multiList
--
return multiList
end
--
function section:PlayerList(playerListProperties)
local playerList = {}
local playerListProperties = playerListProperties or {}
--
local playerListName = playerListProperties.name or playerListProperties.Name or "New Toggle"
local playerListEnter = playerListProperties.enter or playerListProperties.Enter or playerListProperties.comfirm or playerListProperties.Comfirm or false
local playerListCallback = playerListProperties.callback or playerListProperties.Callback or playerListProperties.CallBack or playerListProperties.callBack or function() end
local playerListOptions = {}
-- // Functions
for index, player in pairs(plrs:GetPlayers()) do
if player ~= plr then
playerListOptions[#playerListOptions + 1] = player
end
end
--
utility:Connection(plrs.PlayerAdded, function(player)
if player ~= plr then
if not table.find(playerList.options, player) then
playerList.options[#playerList.options + 1] = player
end
--
if #playerList.options == 1 then
playerList.current = 1
--
playerList.text.Text = playerList.name .. " -> " .. "<" .. tostring(playerList.options[playerList.current].Name) .. ">"
--
if not playerListEnter then
playerListCallback(tostring(playerList.options[playerList.current]))
end
end
end
end)
--
utility:Connection(plrs.PlayerRemoving, function(player)
if player ~= plr then
local index = table.find(playerList.options, player)
local current = playerList.current
local current_plr = playerList.options[current]
--
if index then
table.remove(playerList.options, index)
end
--
if #playerList.options == 0 then
playerList.text.Text = playerList.name .. " -> " .. "<Nil>"
else
local oldCurrent = playerList.current
--
if index and playerList.options[playerList.current] ~= current_plr and table.find(playerList.options, current_plr) then
playerList.current = table.find(playerList.options, current_plr)
end
--
playerList.text.Text = playerList.name .. " -> " .. "<" .. tostring(playerList.options[playerList.current].Name) .. ">"
--
if not playerListEnter then
if oldCurrent ~= playerList.current then
playerListCallback(tostring(playerList.options[playerList.current]))
end
end
end
end
end)
-- // Main
local playerListText = utility:Create("Text", {
Visible = false,
Text = playerListName .. " -> " .. "<" .. (#playerListOptions >= 1 and tostring(playerListOptions[1].Name) or "Nil") .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function playerList:Turn(state)
if state then
utility:Update(playerList.text, "Color", "accent")
else
utility:Update(playerList.text, "Color", "text")
end
end
--
function playerList:Position(yAxis)
utility:Update(playerList.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function playerList:Open(state)
playerList.text.Visible = state
end
--
function playerList:Action(action)
if (playerListEnter and action == "Enter") then
if #playerList.options >= 1 then
playerListCallback(tostring(playerList.options[playerList.current]))
end
else
if #playerList.options >= 1 then
local oldCurrent = playerList.current
--
playerList.current = ((playerList.options[action == "Left" and playerList.current - 1 or playerList.current + 1]) and (action == "Left" and playerList.current - 1 or playerList.current + 1)) or (action == "Left" and #playerList.options or 1)
--
playerList.text.Text = playerList.name .. " -> " .. "<" .. tostring(playerList.options[playerList.current].Name) .. ">"
--
if not playerListEnter then
if oldCurrent ~= playerList.current then
playerListCallback(tostring(playerList.options[playerList.current]))
end
end
end
end
end
-- // Returning + Other
playerList.name = playerListName
playerList.text = playerListText
playerList.current = 1
playerList.options = playerListOptions
--
section.content[#section.content + 1] = playerList
--
return playerList
end
--
function section:Keybind(keybindProperties)
-- // Variables
local keybind = {}
local keybindProperties = keybindProperties or {}
--
local keybindName = keybindProperties.name or keybindProperties.Name or "New Keybind"
local keybindDefault = keybindProperties.default or keybindProperties.Default or keybindProperties.def or keybindProperties.Def or Enum.KeyCode.B
local keybindInputs = keybindProperties.inputs or keybindProperties.Inputs or true
local keybindPointer = keybindProperties.pointer or keybindProperties.Pointer or keybindProperties.flag or keybindProperties.Flag or nil
local keybindCallback = keybindProperties.callback or keybindProperties.Callback or keybindProperties.CallBack or keybindProperties.callBack or function() end
-- // Functions
function keybind:Shorten(string)
for i,v in pairs(shared.shortenedInputs) do
string = string.gsub(string, i, v)
end
--
return string
end
--
function keybind:Change(input)
input = input or "..."
local inputTable = {}
--
if input.EnumType then
if input.EnumType == Enum.KeyCode or input.EnumType == Enum.UserInputType then
if table.find(shared.allowedKeyCodes, input.Name) or table.find(shared.allowedInputTypes, input.Name) then
inputTable = {input.EnumType == Enum.KeyCode and "KeyCode" or "UserInputType", input.Name}
--
keybind.current = inputTable
keybind.text.Text = keybindName .. " -> " .. "<" .. (#keybind.current > 0 and keybind:Shorten(keybind.current[2]) or "...") .. ">"
--
return true
end
end
end
--
return false
end
-- // Main
local keybindText = utility:Create("Text", {
Visible = false,
Text = keybindName .. " -> " .. "<" .. "..." .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function keybind:Turn(state)
if state then
utility:Update(keybind.text, "Color", "accent")
else
utility:Update(keybind.text, "Color", "text")
end
end
--
function keybind:Position(yAxis)
utility:Update(keybind.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function keybind:Open(state)
keybind.text.Visible = state
end
--
function keybind:Action(action)
if not keybind.selecting then
keybind.text.Text = keybindName .. " -> " .. "<" .. "..." .. ">"
--
keybind.selecting = true
--
local connection
connection = utility:Connection(uis.InputBegan, function(Input)
if connection then
local inputProcessed = keybind:Change(Input.KeyCode.Name ~= "Unknown" and Input.KeyCode or (keybind.inputs and Input.UserInputType))
--
if inputProcessed then
wait()
keybind.selecting = false
--
utility:RemoveConnection(connection)
keybindCallback(Enum[keybind.current[1]][keybind.current[2]])
end
end
end)
end
end
-- // Returning + Other
if keybindPointer then
local pointer = {}
--
function pointer:Get(cfg)
if cfg then
return keybind.current
else
return Enum[keybind.current[1]][keybind.current[2]]
end
end
--
function pointer:Set(value)
if typeof(value) == "table" and value[1] and value[2] then
local inputProcessed = keybind:Change(Enum[value[1]][value[2]])
--
if inputProcessed then
keybindCallback(Enum[keybind.current[1]][keybind.current[2]])
end
end
end
--
shared.pointers[keybindPointer] = pointer
end
--
keybind.name = keybindName
keybind.text = keybindText
keybind.current = {}
keybind.inputs = keybindInputs
keybind.selecting = false
--
keybind:Change(keybindDefault)
--
section.content[#section.content + 1] = keybind
--
return keybind
end
--
function section:ColorList(colorListProperties)
local colorList = {}
local colorListProperties = colorListProperties or {}
--
local colorListName = colorListProperties.name or colorListProperties.Name or "New Toggle"
local colorListDefault = colorListProperties.default or colorListProperties.Default or colorListProperties.def or colorListProperties.Def or 1
local colorListPointer = colorListProperties.pointer or colorListProperties.Pointer or colorListProperties.flag or colorListProperties.Flag or nil
local colorListCallback = colorListProperties.callback or colorListProperties.Callback or colorListProperties.CallBack or colorListProperties.callBack or function() end
-- // Functions
-- // Main
--
local colorListText = utility:Create("Text", {
Visible = false,
Text = colorListName .. " -> " .. "< >",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
--
local colorListColor = utility:Create("Square", {
Visible = false,
Filled = true,
Thickness = 0,
Color = shared.colors[colorListDefault],
Size = UDim2.new(0, 17, 0, 9),
})
-- // Nested Functions
function colorList:Turn(state)
if state then
utility:Update(colorList.text, "Color", "accent")
else
utility:Update(colorList.text, "Color", "text")
end
end
--
function colorList:Position(yAxis)
utility:Update(colorList.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
utility:Update(colorList.color, "Position", UDim2.new(0, 22 + colorList.text.TextBounds.X - 26, 0, yAxis + 3), windowFrame)
end
--
function colorList:Open(state)
colorList.text.Visible = state
colorList.color.Visible = state
end
--
function colorList:Action(action)
colorList.current = ((colorList.options[action == "Left" and colorList.current - 1 or colorList.current + 1]) and (action == "Left" and colorList.current - 1 or colorList.current + 1)) or (action == "Left" and #colorList.options or 1)
--
colorList.text.Text = colorListName .. " -> " .. "< >"
colorList.color.Color = colorList.options[colorList.current]
--
colorListCallback(colorList.options[colorList.current])
end
-- // Returning + Other
if colorListPointer then
local pointer = {}
--
function pointer:Get(cfg)
if cfg then
return colorList.current
else
return colorList.options[colorList.current]
end
end
--
function pointer:Set(value)
if typeof(value) == "number" then
colorList.current = value
--
colorList.text.Text = colorListName .. " -> " .. "< >"
colorList.color.Color = colorList.options[colorList.current]
--
colorListCallback(colorList.options[colorList.current])
end
end
--
shared.pointers[colorListPointer] = pointer
end
--
colorList.name = colorListName
colorList.text = colorListText
colorList.color = colorListColor
colorList.current = colorListDefault
colorList.options = shared.colors
--
section.content[#section.content + 1] = colorList
--
return colorList
end
-- // Returning + Other
section.name = sectionName
section.text = sectionText
--
page.sections[#page.sections + 1] = section
--
return section
end
-- // Returning + Other
page.name = pageName
page.text = pageText
--
window.pages[#window.pages + 1] = page
window:Refresh()
--
return page
end
-- // Returning
return window
end
end
-- UI
do
local window = library:Window({name = "menu"})
local page_thirdperson = window:Page({name = "third person"})
local section_settings = page_thirdperson:Section({name = "third person settings"})
do -- third person
section_settings:Toggle({name = "enabled", default = false, pointer = "third_person"})
section_settings:Slider({name = "third person x", default = 0, max = 10, min = -10, tick = 0.1, pointer = "third_person_x"})
section_settings:Slider({name = "third person y", default = 0, max = 10, min = -10, tick = 0.1, pointer = "third_person_y"})
section_settings:Slider({name = "third person z", default = 5, max = 10, min = -10, tick = 0.1, pointer = "third_person_z"})
end
end
do -- Hooks
game_client.network.send = function(self, command, ...)
local arguments = {...}
if command == "stance" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local stance = arguments[1]
third_person_object:setStance(stance)
end
end
if command == "aim" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local aim = arguments[1]
third_person_object:setAim(aim)
end
end
if command == "equip" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local weapon_index = arguments[1]
if weapon_index < 3 then
third_person_object:equip(weapon_index)
elseif weapon_index == 3 then
third_person_object:equipMelee(weapon_index)
end
end
end
if command == "sprint" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local sprinting = arguments[1]
third_person_object:setSprint(sprinting)
end
end
if command == "stab" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
third_person_object:stab()
end
end
if command == "spawn" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object:popCharacterModel()
character_model:Destroy()
fake_rep_object:despawn()
end
local current_loadout = game_client.active_loadout.getActiveLoadoutData(game_client.player_data.getPlayerData())
fake_rep_object:spawn(nil, current_loadout)
end
if command == "forcereset" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object._character
character_model:Destroy()
fake_rep_object:despawn()
end
end
if command == "newbullets" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
third_person_object:kickWeapon()
end
end
if command == "swapweapon" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local weapon_index = arguments[2]
local weapon_dropped = arguments[1]
if weapon_index < 3 then
fake_rep_object._activeWeaponRegistry[weapon_index] = {
weaponName = weapon_dropped.Gun.Value,
weaponData = game_client.content_database.getWeaponData(weapon_dropped.Gun.Value),
}
else
fake_rep_object._activeWeaponRegistry[weapon_index] = {
weaponName = weapon_dropped.Knife.Value,
weaponData = game_client.content_database.getWeaponData(weapon_dropped.Knife.Value),
}
end
end
end
if command == "repupdate" then
if shared.pointers["third_person"]:Get() and game_client.character_interface:isAlive() then
local third_person_object = fake_rep_object:getThirdPersonObject()
if not third_person_object then
local weapon_controller = game_client.weapon_controller_interface.getController()
fake_rep_object._activeWeaponRegistry[1] = {
weaponName = weapon_controller._activeWeaponRegistry[1]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[1]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[1]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[1]._camoList
}
fake_rep_object._activeWeaponRegistry[2] = {
weaponName = weapon_controller._activeWeaponRegistry[2]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[2]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[2]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[2]._camoList
}
fake_rep_object._activeWeaponRegistry[3] = {
weaponName = weapon_controller._activeWeaponRegistry[3]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[3]._weaponData,
camoData = weapon_controller._activeWeaponRegistry[3]._camoData
}
fake_rep_object._activeWeaponRegistry[4] = {
weaponName = weapon_controller._activeWeaponRegistry[4]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[4]._weaponData
}
fake_rep_object._thirdPersonObject = game_client.third_person_object.new(fake_rep_object._player, nil, fake_rep_object)
fake_rep_object._thirdPersonObject:equip(weapon_controller._activeWeaponIndex, true)
fake_rep_object._alive = true
end
local clock_time = game_client.game_clock.getTime()
local tick = tick()
local velocity = Vector3.zero
if fake_rep_object._receivedPosition and fake_rep_object._receivedFrameTime then
velocity = (arguments[1] - fake_rep_object._receivedPosition) / (tick - fake_rep_object._receivedFrameTime);
end
local broken = false
if fake_rep_object._lastPacketTime and clock_time - fake_rep_object._lastPacketTime > 0.5 then
broken = true
fake_rep_object._breakcount = fake_rep_object._breakcount + 1
end
fake_rep_object._smoothReplication:receive(clock_time, tick, {
t = tick,
position = arguments[1],
velocity = velocity,
angles = arguments[2],
breakcount = fake_rep_object._breakcount
}, broken);
fake_rep_object._updaterecieved = true
fake_rep_object._receivedPosition = arguments[1]
fake_rep_object._receivedFrameTime = tick
fake_rep_object._lastPacketTime = clock_time
fake_rep_object:step(3, true)
else
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object:popCharacterModel()
character_model:Destroy()
fake_rep_object:despawn()
end
end
end
return old_send(self, command, table.unpack(arguments))
end
old_new_index = hookmetamethod(game, "__newindex", function(self, index, value)
if checkcaller() then
return old_new_index(self, index, value)
end
if game_client.character_interface:isAlive() and shared.pointers["third_person"]:Get() then
if self == ws.CurrentCamera and index == "CFrame" then
value *= CFrame.new(shared.pointers["third_person_x"]:Get(), shared.pointers["third_person_y"]:Get(), shared.pointers["third_person_z"]:Get())
end
end
return old_new_index(self, index, value)
end)
end
do -- Third Person
local player = Instance.new("Player") -- Create a new character to avoid the warn function
fake_rep_object = game_client.replication_object.new(player)
fake_rep_object._player = plr -- Set it to your localplayer
player:Destroy()
player = nil
if game_client.character_interface:isAlive() and game_client.weapon_controller_interface.getController() then
local weapon_controller = game_client.weapon_controller_interface.getController()
fake_rep_object._activeWeaponRegistry[1] = {
weaponName = weapon_controller._activeWeaponRegistry[1]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[1]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[1]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[1]._camoList
}
fake_rep_object._activeWeaponRegistry[2] = {
weaponName = weapon_controller._activeWeaponRegistry[2]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[2]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[2]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[2]._camoList
}
fake_rep_object._activeWeaponRegistry[3] = {
weaponName = weapon_controller._activeWeaponRegistry[3]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[3]._weaponData,
camoData = weapon_controller._activeWeaponRegistry[3]._camoData
}
fake_rep_object._activeWeaponRegistry[4] = {
weaponName = weapon_controller._activeWeaponRegistry[4]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[4]._weaponData
}
fake_rep_object._thirdPersonObject = game_client.third_person_object.new(fake_rep_object._player, nil, fake_rep_object)
fake_rep_object._thirdPersonObject:equip(1, true)
fake_rep_object._alive = true
end
end |
Script 3:
Phantom Forces Aim Bot & ESP Script:
-- Services
local uis = game:GetService("UserInputService")
local rs = game:GetService("RunService")
local plrs = game:GetService("Players")
local ws = game:GetService("Workspace")
-- Local
local plr = plrs.LocalPlayer
local fake_rep_object = nil
local game_client = {}
do -- Client Collector
local garbage = getgc(true)
local loaded_modules = getloadedmodules()
for i = 1, #garbage do
local v = garbage[i]
if typeof(v) == "table" then
if rawget(v, "send") and rawget(v, "fetch") then -- Networking Module
game_client.network = v
elseif rawget(v, "getCharacterObject") then -- Used for sending LocalPlayer Character Data to Server
game_client.character_interface = v
elseif rawget(v, "updateReplication") and rawget(v, "getThirdPersonObject") then -- This represents a "Player" separate from their character
game_client.replication_object = v
elseif rawget(v, "getController") then -- Weapon Detection
game_client.weapon_controller_interface = v
elseif rawget(v, "getCharacterModel") and rawget(v, 'popCharacterModel') then -- Used for Displaying other Characters
game_client.third_person_object = v
end
end
end
for i = 1, #loaded_modules do
local v = loaded_modules[i]
if v.Name == "ActiveLoadoutUtils" then
game_client.active_loadout = require(v)
elseif v.Name == "GameClock" then
game_client.game_clock = require(v)
elseif v.Name == "PlayerDataStoreClient" then
game_client.player_data = require(v)
elseif v.Name == "ContentDatabase" then
game_client.content_database = require(v)
end
end
end
local old_send = game_client.network.send
local old_new_index
local library = {}
local utility = {}
local shared = {
drawings = {},
connections = {},
hidden_connections = {},
pointers = {},
theme = {
inline = Color3.fromRGB(6, 6, 6),
dark = Color3.fromRGB(24, 24, 24),
text = Color3.fromRGB(255, 255, 255),
section = Color3.fromRGB(150, 150, 150),
accent = Color3.fromRGB(0, 102, 255)
},
accents = {},
moveKeys = {
["Movement"] = {
["Up"] = "Up",
["Down"] = "Down"
},
["Action"] = {
["Return"] = "Enter",
["Left"] = "Left",
["Right"] = "Right"
}
},
allowedKeyCodes = {"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","One","Two","Three","Four","Five","Six","Seveen","Eight","Nine","0","Insert","Tab","Home","End","LeftAlt","LeftControl","LeftShift","RightAlt","RightControl","RightShift","CapsLock","Return","Up","Down","Left","Right"},
allowedInputTypes = {"MouseButton1","MouseButton2","MouseButton3"},
shortenedInputs = {["MouseButton1"] = "MB1", ["MouseButton2"] = "MB2", ["MouseButton3"] = "MB3", ["Insert"] = "Ins", ["LeftAlt"] = "LAlt", ["LeftControl"] = "LCtrl", ["LeftShift"] = "LShift", ["RightAlt"] = "RAlt", ["RightControl"] = "RCtrl", ["RightShift"] = "RShift", ["CapsLock"] = "Caps"},
colors = {Color3.fromRGB(255, 0, 0), Color3.fromRGB(255, 100, 0), Color3.fromRGB(255, 200, 0), Color3.fromRGB(210, 255, 0), Color3.fromRGB(110, 255, 0), Color3.fromRGB(10, 255, 0), Color3.fromRGB(0, 255, 90), Color3.fromRGB(0, 255, 190), Color3.fromRGB(0, 220, 255), Color3.fromRGB(0, 120, 255), Color3.fromRGB(0, 20, 255), Color3.fromRGB(80, 0, 255), Color3.fromRGB(180, 0, 255), Color3.fromRGB(255, 0, 230), Color3.fromRGB(255, 0, 130), Color3.fromRGB(255, 255, 255), Color3.fromRGB(0, 0, 0)},
toggleKey = {Enum.KeyCode.Home, true},
unloadKey = {Enum.KeyCode.End, true},
windowActive = true
}
-- Utility Functions
do
function utility:Create(instanceType, instanceProperties)
local instance = Drawing.new(instanceType)
local parent
--
if instanceProperties["Parent"] or instanceProperties["parent"] then
parent = instanceProperties["Parent"] or instanceProperties["parent"]
--
instanceProperties["parent"] = nil
instanceProperties["Parent"] = nil
end
--
for property, value in pairs(instanceProperties) do
if property and value then
if property == "Size" or property == "Size" then
if instanceType == "Text" then
instance.Size = value
else
local xSize = (value.X.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).X) + value.X.Offset
local ySize = (value.Y.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).Y) + value.Y.Offset
--
instance.Size = Vector2.new(xSize, ySize)
end
elseif property == "Position" or property == "position" then
if instanceType == "Text" then
local xPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).X) + (value.X.Scale * ((typeof(parent.Size) == "number" and parent.TextBounds) or parent.Size).X)) + value.X.Offset
local yPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).Y) + (value.Y.Scale * ((typeof(parent.Size) == "number" and parent.TextBounds) or parent.Size).Y)) + value.Y.Offset
--
instance.Position = Vector2.new(xPosition, yPosition)
else
local xPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).X) + value.X.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).X) + value.X.Offset
local yPosition = ((((parent and parent.Position) or Vector2.new(0, 0)).Y) + value.Y.Scale * ((parent and parent.Size) or ws.CurrentCamera.ViewportSize).Y) + value.Y.Offset
--
instance.Position = Vector2.new(xPosition, yPosition)
end
elseif property == "Color" or property == "color" then
if typeof(value) == "string" then
instance["Color"] = shared.theme[value]
--
if value == "accent" then
shared.accents[#shared.accents + 1] = instance
end
else
instance[property] = value
end
else
instance[property] = value
end
end
end
--
shared.drawings[#shared.drawings + 1] = instance
--
return instance
end
--
function utility:Update(instance, instanceProperty, instanceValue, instanceParent)
if instanceProperty == "Size" or instanceProperty == "Size" then
local xSize = (instanceValue.X.Scale * ((instanceParent and instanceParent.Size) or ws.CurrentCamera.ViewportSize).X) + instanceValue.X.Offset
local ySize = (instanceValue.Y.Scale * ((instanceParent and instanceParent.Size) or ws.CurrentCamera.ViewportSize).Y) + instanceValue.Y.Offset
--
instance.Size = Vector2.new(xSize, ySize)
elseif instanceProperty == "Position" or instanceProperty == "position" then
local xPosition = ((((instanceParent and instanceParent.Position) or Vector2.new(0, 0)).X) + (instanceValue.X.Scale * ((typeof(instanceParent.Size) == "number" and instanceParent.TextBounds) or instanceParent.Size).X)) + instanceValue.X.Offset
local yPosition = ((((instanceParent and instanceParent.Position) or Vector2.new(0, 0)).Y) + (instanceValue.Y.Scale * ((typeof(instanceParent.Size) == "number" and instanceParent.TextBounds) or instanceParent.Size).Y)) + instanceValue.Y.Offset
--
instance.Position = Vector2.new(xPosition, yPosition)
elseif instanceProperty == "Color" or instanceProperty == "color" then
if typeof(instanceValue) == "string" then
instance.Color = shared.theme[instanceValue]
--
if instanceValue == "accent" then
shared.accents[#shared.accents + 1] = instance
else
if table.find(shared.accents, instance) then
table.remove(shared.accents, table.find(shared.accents, instance))
end
end
else
instance.Color = instanceValue
end
end
end
--
function utility:Connection(connectionType, connectionCallback)
local connection = connectionType:Connect(connectionCallback)
shared.connections[#shared.connections + 1] = connection
--
return connection
end
--
function utility:RemoveConnection(connection)
for index, con in pairs(shared.connections) do
if con == connection then
shared.connections[index] = nil
con:Disconnect()
end
end
--
for index, con in pairs(shared.hidden_connections) do
if con == connection then
shared.hidden_connections[index] = nil
con:Disconnect()
end
end
end
--
function utility:Lerp(instance, instanceTo, instanceTime)
local currentTime = 0
local currentIndex = {}
local connection
--
for i,v in pairs(instanceTo) do
currentIndex[i] = instance[i]
end
--
local function lerp()
for i,v in pairs(instanceTo) do
instance[i] = ((v - currentIndex[i]) * currentTime / instanceTime) + currentIndex[i]
end
end
--
connection = rs.RenderStepped:Connect(function(delta)
if currentTime < instanceTime then
currentTime = currentTime + delta
lerp()
else
connection:Disconnect()
end
end)
end
--
function utility:Unload()
for i,v in pairs(shared.drawings) do
v:Remove()
end
--
for i,v in pairs(shared.connections) do
v:Disconnect()
end
--
shared.drawings = nil
shared.connections = nil
--
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object:popCharacterModel()
character_model:Destroy()
fake_rep_object:despawn()
end
--
shared = nil
utility = nil
library = nil
end
--
function utility:Toggle()
shared.toggleKey[2] = not shared.toggleKey[2]
--
for index, drawing in pairs(shared.drawings) do
if getmetatable(drawing).__type == "Text" then
utility:Lerp(drawing, {Transparency = shared.toggleKey[2] and 1 or 0}, 0.15)
else
utility:Lerp(drawing, {Transparency = shared.toggleKey[2] and 1 or 0}, 0.25)
end
end
end
--
function utility:ChangeAccent(accentColor)
shared.theme.accent = accentColor
--
for index, drawing in pairs(shared.accents) do
drawing.Color = shared.theme.accent
end
end
--
function utility:Object(type, properties)
local object = Instance.new(type)
for i,v in next, properties do
object[i] = v
end
return object
end
--
function utility:Round(n, scale)
return tonumber(string.format("%." .. (typeof(scale) == "number" and scale or 2) .. "f", n))
end
end
-- Library Functions
do
function library:Window(windowProperties)
-- // Variables
local window = {
current = nil,
currentindex = 1,
content = {},
pages = {}
}
local windowProperties = windowProperties or {}
--
local windowName = windowProperties.name or windowProperties.Name or "New Window"
-- // Functions
function window:Movement(moveAction, moveDirection)
if moveAction == "Movement" then
window.content[window.currentindex]:Turn(false)
--
if window.content[moveDirection == "Down" and window.currentindex + 1 or window.currentindex - 1] then
window.currentindex = moveDirection == "Down" and window.currentindex + 1 or window.currentindex - 1
else
window.currentindex = moveDirection == "Down" and 1 or #window.content
end
--
window.content[window.currentindex]:Turn(true)
else
window.content[window.currentindex]:Action(moveDirection)
end
end
--
function window:ChangeKeys(keyType, moveDirection, newKey)
for i,v in pairs(shared.moveKeys[keyType]) do
if tostring(v) == tostring(moveDirection) then
shared.moveKeys[keyType][i] = nil
shared.moveKeys[keyType][newKey] = moveDirection
end
end
end
-- // Main
local windowFrame = utility:Create("Square", {
Visible = true,
Filled = true,
Thickness = 0,
Color = shared.theme.inline,
Size = UDim2.new(0, 280, 0, 19),
Position = UDim2.new(0, 50, 0, 80)
})
--
local windowInline = utility:Create("Square", {
Parent = windowFrame,
Visible = true,
Filled = true,
Thickness = 0,
Color = shared.theme.dark,
Size = UDim2.new(1, -2, 1, -4),
Position = UDim2.new(0, 1, 0, 3)
})
--
local windowAccent = utility:Create("Square", {
Parent = windowFrame,
Visible = true,
Filled = true,
Thickness = 0,
Color = "accent",
Size = UDim2.new(1, 0, 0, 2),
Position = UDim2.new(0, 0, 0, 0)
})
--
local windowText = utility:Create("Text", {
Parent = windowAccent,
Visible = true,
Text = windowName,
Center = true,
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13,
Position = UDim2.new(0.5, 0, 0, 3)
})
-- // Connections
utility:Connection(uis.InputBegan, function(Input)
if shared.toggleKey[2] and Input.KeyCode then
if shared.moveKeys["Movement"][Input.KeyCode.Name] then
window:Movement("Movement", shared.moveKeys["Movement"][Input.KeyCode.Name])
elseif shared.moveKeys["Action"][Input.KeyCode.Name] then
window:Movement("Action", shared.moveKeys["Action"][Input.KeyCode.Name])
end
end
--
if Input.KeyCode and Input.KeyCode == shared.toggleKey[1] then
utility:Toggle()
end
end)
-- // Nested Functions
function window:ChangeName(newName)
windowText.Text = newName
end
--
function window:Refresh()
window.content = {}
local contentCount = 0
--
for index, page in pairs(window.pages) do
page:Position(19 + (contentCount * 17))
window.content[#window.content + 1] = page
contentCount = contentCount + 1
--
if page.open then
for index, section in pairs(page.sections) do
section:Position(19 + (contentCount * 17))
contentCount = contentCount + 1
--
for index, content in pairs(section.content) do
content:Position(19 + (contentCount * 17))
if not content.noaction then
window.content[#window.content + 1] = content
end
contentCount = contentCount + 1
end
end
end
end
--
utility:Update(windowFrame, "Size", UDim2.new(0, 280, 0, 23 + (contentCount * 17)))
utility:Update(windowInline, "Size", UDim2.new(1, -2, 1, -4), windowFrame)
end
--
function window:Page(pageProperties)
-- // Variables
local page = {open = false, sections = {}}
local pageProperties = pageProperties or {}
--
local pageName = pageProperties.name or pageProperties.Name or "New Page"
-- // Functions
-- // Main
local pageText = utility:Create("Text", {
Parent = windowFrame,
Visible = true,
Text = "[+] "..pageName,
Outline = true,
Font = 2,
Color = (#window.content == 0 and shared.theme.accent or shared.theme.text),
Size = 13,
Position = UDim2.new(0, 5, 0, 19 + ((#window.content) * 17))
})
-- // Nested Functions
function page:Turn(state)
if state then
utility:Update(pageText, "Color", "accent")
else
utility:Update(pageText, "Color", "text")
end
end
--
function page:Position(yAxis)
utility:Update(page.text, "Position", UDim2.new(0, 5, 0, yAxis), windowFrame)
end
--
function page:Open(state, externalOpen)
if not externalOpen then
local ind = 0
for index, other_page in pairs(window.pages) do
if other_page == page then
ind = index
else
if other_page.open then
other_page:Open(false, true)
end
end
end
--
window.currentindex = ind
end
--
page.open = state
pageText.Text = (page.open and "[-] " or "[+] ") .. pageName
--
for index, section in pairs(page.sections) do
section:Open(page.open)
end
--
window:Refresh()
end
--
function page:Action(action)
if action == "Enter" then
page:Open(not page.open)
elseif action == "Right" and not page.open then
page:Open(true)
elseif action == "Left" and page.open then
page:Open(false)
end
end
--
function page:Section(sectionProperties)
-- // Variables
local section = {content = {}}
local sectionProperties = sectionProperties or {}
--
local sectionName = sectionProperties.name or sectionProperties.Name or "New Section"
-- // Functions
-- // Main
local sectionText = utility:Create("Text", {
Visible = false,
Text = "["..sectionName.."]",
Outline = true,
Font = 2,
Color = shared.theme.section,
Size = 13
})
-- // Nested Functions
function section:Open(state)
section.text.Visible = state
--
for index, content in pairs(section.content) do
content:Open(state)
end
end
--
function section:Position(yAxis)
utility:Update(section.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function section:Label(labelProperties)
-- // Variables
local label = {noaction = true}
local labelProperties = labelProperties or {}
--
local labelName = labelProperties.name or labelProperties.Name or "New Label"
-- // Functions
-- // Main
local labelText = utility:Create("Text", {
Visible = false,
Text = labelName,
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function label:Turn(state)
if state then
utility:Update(label.text, "Color", "accent")
else
utility:Update(label.text, "Color", "text")
end
end
--
function label:Position(yAxis)
utility:Update(label.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function label:Open(state)
label.text.Visible = state
end
--
function label:Action(action)
end
-- // Returning + Other
label.name = labelName
label.text = labelText
--
section.content[#section.content + 1] = label
--
return label
end
--
function section:Button(buttonProperties)
-- // Variables
local button = {}
local buttonProperties = buttonProperties or {}
--
local buttonName = buttonProperties.name or buttonProperties.Name or "New Button"
local buttonConfirm = buttonProperties.confirm or buttonProperties.Confirm or false
local buttonCallback = buttonProperties.callback or buttonProperties.Callback or buttonProperties.CallBack or buttonProperties.callBack or function() end
-- // Functions
-- // Main
local buttonText = utility:Create("Text", {
Visible = false,
Text = buttonName,
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function button:Turn(state)
if state then
utility:Update(button.text, "Color", "accent")
else
utility:Update(button.text, "Color", "text")
end
end
--
function button:Position(yAxis)
utility:Update(button.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function button:Open(state)
button.text.Visible = state
end
--
function button:Action(action)
if buttonConfirm and button.text.Text ~= "confirm?" then
button.text.Text = "confirm?"
task.delay(3, function()
if button.text.Text == "confirm?" then
button.text.Text = buttonName
end
end)
return
end
--
button.text.Text = "<"..buttonName..">"
--
buttonCallback()
--
wait(0.2)
button.text.Text = buttonName
end
-- // Returning + Other
button.name = buttonName
button.text = buttonText
--
section.content[#section.content + 1] = button
--
return button
end
--
function section:Toggle(toggleProperties)
local toggle = {}
local toggleProperties = toggleProperties or {}
--
local toggleName = toggleProperties.name or toggleProperties.Name or "New Toggle"
local toggleDefault = toggleProperties.default or toggleProperties.Default or toggleProperties.def or toggleProperties.Def or false
local togglePointer = toggleProperties.pointer or toggleProperties.Pointer or toggleProperties.flag or toggleProperties.Flag or nil
local toggleCallback = toggleProperties.callback or toggleProperties.Callback or toggleProperties.CallBack or toggleProperties.callBack or function() end
-- // Functions
-- // Main
local toggleText = utility:Create("Text", {
Visible = false,
Text = toggleName .. " -> " .. (toggleDefault and "ON" or "OFF"),
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function toggle:Turn(state)
if state then
utility:Update(toggle.text, "Color", "accent")
else
utility:Update(toggle.text, "Color", "text")
end
end
--
function toggle:Position(yAxis)
utility:Update(toggle.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function toggle:Open(state)
toggle.text.Visible = state
end
--
function toggle:Action(action)
toggle.current = not toggle.current
toggle.text.Text = toggle.name .. " -> " .. (toggle.current and "ON" or "OFF")
--
toggleCallback(toggle.current)
end
-- // Returning + Other
toggle.name = toggleName
toggle.text = toggleText
toggle.current = toggleDefault
--
section.content[#section.content + 1] = toggle
--
if togglePointer then
local pointer = {}
--
function pointer:Get()
return toggle.current
end
--
function pointer:Set(value)
if typeof(value) == "bool" then
toggle.current = value
toggle.text.Text = toggle.name .. " -> " .. (toggle.current and "ON" or "OFF")
--
toggleCallback(toggle.current)
end
end
--
shared.pointers[togglePointer] = pointer
end
--
return toggle
end
--
function section:Slider(sliderProperties)
local slider = {}
local sliderProperties = sliderProperties or {}
--
local sliderName = sliderProperties.name or sliderProperties.Name or "New Toggle"
local sliderDefault = sliderProperties.default or sliderProperties.Default or sliderProperties.def or sliderProperties.Def or 1
local sliderMax = sliderProperties.max or sliderProperties.Max or sliderProperties.maximum or sliderProperties.Maximum or 10
local sliderMin = sliderProperties.min or sliderProperties.Min or sliderProperties.minimum or sliderProperties.Minimum or 1
local sliderDigits = sliderProperties.digits or sliderProperties.Digits or sliderProperties.scale or sliderProperties.Scale or 1
local sliderTick = sliderProperties.tick or sliderProperties.Tick or sliderProperties.decimals or sliderProperties.Decimals or 1
local sliderPointer = sliderProperties.pointer or sliderProperties.Pointer or sliderProperties.flag or sliderProperties.Flag or nil
local sliderCallback = sliderProperties.callback or sliderProperties.Callback or sliderProperties.CallBack or sliderProperties.callBack or function() end
-- // Functions
-- // Main
local sliderText = utility:Create("Text", {
Visible = false,
Text = sliderName .. " -> " .. "<" .. tostring(sliderDefault) .. "/" .. tostring(sliderMax) .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function slider:Turn(state)
if state then
utility:Update(slider.text, "Color", "accent")
else
utility:Update(slider.text, "Color", "text")
end
end
--
function slider:Position(yAxis)
utility:Update(slider.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function slider:Open(state)
slider.text.Visible = state
end
--
function slider:Action(action)
slider.current = math.clamp(action == "Left" and (slider.current - slider.tick) or (slider.current + slider.tick), slider.min, slider.max)
slider.text.Text = sliderName .. " -> " .. "<" .. utility:Round(slider.current, slider.digits) .. "/" .. utility:Round(slider.max, slider.digits) .. ">"
--
sliderCallback(slider.current)
end
-- // Returning + Other
slider.name = sliderName
slider.text = sliderText
slider.current = sliderDefault
slider.max = sliderMax
slider.min = sliderMin
slider.digits = sliderDigits
slider.tick = sliderTick
--
section.content[#section.content + 1] = slider
--
if sliderPointer then
local pointer = {}
--
function pointer:Get()
return slider.current
end
--
function pointer:Set(value)
if typeof(value) == "number" then
slider.current = value
slider.text.Text = sliderName .. " -> " .. "<" .. utility:Round(slider.current, slider.digits) .. "/" .. utility:Round(slider.max, slider.digits) .. ">"
--
sliderCallback(slider.current)
end
end
--
shared.pointers[sliderPointer] = pointer
end
--
return slider
end
--
function section:List(listProperties)
local list = {}
local listProperties = listProperties or {}
--
local listName = listProperties.name or listProperties.Name or "New Toggle"
local listEnter = listProperties.enter or listProperties.Enter or listProperties.comfirm or listProperties.Comfirm or false
local listDefault = listProperties.default or listProperties.Default or listProperties.def or listProperties.Def or 1
local listOptions = listProperties.options or listProperties.Options or {"Option 1", "Option 2", "Option 3"}
local listPointer = listProperties.pointer or listProperties.Pointer or listProperties.flag or listProperties.Flag or nil
local listCallback = listProperties.callback or listProperties.Callback or listProperties.CallBack or listProperties.callBack or function() end
-- // Functions
-- // Main
local listText = utility:Create("Text", {
Visible = false,
Text = listName .. " -> " .. "<" .. tostring(listOptions[listDefault]) .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function list:Turn(state)
if state then
utility:Update(list.text, "Color", "accent")
else
utility:Update(list.text, "Color", "text")
end
end
--
function list:Position(yAxis)
utility:Update(list.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function list:Open(state)
list.text.Visible = state
end
--
function list:Action(action)
if (listEnter and action == "Enter") then
listCallback(list.options[list.current])
else
list.current = ((list.options[action == "Left" and list.current - 1 or list.current + 1]) and (action == "Left" and list.current - 1 or list.current + 1)) or (action == "Left" and #list.options or 1)
--
list.text.Text = listName .. " -> " .. "<" .. tostring(list.options[list.current]) .. ">"
--
if not listEnter then
listCallback(list.options[list.current])
end
end
end
-- // Returning + Other
if listPointer then
local pointer = {}
--
function pointer:Get(cfg)
if cfg then
return list.current
else
return list.options[list.current]
end
end
--
function pointer:Set(value)
if typeof(value) == "number" and list.options[value] then
list.current = value
--
list.text.Text = listName .. " -> " .. "<" .. tostring(list.options[list.current]) .. ">"
--
if not listEnter then
listCallback(list.options[list.current])
end
end
end
--
shared.pointers[listPointer] = pointer
end
--
list.name = listName
list.text = listText
list.current = listDefault
list.options = listOptions
--
section.content[#section.content + 1] = list
--
return list
end
--
function section:MultiList(multiListProperties)
local multiList = {}
local multiListProperties = multiListProperties or {}
--
local multiListName = multiListProperties.name or multiListProperties.Name or "New Toggle"
local multiListDefault = multiListProperties.default or multiListProperties.Default or multiListProperties.def or multiListProperties.Def or 1
local multiListOptions = multiListProperties.options or multiListProperties.Options or {{"Option 1", false}, {"Option 2", false}, {"Option 3", false}}
local multiListPointer = multiListProperties.pointer or multiListProperties.Pointer or multiListProperties.flag or multiListProperties.Flag or nil
local multiListCallback = multiListProperties.callback or multiListProperties.Callback or multiListProperties.CallBack or multiListProperties.callBack or function() end
-- // Functions
-- // Main
local multiListText = utility:Create("Text", {
Visible = false,
Text = multiListName .. " -> " .. "<" .. (multiListOptions[multiListDefault] and (tostring(multiListOptions[multiListDefault][1]) .. ":" .. ((multiListOptions[multiListDefault][2]) and "ON" or "OFF")) or "Nil") .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function multiList:Turn(state)
if state then
utility:Update(multiList.text, "Color", "accent")
else
utility:Update(multiList.text, "Color", "text")
end
end
--
function multiList:Position(yAxis)
utility:Update(multiList.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function multiList:Open(state)
multiList.text.Visible = state
end
--
function multiList:Action(action)
if action == "Enter" then
multiList.options[multiList.current][2] = not multiList.options[multiList.current][2]
--
multiList.text.Text = multiList.name .. " -> " .. "<" .. tostring(multiList.options[multiList.current][1]) .. ":" .. (multiList.options[multiList.current][2] and "ON" or "OFF") .. ">"
--
multiListCallback(multiList.options)
else
multiList.current = ((multiList.options[action == "Left" and multiList.current - 1 or multiList.current + 1]) and (action == "Left" and multiList.current - 1 or multiList.current + 1)) or (action == "Left" and #multiList.options or 1)
--
multiList.text.Text = multiList.name .. " -> " .. "<" .. tostring(multiList.options[multiList.current][1]) .. ":" .. (multiList.options[multiList.current][2] and "ON" or "OFF") .. ">"
--
multiListCallback(multiList.options)
end
end
-- // Returning + Other
if multiListPointer then
local pointer = {}
--
function pointer:Get()
return list.options
end
--
function pointer:Set(value)
if typeof(value) == "table" and value[multiList.current] then
multiList.options = value
--
multiList.text.Text = multiList.name .. " -> " .. "<" .. tostring(multiList.options[multiList.current][1]) .. ":" .. (multiList.options[multiList.current][2] and "ON" or "OFF") .. ">"
--
multiListCallback(multiList.options)
end
end
--
shared.pointers[multiListPointer] = pointer
end
--
multiList.name = multiListName
multiList.text = multiListText
multiList.current = multiListDefault
multiList.options = multiListOptions
--
section.content[#section.content + 1] = multiList
--
return multiList
end
--
function section:PlayerList(playerListProperties)
local playerList = {}
local playerListProperties = playerListProperties or {}
--
local playerListName = playerListProperties.name or playerListProperties.Name or "New Toggle"
local playerListEnter = playerListProperties.enter or playerListProperties.Enter or playerListProperties.comfirm or playerListProperties.Comfirm or false
local playerListCallback = playerListProperties.callback or playerListProperties.Callback or playerListProperties.CallBack or playerListProperties.callBack or function() end
local playerListOptions = {}
-- // Functions
for index, player in pairs(plrs:GetPlayers()) do
if player ~= plr then
playerListOptions[#playerListOptions + 1] = player
end
end
--
utility:Connection(plrs.PlayerAdded, function(player)
if player ~= plr then
if not table.find(playerList.options, player) then
playerList.options[#playerList.options + 1] = player
end
--
if #playerList.options == 1 then
playerList.current = 1
--
playerList.text.Text = playerList.name .. " -> " .. "<" .. tostring(playerList.options[playerList.current].Name) .. ">"
--
if not playerListEnter then
playerListCallback(tostring(playerList.options[playerList.current]))
end
end
end
end)
--
utility:Connection(plrs.PlayerRemoving, function(player)
if player ~= plr then
local index = table.find(playerList.options, player)
local current = playerList.current
local current_plr = playerList.options[current]
--
if index then
table.remove(playerList.options, index)
end
--
if #playerList.options == 0 then
playerList.text.Text = playerList.name .. " -> " .. "<Nil>"
else
local oldCurrent = playerList.current
--
if index and playerList.options[playerList.current] ~= current_plr and table.find(playerList.options, current_plr) then
playerList.current = table.find(playerList.options, current_plr)
end
--
playerList.text.Text = playerList.name .. " -> " .. "<" .. tostring(playerList.options[playerList.current].Name) .. ">"
--
if not playerListEnter then
if oldCurrent ~= playerList.current then
playerListCallback(tostring(playerList.options[playerList.current]))
end
end
end
end
end)
-- // Main
local playerListText = utility:Create("Text", {
Visible = false,
Text = playerListName .. " -> " .. "<" .. (#playerListOptions >= 1 and tostring(playerListOptions[1].Name) or "Nil") .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function playerList:Turn(state)
if state then
utility:Update(playerList.text, "Color", "accent")
else
utility:Update(playerList.text, "Color", "text")
end
end
--
function playerList:Position(yAxis)
utility:Update(playerList.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function playerList:Open(state)
playerList.text.Visible = state
end
--
function playerList:Action(action)
if (playerListEnter and action == "Enter") then
if #playerList.options >= 1 then
playerListCallback(tostring(playerList.options[playerList.current]))
end
else
if #playerList.options >= 1 then
local oldCurrent = playerList.current
--
playerList.current = ((playerList.options[action == "Left" and playerList.current - 1 or playerList.current + 1]) and (action == "Left" and playerList.current - 1 or playerList.current + 1)) or (action == "Left" and #playerList.options or 1)
--
playerList.text.Text = playerList.name .. " -> " .. "<" .. tostring(playerList.options[playerList.current].Name) .. ">"
--
if not playerListEnter then
if oldCurrent ~= playerList.current then
playerListCallback(tostring(playerList.options[playerList.current]))
end
end
end
end
end
-- // Returning + Other
playerList.name = playerListName
playerList.text = playerListText
playerList.current = 1
playerList.options = playerListOptions
--
section.content[#section.content + 1] = playerList
--
return playerList
end
--
function section:Keybind(keybindProperties)
-- // Variables
local keybind = {}
local keybindProperties = keybindProperties or {}
--
local keybindName = keybindProperties.name or keybindProperties.Name or "New Keybind"
local keybindDefault = keybindProperties.default or keybindProperties.Default or keybindProperties.def or keybindProperties.Def or Enum.KeyCode.B
local keybindInputs = keybindProperties.inputs or keybindProperties.Inputs or true
local keybindPointer = keybindProperties.pointer or keybindProperties.Pointer or keybindProperties.flag or keybindProperties.Flag or nil
local keybindCallback = keybindProperties.callback or keybindProperties.Callback or keybindProperties.CallBack or keybindProperties.callBack or function() end
-- // Functions
function keybind:Shorten(string)
for i,v in pairs(shared.shortenedInputs) do
string = string.gsub(string, i, v)
end
--
return string
end
--
function keybind:Change(input)
input = input or "..."
local inputTable = {}
--
if input.EnumType then
if input.EnumType == Enum.KeyCode or input.EnumType == Enum.UserInputType then
if table.find(shared.allowedKeyCodes, input.Name) or table.find(shared.allowedInputTypes, input.Name) then
inputTable = {input.EnumType == Enum.KeyCode and "KeyCode" or "UserInputType", input.Name}
--
keybind.current = inputTable
keybind.text.Text = keybindName .. " -> " .. "<" .. (#keybind.current > 0 and keybind:Shorten(keybind.current[2]) or "...") .. ">"
--
return true
end
end
end
--
return false
end
-- // Main
local keybindText = utility:Create("Text", {
Visible = false,
Text = keybindName .. " -> " .. "<" .. "..." .. ">",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
-- // Nested Functions
function keybind:Turn(state)
if state then
utility:Update(keybind.text, "Color", "accent")
else
utility:Update(keybind.text, "Color", "text")
end
end
--
function keybind:Position(yAxis)
utility:Update(keybind.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
end
--
function keybind:Open(state)
keybind.text.Visible = state
end
--
function keybind:Action(action)
if not keybind.selecting then
keybind.text.Text = keybindName .. " -> " .. "<" .. "..." .. ">"
--
keybind.selecting = true
--
local connection
connection = utility:Connection(uis.InputBegan, function(Input)
if connection then
local inputProcessed = keybind:Change(Input.KeyCode.Name ~= "Unknown" and Input.KeyCode or (keybind.inputs and Input.UserInputType))
--
if inputProcessed then
wait()
keybind.selecting = false
--
utility:RemoveConnection(connection)
keybindCallback(Enum[keybind.current[1]][keybind.current[2]])
end
end
end)
end
end
-- // Returning + Other
if keybindPointer then
local pointer = {}
--
function pointer:Get(cfg)
if cfg then
return keybind.current
else
return Enum[keybind.current[1]][keybind.current[2]]
end
end
--
function pointer:Set(value)
if typeof(value) == "table" and value[1] and value[2] then
local inputProcessed = keybind:Change(Enum[value[1]][value[2]])
--
if inputProcessed then
keybindCallback(Enum[keybind.current[1]][keybind.current[2]])
end
end
end
--
shared.pointers[keybindPointer] = pointer
end
--
keybind.name = keybindName
keybind.text = keybindText
keybind.current = {}
keybind.inputs = keybindInputs
keybind.selecting = false
--
keybind:Change(keybindDefault)
--
section.content[#section.content + 1] = keybind
--
return keybind
end
--
function section:ColorList(colorListProperties)
local colorList = {}
local colorListProperties = colorListProperties or {}
--
local colorListName = colorListProperties.name or colorListProperties.Name or "New Toggle"
local colorListDefault = colorListProperties.default or colorListProperties.Default or colorListProperties.def or colorListProperties.Def or 1
local colorListPointer = colorListProperties.pointer or colorListProperties.Pointer or colorListProperties.flag or colorListProperties.Flag or nil
local colorListCallback = colorListProperties.callback or colorListProperties.Callback or colorListProperties.CallBack or colorListProperties.callBack or function() end
-- // Functions
-- // Main
--
local colorListText = utility:Create("Text", {
Visible = false,
Text = colorListName .. " -> " .. "< >",
Outline = true,
Font = 2,
Color = shared.theme.text,
Size = 13
})
--
local colorListColor = utility:Create("Square", {
Visible = false,
Filled = true,
Thickness = 0,
Color = shared.colors[colorListDefault],
Size = UDim2.new(0, 17, 0, 9),
})
-- // Nested Functions
function colorList:Turn(state)
if state then
utility:Update(colorList.text, "Color", "accent")
else
utility:Update(colorList.text, "Color", "text")
end
end
--
function colorList:Position(yAxis)
utility:Update(colorList.text, "Position", UDim2.new(0, 22, 0, yAxis), windowFrame)
utility:Update(colorList.color, "Position", UDim2.new(0, 22 + colorList.text.TextBounds.X - 26, 0, yAxis + 3), windowFrame)
end
--
function colorList:Open(state)
colorList.text.Visible = state
colorList.color.Visible = state
end
--
function colorList:Action(action)
colorList.current = ((colorList.options[action == "Left" and colorList.current - 1 or colorList.current + 1]) and (action == "Left" and colorList.current - 1 or colorList.current + 1)) or (action == "Left" and #colorList.options or 1)
--
colorList.text.Text = colorListName .. " -> " .. "< >"
colorList.color.Color = colorList.options[colorList.current]
--
colorListCallback(colorList.options[colorList.current])
end
-- // Returning + Other
if colorListPointer then
local pointer = {}
--
function pointer:Get(cfg)
if cfg then
return colorList.current
else
return colorList.options[colorList.current]
end
end
--
function pointer:Set(value)
if typeof(value) == "number" then
colorList.current = value
--
colorList.text.Text = colorListName .. " -> " .. "< >"
colorList.color.Color = colorList.options[colorList.current]
--
colorListCallback(colorList.options[colorList.current])
end
end
--
shared.pointers[colorListPointer] = pointer
end
--
colorList.name = colorListName
colorList.text = colorListText
colorList.color = colorListColor
colorList.current = colorListDefault
colorList.options = shared.colors
--
section.content[#section.content + 1] = colorList
--
return colorList
end
-- // Returning + Other
section.name = sectionName
section.text = sectionText
--
page.sections[#page.sections + 1] = section
--
return section
end
-- // Returning + Other
page.name = pageName
page.text = pageText
--
window.pages[#window.pages + 1] = page
window:Refresh()
--
return page
end
-- // Returning
return window
end
end
-- UI
do
local window = library:Window({name = "menu"})
local page_thirdperson = window:Page({name = "third person"})
local section_settings = page_thirdperson:Section({name = "third person settings"})
do -- third person
section_settings:Toggle({name = "enabled", default = false, pointer = "third_person"})
section_settings:Slider({name = "third person x", default = 0, max = 10, min = -10, tick = 0.1, pointer = "third_person_x"})
section_settings:Slider({name = "third person y", default = 0, max = 10, min = -10, tick = 0.1, pointer = "third_person_y"})
section_settings:Slider({name = "third person z", default = 5, max = 10, min = -10, tick = 0.1, pointer = "third_person_z"})
end
end
do -- Hooks
game_client.network.send = function(self, command, ...)
local arguments = {...}
if command == "stance" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local stance = arguments[1]
third_person_object:setStance(stance)
end
end
if command == "aim" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local aim = arguments[1]
third_person_object:setAim(aim)
end
end
if command == "equip" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local weapon_index = arguments[1]
if weapon_index < 3 then
third_person_object:equip(weapon_index)
elseif weapon_index == 3 then
third_person_object:equipMelee(weapon_index)
end
end
end
if command == "sprint" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local sprinting = arguments[1]
third_person_object:setSprint(sprinting)
end
end
if command == "stab" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
third_person_object:stab()
end
end
if command == "spawn" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object:popCharacterModel()
character_model:Destroy()
fake_rep_object:despawn()
end
local current_loadout = game_client.active_loadout.getActiveLoadoutData(game_client.player_data.getPlayerData())
fake_rep_object:spawn(nil, current_loadout)
end
if command == "forcereset" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object._character
character_model:Destroy()
fake_rep_object:despawn()
end
end
if command == "newbullets" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
third_person_object:kickWeapon()
end
end
if command == "swapweapon" then
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local weapon_index = arguments[2]
local weapon_dropped = arguments[1]
if weapon_index < 3 then
fake_rep_object._activeWeaponRegistry[weapon_index] = {
weaponName = weapon_dropped.Gun.Value,
weaponData = game_client.content_database.getWeaponData(weapon_dropped.Gun.Value),
}
else
fake_rep_object._activeWeaponRegistry[weapon_index] = {
weaponName = weapon_dropped.Knife.Value,
weaponData = game_client.content_database.getWeaponData(weapon_dropped.Knife.Value),
}
end
end
end
if command == "repupdate" then
if shared.pointers["third_person"]:Get() and game_client.character_interface:isAlive() then
local third_person_object = fake_rep_object:getThirdPersonObject()
if not third_person_object then
local weapon_controller = game_client.weapon_controller_interface.getController()
fake_rep_object._activeWeaponRegistry[1] = {
weaponName = weapon_controller._activeWeaponRegistry[1]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[1]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[1]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[1]._camoList
}
fake_rep_object._activeWeaponRegistry[2] = {
weaponName = weapon_controller._activeWeaponRegistry[2]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[2]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[2]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[2]._camoList
}
fake_rep_object._activeWeaponRegistry[3] = {
weaponName = weapon_controller._activeWeaponRegistry[3]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[3]._weaponData,
camoData = weapon_controller._activeWeaponRegistry[3]._camoData
}
fake_rep_object._activeWeaponRegistry[4] = {
weaponName = weapon_controller._activeWeaponRegistry[4]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[4]._weaponData
}
fake_rep_object._thirdPersonObject = game_client.third_person_object.new(fake_rep_object._player, nil, fake_rep_object)
fake_rep_object._thirdPersonObject:equip(weapon_controller._activeWeaponIndex, true)
fake_rep_object._alive = true
end
local clock_time = game_client.game_clock.getTime()
local tick = tick()
local velocity = Vector3.zero
if fake_rep_object._receivedPosition and fake_rep_object._receivedFrameTime then
velocity = (arguments[1] - fake_rep_object._receivedPosition) / (tick - fake_rep_object._receivedFrameTime);
end
local broken = false
if fake_rep_object._lastPacketTime and clock_time - fake_rep_object._lastPacketTime > 0.5 then
broken = true
fake_rep_object._breakcount = fake_rep_object._breakcount + 1
end
fake_rep_object._smoothReplication:receive(clock_time, tick, {
t = tick,
position = arguments[1],
velocity = velocity,
angles = arguments[2],
breakcount = fake_rep_object._breakcount
}, broken);
fake_rep_object._updaterecieved = true
fake_rep_object._receivedPosition = arguments[1]
fake_rep_object._receivedFrameTime = tick
fake_rep_object._lastPacketTime = clock_time
fake_rep_object:step(3, true)
else
local third_person_object = fake_rep_object:getThirdPersonObject()
if third_person_object then
local character_model = third_person_object:popCharacterModel()
character_model:Destroy()
fake_rep_object:despawn()
end
end
end
return old_send(self, command, table.unpack(arguments))
end
old_new_index = hookmetamethod(game, "__newindex", function(self, index, value)
if checkcaller() then
return old_new_index(self, index, value)
end
if game_client.character_interface:isAlive() and shared.pointers["third_person"]:Get() then
if self == ws.CurrentCamera and index == "CFrame" then
value *= CFrame.new(shared.pointers["third_person_x"]:Get(), shared.pointers["third_person_y"]:Get(), shared.pointers["third_person_z"]:Get())
end
end
return old_new_index(self, index, value)
end)
end
do -- Third Person
local player = Instance.new("Player") -- Create a new character to avoid the warn function
fake_rep_object = game_client.replication_object.new(player)
fake_rep_object._player = plr -- Set it to your localplayer
player:Destroy()
player = nil
if game_client.character_interface:isAlive() and game_client.weapon_controller_interface.getController() then
local weapon_controller = game_client.weapon_controller_interface.getController()
fake_rep_object._activeWeaponRegistry[1] = {
weaponName = weapon_controller._activeWeaponRegistry[1]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[1]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[1]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[1]._camoList
}
fake_rep_object._activeWeaponRegistry[2] = {
weaponName = weapon_controller._activeWeaponRegistry[2]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[2]._weaponData,
attachmentData = weapon_controller._activeWeaponRegistry[2]._weaponAttachments,
camoData = weapon_controller._activeWeaponRegistry[2]._camoList
}
fake_rep_object._activeWeaponRegistry[3] = {
weaponName = weapon_controller._activeWeaponRegistry[3]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[3]._weaponData,
camoData = weapon_controller._activeWeaponRegistry[3]._camoData
}
fake_rep_object._activeWeaponRegistry[4] = {
weaponName = weapon_controller._activeWeaponRegistry[4]._weaponName,
weaponData = weapon_controller._activeWeaponRegistry[4]._weaponData
}
fake_rep_object._thirdPersonObject = game_client.third_person_object.new(fake_rep_object._player, nil, fake_rep_object)
fake_rep_object._thirdPersonObject:equip(1, true)
fake_rep_object._alive = true
end
end |
Script 4:
Phantom Forces Silent Aim V2 Script:
getgenv().fov = 180 -- Any angle between 0-180 degrees
getgenv().visibleCheck = false -- true, false
getgenv().targetedPart = "Head" -- "Head", "Torso" or "Random"
loadstring(game:HttpGet("https://raw.githubusercontent.com/Spoorloos/scripts/main/silent_aim_v2.lua"))() |
Script 5:
Phantom Forces Radar Hack Script:
getgenv().radar_hack = true
local game_client = {}
for i,v in next, getgc(true) do
if typeof(v) == "table" then
if rawget(v, 'goingLoud') and rawget(v, 'isInSight') then
game_client.spotting = v
elseif rawget(v, "getCharacterObject") then
game_client.character_controller = v
end
end
end
local old_is_spotted = game_client.spotting.isSpotted
game_client.spotting.isSpotted = function(character)
if game_client.character_controller.isAlive() and getgenv().radar_hack then
return true
else
return old_is_spotted(character)
end
end |
Script 6:
Phantom Forces Basic ESP & Wall Check Script:
-- // ESP CONFIGURATION \\ --
_G.sex = true --> true: ESP Enabled | false: ESP Disabled (Use the switch key)
_G.switchKey = Enum.KeyCode.RightShift --> List: https://create.roblox.com/docs/reference/engine/enums/KeyCode
-- // DONT TOUCH \\ --
loadstring(game:HttpGet('https://raw.githubusercontent.com/imvipp/roblox/main/shitware/phantomforces/basic_esp.lua'))() |
Script 7:
Phantom Forces Fast Animations Script:
https://raw.githubusercontent.com/The3Bakers4565/Spicy-Bagel/main/Other/Phantom_Forces/Fast_Animations.lua |
Script 8:
Phantom Hitbox Expander GUI Script:
https://raw.githubusercontent.com/The3Bakers4565/Spicy-Bagel/main/Other/Phantom_Forces/Hit_Box_Expander.lua |
Script 9:
Phantom Forces Actor Bypass Script:
for _, actor in next, getactors() do if tostring(actor) == "lol" then syn.run_on_actor(actor, [[ paste script here ]]) end end |
Script 10:
Phantom Forces Knife Aura – Auto Stab Script:
https://raw.githubusercontent.com/The3Bakers4565/Spicy-Bagel/main/Other/Phantom_Forces/Knife_Aura.lua |
Script 11:
Phantom Forces Auto Wall, Auto Shoot Script:
https://raw.githubusercontent.com/The3Bakers4565/Spicy-Bagel/main/Other/Phantom_Forces/Silent_Aim.lua |
Script 12:
Phantom Forces Speed Script:
game.Players.LocalPlayer.Character.Humanoid:Destroy()
Instance.new('Humanoid').Parent = game.Players.LocalPlayer.Character
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 50 |
Script 13:
Phantom Forces Anti-Fall Damage Script:
game.Players.LocalPlayer.Character.Humanoid:Destroy()
Instance.new('Humanoid').Parent = game.Players.LocalPlayer.Character |
Script 14:
Phantom Forces Pishy Pampor Script:
-- Settings --
getgenv().Settings = {
Aimbot = true,
Adjust_Bullet_Drop = true,
Target_Prediction = true,
Realistic_Aiming_Speed = true,
Hitscan_Priority = "Head", -- Head, Torso, Closest
Hitscans = { { "Head", true }, { "Body", true }, { "Limbs", false } },
Smoothing_Type = "Exponential", -- Exponential (For realistic aiming but isn't as good as Linear) / Linear
Randomization = 1,
Smoothing = 20,
FOV = 8,
FOVType = "Dynamic", -- Dynamic / Static
Wallbang = true,
MaxWalls = 2,
ShowDebugMenu = true,
DrawFOVCircle = true,
FOVCircleSettings = {
Color = Color3.fromRGB(255, 255, 255),
Transparency = 1,
Thickness = 1,
}
}
loadstring(game:HttpGet("https://raw.githubusercontent.com/Nexilist/MyScripts/main/Pishy%20Pampor.lua", true))() |
Script 15:
Phantom Forces Strawhook Script:
https://raw.githubusercontent.com/VoidMasterX/strawhook/main/script.lua |
Script 16:
Phantom Forces Pastebin Hacks:
https://raw.githubusercontent.com/Yousuck780/phantom-forces-new/main/noob |
loadstring(game:HttpGet("https://raw.githubusercontent.com/VoidMasterX/strawhook/main/script.lua", true))() |
Script 17:
Phantom Forces Aimbot Script Pastebin 2023:
getgenv().S = {
Legit = true,
FOV = 250,
WallCheck = true,
Smooth = 0.1
}
for i,v in pairs(game:GetChildren()) do
getgenv()[v.ClassName] = v
end
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()
local Shoot = false
function NotObstructing(i, v)
if S.WallCheck then
c = Workspace.CurrentCamera.CFrame.Position
a = Ray.new(c, i - c)
f = Workspace:FindPartOnRayWithIgnoreList(a, v)
return f == nil
else
return true
end
end
local GetClosestPlayerToCurser = function()
local Target = nil
local MaxDistance = math.huge
for i,v in pairs(Workspace.Players:GetChildren()) do
if v.Name ~= Player.TeamColor.Name then
for i,v in pairs(v:GetChildren()) do
if v:IsA("Model") then
local OnPoint, OnScreen = Workspace.CurrentCamera:WorldToViewportPoint(v:GetModelCFrame().Position)
if OnScreen and NotObstructing(v:GetModelCFrame().Position, {Player.Character, v}) then
local Mag = (Vector2.new(Mouse.X, Mouse.Y) - Vector2.new(OnPoint.X, OnPoint.Y)).Magnitude
if Mag < MaxDistance then
Target = v
MaxDistance = Mag
end
end
end
end
end
end
return Target
end
local Return = function(A)
return Workspace.CurrentCamera:WorldToScreenPoint(A)
end
UserInputService.InputBegan:Connect(
function(v)
if v.UserInputType == Enum.UserInputType.MouseButton2 then
Shoot = true
end
end
)
UserInputService.InputEnded:Connect(
function(v)
if v.UserInputType == Enum.UserInputType.MouseButton2 then
Shoot = false
end
end
)
RunService.Stepped:Connect(function()
pcall(function()
if not S.Legit or not Shoot then return end
local SexPosition = Return(GetClosestPlayerToCurser():GetModelCFrame().Position)
local MousePosition = Return(Mouse.Hit.Position)
local OldX, OldY = (SexPosition.X - MousePosition.X), (SexPosition.Y - MousePosition.Y)
mousemoverel(OldX * S.Smooth, OldY * S.Smooth)
end)
end) |
Script 18:
Phantom Forces Script Pastebin Hacks – OP GUI 2023:
https://raw.githubusercontent.com/The3Bakers4565/Spicy-Bagel/main/Other/Phantom_Forces/Hit_Box_Expander.lua |
Script 19:
Phantom Forces Script Pastebin Hacks – Free Chams:
function gs(serv)
return game:GetService(serv)
end
local plrs = gs"Players"
local lp = plrs.LocalPlayer
local ws = gs"Workspace"
function isEnemy(character)
if character.Parent.Name == tostring(lp.TeamColor) then
return false
else
return true
end
end
function createChams(player)
local newChams = Instance.new("Highlight")
newChams.Parent = player
end
spawn(function()
for i,v in pairs(ws.Players:GetDescendants()) do
if isEnemy(v) and v.Name == "Player" then
createChams(v)
end
end
end)
-- yes, ik i made a function, but for some reason it didnt work here
spawn(function()
ws.Players["Bright orange"].ChildAdded:connect(function(child)
wait(1)
if isEnemy(child) == true then
local newChams = Instance.new("Highlight")
newChams.Parent = child
end
end)
end)
spawn(function()
ws.Players["Bright blue"].ChildAdded:connect(function(child)
wait(1)
if isEnemy(child) == true then
local newChams = Instance.new("Highlight")
newChams.Parent = child
end
end)
end)
spawn(function()
ws.Ignore.DeadBody.ChildAdded:connect(function(child)
if child:FindFirstChild("Highlight") then
child.Highlight:Destroy()
end
end)
end) |
Script 20:
Phantom Forces Script Pastebin Hacks – GUI 2022:
local library = loadstring(game:HttpGet(('https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/wall%20v3')))()
local ESP = loadstring(game:HttpGet("https://raw.githubusercontent.com/zekgt/lua/main/phantom%20forces/libraries/ESP.lua"))()
ESP.Boxes = false
ESP.Names = false
local window = library:CreateWindow("Phantom Forces")
local folder1 = window:CreateFolder("ESP")
local folder2 = window:CreateFolder("Misc")
local Ghosts = game.Workspace.Players['Bright orange']
local Phantoms = game.Workspace.Players['Bright blue']
ESP:AddObjectListener(Ghosts, {
Recursive = true,
Type = "Model",
CustomName = " ",
Color = Color3.fromRGB(255,165,0),
Validator = function(obj)
return obj:FindFirstChild("Torso")
end,
IsEnabled = "GhostsESP"
})
ESP:AddObjectListener(Phantoms, {
Recursive = true,
Type = "Model",
CustomName = " ",
Color = Color3.fromRGB(0,0,233),
Validator = function(obj)
return obj:FindFirstChild("Torso")
end,
IsEnabled = "PhantomsESP"
})
ESP.GhostsESP = false
ESP.PhantomsESP = false
folder1:Toggle("Enabled", function(v)
if v then
ESP:Toggle(true)
else
ESP:Toggle(false)
end
end)
folder1:Toggle("Ghosts", function(v) -- so fucking sorry for adding this because i couldn't figure out teamcheck
ESP.GhostsESP = v
end)
folder1:Toggle("Phantoms", function(v) -- so fucking sorry for adding this because i couldn't figure out teamcheck
ESP.PhantomsESP = v
end)
folder1:Toggle("Boxes", function(v)
if v then
ESP.Boxes = true
else
ESP.Boxes = false
end
end)
folder1:Toggle("Tracers", function(v)
if v then
ESP.Tracers = true
else
ESP.Tracers = false
end
end)
folder1:Toggle("Distance", function(v)
if v then
ESP.Names = true
else
ESP.Names = false
end
end)
folder2:Button("Rejoin Server", function()
local ts = game:GetService("TeleportService")
local p = game:GetService("Players").LocalPlayer
ts:Teleport(game.PlaceId, p)
end)
local creditsTable = {
"UI: Aika",
"ESP: Kiriot22",
"Script: ZekGT",
}
folder2:Dropdown("Credits", creditsTable, true, function()
warn""
end)
folder2:Slider("FPS Capacity",{
min = 10;
max = 300;
precise = false;
}, function(v)
setfpscap(v)
end)
print("ESP Loaded") |
Script 21:
Unlock All Guns 2023:
-- made by siper#9938
-- 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 |
Script 22:
Rage, Legit, Invisible, Gun Mods, & AA Script:
https://www.mediafire.com/file/bscf71m7umuyccb/Phantom_Forces_22_HUB_-_FREE_TO_USE_-_AIMBOT_%2526_MORE%2521.txt/file |
Script 23:
Firerate Hacks Script 2023:
https://ehub.fun/uploads/firerate13.lua |
Script 24:
Phantom Forces Script Pastebin Hacks – OP 2023:
https://pastebin.com/ezRzS5gN |
Script 25:
Phantom Forces Script Pastebin Hacks – Raycast, Chams, Open Source:
local plr = game.Players.LocalPlayer
local l_character = plr.Character or plr.CharacterAdded:wait()
local f_team
local e_team
local e_plrlist
local rs = game:GetService(“RunService”)
local camera = workspace.CurrentCamera
local pfId = 292439477
local pId = game.PlaceId
local is_pf = pfId == pId
local function geteplrlist()
local t = {}
if is_pf then
local team_color_to_string = tostring(game.Players.LocalPlayer.TeamColor)
if team_color_to_string == “Bright orange” then
t = workspace.Players[“Bright blue”]:GetChildren()
else
t = workspace.Players[“Bright orange”]:GetChildren()
end
elseif not is_pf then
if #game.Teams:GetChildren() > 0 then
for i,v in next, game.Players:GetPlayers() do
if v.Team~=game.Players.LocalPlayer.Team then
table.insert(t,v)
end
end
else
for i,v in next, game.Players:GetPlayers() do
if v ~= game.Players.LocalPlayer then
table.insert(t,v)
end
end
end
end
return t
end
rs.Stepped:Connect(function()
e_plrlist = geteplrlist()
end)
local function check_for_esp(c_model)
if not c_model then
return
else
returnv = false
for i,v in next, c_model:GetDescendants() do
if v:IsA(“BoxHandleAdornment”) then
returnv = true
break
end
end
return returnv
end
end
local function remove_esp(c_model)
for i,v in next, c_model:GetDescendants() do
if v:IsA(“BoxHandleAdornment”) then
v:Destroy()
end
end
end
local function cast_ray(body_part)
local rp = RaycastParams.new()
rp.FilterDescendantsInstances = l_character:GetDescendants()
rp.FilterType = Enum.RaycastFilterType.Blacklist
local rcr = workspace:Raycast(camera.CFrame.Position, (body_part.Position – camera.CFrame.Position).Unit * 15000,rp)
if rcr and rcr.Instance:IsDescendantOf(body_part.Parent) then
return true
else
return false
end
end
local function create_esp(c_model)
if not c_model then
return
else
if check_for_esp(c_model) then
for i,v in next, c_model:GetChildren() do
if v:IsA(“BasePart”) and v:FindFirstChild(“BoxHandleAdornment”) then
local walt = v:FindFirstChild(“BoxHandleAdornment”)
if cast_ray(v) then
walt.Color3 = Color3.fromRGB(0,255,0)
else
walt.Color3 = Color3.fromRGB(255,0,0)
end
end
end
else
for i,v in next, c_model:GetChildren() do
if v:IsA(“BasePart”) then
local b = Instance.new(“BoxHandleAdornment”)
b.Parent = v
b.Adornee = v
b.AlwaysOnTop = true
b.Size = v.Size
b.ZIndex = 2
b.Transparency = 0.5
end
end
end
end
end
setfpscap(10000)
rs.RenderStepped:Connect(function()
for i,v in next, e_plrlist do
if is_pf then
create_esp(v)
else
create_esp(v.Character)
end
end
end)Script 26:
Phantom Forces Unfair Hub Script:
https://raw.githubusercontent.com/rblxscriptsnet/unfair/main/rblxhub.lua |
Script 27:
Phantom Forces Strawhook Script:
https://raw.githubusercontent.com/VoidMasterX/strawhook/main/script.lua |
Script 28:
Phantom Forces ESP, Wall Check, keybinds Script:
https://raw.githubusercontent.com/VoidMasterX/strawhook/main/script.lua |
Roblox Phantom Forces Script Features
Here is the salient feature of Phantom Forces Scripts:
- FOV Hack
- Silent Aim
- Instant Equip
- AIMBOT Hack
- Sleight of Hand
- No Recoil/Spread
- Visible Check Hack
- ESP Hack (Wallhack)
- Walkspeed set to 18
- Slightly increased fire
- No Hipfire Spread/Recoil
- Halved Melee Cooldown Time
FAQs
Here are the frequently asked questions (FAQs) Phantom Forces Script Pastebin Hacks:
Q1: Are the Phantom Forces Scripts safe to use?
Ans. Usually, these codes are safe to use, but it’s completely your own risk.
Q2: Are the Phantom Forces Scripts legally allowed to use?
Ans. This is a subjective matter, but many consider script usage an illegal practice. So, it is up to your ethical standards to use the hacks or not.
Q3: Could Script usage get you banned from Phantom Forces?
Ans. There are quite many chances that you might get banned. So, use at your risk.
Q4: Is it possible to alter the Phantom Forces Scripst to avoid detection?
Ans. In principle, modification is possible, but we do not recommend it. It is worth mentioning that the Phantom Forces developers frequently update the game software to detect and ban the hack users.
Q5: Is it legally allowed to use Pastebin scripts in the Phantom Forces Game?
Ans. Although many players consider the script usage legal, there are several scripts that might not fall under the legal grounds of terms of the Phantom Forces.
Conclusion
Roblox Phantom Forces Script Pastebin Hacks are quite helpful when it comes to adopting shortcuts to lead the competition. We have compiled these hacks to keep you ahead in the game and hope that these prove to be effective in the game. Phantom Forces Scripts can greatly improve your gameplay, but there are risks involved, as we have mentioned in the early sections.
We advise if any of the scripts is non-functional, then let us know as soon as possible. For more information regarding Roblox Scripts, keep visiting Qnnit.com. Or you may also check out Roblox Counter Blox Script Pastebin Hacks and Football Fusion 2 Script Pastebin Hacks.
https://www.youtube.com/watch?v=TbMJjgn1yMo&pp=ygUrUm9ibG94IFBoYW50b20gRm9yY2VzIFNjcmlwdCBQYXN0ZWJpbiBIYWNrcw%3D%3D

