--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
--1. rules: it is forbidden to change the credit name, this script was created by @im_patrick you will be charged dcma for changing the credit
--2. rules: changing the code using AI and claiming it as your own is not allowed
if patricknpcpanel then return end; patricknpcpanel = true
local github = "https://raw.githubusercontent.com/randomstring0/fe-source/refs/heads/main/NPC"
local load = loadstring(game:HttpGet(github .. "/module.Luau"))()
saved = loadstring(game:HttpGet(github .. "/table.luau"))()
local save = saved or {}
local g2l = load.G2L
local new = load.create()
local lighting = game:GetService("Lighting")
local tweenservice = game:GetService("TweenService")
local rs = game:GetService("RunService")
local ws = game:GetService("Workspace")
local plrs = game:GetService("Players")
local lp = plrs.LocalPlayer
local mouse = lp:GetMouse()
local fast = TweenInfo.new(.5, Enum.EasingStyle.Exponential)
local medium = TweenInfo.new(.67)
local slow = TweenInfo.new(.8)
local rad = 150
local currentnpc
local highlight = Instance.new("Highlight")
highlight.Parent = lp
highlight.FillTransparency = 1
highlight.OutlineTransparency = 1
local light = function(adornee, color)
task.spawn(function()
highlight.Adornee = adornee
highlight.OutlineColor = color
tweenservice:Create(highlight, medium, {OutlineTransparency = 0}):Play()
task.wait(.5)
tweenservice:Create(highlight, medium, {OutlineTransparency = 1}):Play()
end)
end
local isnpc = function(ins)
local humanoid = ins:FindFirstChildOfClass("Humanoid")
local player = plrs:GetPlayerFromCharacter(ins)
if humanoid and not player then
return ins
end
return nil
end
new:mainbutton(save["1"].title, save["1"].des, function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
local hum = currentnpc:FindFirstChildOfClass("Humanoid")
if hum then
hum:ChangeState(save["1"].val)
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
end)
new:mainbutton(save["2"].title, save["2"].des, function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
if lp and lp.Character then
local char = lp.Character
currentnpc:PivotTo(char:GetPivot())
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
end)
new:mainbutton(save["3"].title, save["3"].des, function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part then
if lp and lp.Character then
local char = lp.Character
char:PivotTo(currentnpc:GetPivot())
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
end)
local chr, cons
new:maintoggle(save["4"].title, save["4"].des, function(a)
if a then
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
if lp and lp.Character then
chr = lp.Character
lp.Character = currentnpc
ws.CurrentCamera.CameraSubject = currentnpc:FindFirstChild("HumanoidRootPart")
-- idea from sonle
local move = 0.01
cons = rs.PreSimulation:Connect(function()
local hum = lp.Character:FindFirstChildOfClass("Humanoid")
if lp.Character and hum then
hum.RootPart.CFrame += vector.create(0,move,0)
move = -move
else
if cons then
cons:Disconnect()
cons = nil
end
end
end)
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
else
if chr then
lp.Character = chr
ws.CurrentCamera.CameraSubject = chr.Humanoid
chr = nil
if cons then
cons:Disconnect()
cons = nil
end
end
end
end)
new:mainbutton(save["5"].title, save["5"].des, function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
if lp and lp.Character then
local char = lp.Character
currentnpc:PivotTo(CFrame.new(0, 1000, 0))
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
end)
new:mainbutton(save["6"].title, save["6"].des, function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
local hum = currentnpc:FindFirstChildOfClass("Humanoid")
if hum then
hum.Sit = not hum.Sit
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
end)
new:mainbutton(save["7"].title, save["7"].des, function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
local hum = currentnpc:FindFirstChildOfClass("Humanoid")
if hum then
hum:ChangeState(save["7"].val)
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
end
end
end)
local con, follownpc
follownpc = new:maintoggle(save["8"].title, save["8"].des, function(a)
if a then
con = rs.RenderStepped:Connect(function()
if currentnpc then
local part = currentnpc:FindFirstChild("HumanoidRootPart")
if part and partowner(part) then
local hum = currentnpc:FindFirstChildOfClass("Humanoid")
if hum then
local hrp=lp.Character:FindFirstChild("HumanoidRootPart")
if hrp then
hum:MoveTo(hrp.Position + Vector3.new(-4,0,0))
end
end
else
light(currentnpc, Color3.fromRGB(255, 0, 0))
if con then
follownpc:swich(false)
con:Disconnect()
con = nil
end
end
else
if con then
follownpc:swich(false)
con:Disconnect()
con = nil
end
end
end)
else
if con then
con:Disconnect()
con = nil
end
end
end)
local con1
new:extratoggle(save["9"].title, function(a)
if a then
con1 = rs.Stepped:Connect(function()
local hrp1 = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")
if not hrp1 then return end
local nbp = ws:GetPartBoundsInRadius(hrp1.Position, 13)
for _, part in pairs(nbp) do
local model = part:FindFirstAncestorOfClass("Model")
if model and isnpc(model) then
local npc = model
local hrp = npc:FindFirstChild("HumanoidRootPart")
if hrp and partowner(hrp) and not hrp.Anchored and npc ~= lp.Character then
local hum = npc:FindFirstChildOfClass("Humanoid")
if hum then
hum:ChangeState(save["9"].val)
end
end
end
end
end)
else
if con1 then
con1:Disconnect()
con1 = nil
end
end
end)
local con2
new:extratoggle(save["10"].title, function(a)
if a then
con2 = rs.Stepped:Connect(function()
local hrp1 = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")
if not hrp1 then return end
local nbp = ws:GetPartBoundsInRadius(hrp1.Position, 13)
for _, part in pairs(nbp) do
local model = part:FindFirstAncestorOfClass("Model")
if model and isnpc(model) then
local npc = model
local hrp = npc:FindFirstChild("HumanoidRootPart")
if hrp and partowner(hrp) and not hrp.Anchored and npc ~= lp.Character then
local hum = npc:FindFirstChildOfClass("Humanoid")
if hum then
hum:ChangeState(save["10"].val)
end
end
end
end
end)
else
if con2 then
con2:Disconnect()
con2 = nil
end
end
end)
mouse.Button1Down:Connect(function()
if clicknpc and mouse.Target and mouse.Target.Parent:FindFirstChild("HumanoidRootPart") then
if mouse.Target.Parent:FindFirstChild("HumanoidRootPart").Anchored == false then
if not plrs:GetPlayerFromCharacter(mouse.Target.Parent) then
if partowner(mouse.Target.Parent:FindFirstChild("HumanoidRootPart")) then
currentnpc = mouse.Target.Parent
light(currentnpc, Color3.fromRGB(0, 255, 0))
else
light(mouse.Target.Parent, Color3.fromRGB(255, 0, 0))
end
end
else
light(mouse.Target.Parent, Color3.fromRGB(255, 0, 0))
end
end
end)
rs.RenderStepped:Connect(function()
if sethiddenproperty then
sethiddenproperty(lp,"SimulationRadius",rad)
else
lp.SimulationRadius=rad
end
end)
return g2l, require;
Comments
No comments yet
Be the first to share your thoughts!