naoya script but with other control system
Key RequiredUniversal

naoya script but with other control system

Universal Scriptsa*avrilchuk1sa*avrilchuk1 4.2K views 1.9K executesUpdated Jan 14, 2026
Unrated
00
Lua Script•211 lines (5311 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

-- переменные для обновления
local humanoid
local hrp
local camera = workspace.CurrentCamera

-- ======================= НАСТРОЙКИ =======================
local KEY = Enum.KeyCode.Z

local SETTINGS = {
    MOVE_SPEED = 40,
    JUMP_POWER = 60,
    TRAIL_INTERVAL = 0.12,
    FALL_ACCEL = 196,
    MAX_FALL_SPEED = 80,
}

local PROJ_SETTINGS = {
    SIZE = Vector3.new(2, 5, 1),
    COLOR = Color3.fromRGB(180, 70, 255),
    MATERIAL = Enum.Material.Neon,
}

local TRAIL_SETTINGS = {
    SIZE = Vector3.new(2, 5, 1),
    COLOR = Color3.fromRGB(150, 50, 200),
    MATERIAL = Enum.Material.Neon,
}

-- ======================= ПЕРЕМЕННЫЕ =======================
local isActive = false
local projPart = nil
local trailTimer = 0
local savedPositions = {}
local savedTrails = {}
local velocityY = 0
local canJump = true

-- обновить ссылки на Humanoid и HRP
local function setupCharacter(char)
    character = char
    humanoid = char:WaitForChild("Humanoid")
    hrp = char:WaitForChild("HumanoidRootPart")
end

setupCharacter(character)

-- отслеживаем респавн
player.CharacterAdded:Connect(function(char)
    setupCharacter(char)

    -- если способность была активна — завершить её корректно
    if isActive then
        endProjection()
    end
end)

-- создаёт физическую часть для проекции
local function createProjPart(cframe)
    local p = Instance.new("Part", workspace)
    p.Size = PROJ_SETTINGS.SIZE
    p.CFrame = cframe
    p.Anchored = false
    p.CanCollide = true
    p.Material = PROJ_SETTINGS.MATERIAL
    p.Color = PROJ_SETTINGS.COLOR
    p.CustomPhysicalProperties = PhysicalProperties.new(0.5,0.3,0.5)
    p.Name = "ProjectionPart"
    return p
end

-- создаёт визуальный след (часть)
local function createTrail(cframe)
    local t = Instance.new("Part", workspace)
    t.Size = TRAIL_SETTINGS.SIZE
    t.CFrame = cframe
    t.Anchored = true
    t.CanCollide = false
    t.Material = TRAIL_SETTINGS.MATERIAL
    t.Color = TRAIL_SETTINGS.COLOR
    t.Name = "ProjectionTrail"
    table.insert(savedTrails, t)
    return t
end

-- начало способности
function startProjection()
    if isActive then return end
    if not humanoid or not hrp then return end

    isActive = true
    trailTimer = 0
    velocityY = 0
    canJump = true

    savedPositions = {}
    savedTrails = {}

    humanoid.WalkSpeed = 0
    humanoid.JumpPower = 0
    hrp.Anchored = true

    projPart = createProjPart(hrp.CFrame)
end

-- конец способности
function endProjection()
    if not isActive then return end
    isActive = false

    if projPart then
        for _, cf in ipairs(savedPositions) do
            if hrp then
                hrp.CFrame = cf
                task.wait(0.03)
            end
        end
    end

    if humanoid and hrp then
        humanoid.WalkSpeed = 16
        humanoid.JumpPower = 50
        hrp.Anchored = false
    end

    if projPart then
        projPart:Destroy()
        projPart = nil
    end

    for _, trailPart in ipairs(savedTrails) do
        if trailPart and trailPart.Parent then
            trailPart:Destroy()
        end
    end

    savedTrails = {}
    savedPositions = {}
end

-- ввод
UserInputService.InputBegan:Connect(function(input, gp)
    if gp then return end
    if input.KeyCode == KEY then
        startProjection()
    end
end)

UserInputService.InputEnded:Connect(function(input, gp)
    if gp then return end
    if input.KeyCode == KEY then
        endProjection()
    end
end)

-- главный цикл
RunService.Heartbeat:Connect(function(delta)
    if not isActive or not projPart then return end

    local look = camera.CFrame.LookVector
    local right = camera.CFrame.RightVector
    local moveVec = Vector3.new()

    if UserInputService:IsKeyDown(Enum.KeyCode.W) then
        moveVec = moveVec + Vector3.new(look.X, 0, look.Z)
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.S) then
        moveVec = moveVec - Vector3.new(look.X, 0, look.Z)
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.A) then
        moveVec = moveVec - Vector3.new(right.X, 0, right.Z)
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.D) then
        moveVec = moveVec + Vector3.new(right.X, 0, right.Z)
    end

    if moveVec.Magnitude > 0 then
        moveVec = moveVec.Unit * SETTINGS.MOVE_SPEED
    end

    if UserInputService:IsKeyDown(Enum.KeyCode.Space) and canJump then
        velocityY = SETTINGS.JUMP_POWER
        canJump = false
    end

    velocityY = velocityY - SETTINGS.FALL_ACCEL * delta
    if velocityY < -SETTINGS.MAX_FALL_SPEED then
        velocityY = -SETTINGS.MAX_FALL_SPEED
    end

    local newPos = projPart.Position + Vector3.new(moveVec.X * delta, velocityY * delta, moveVec.Z * delta)
    projPart.CFrame = CFrame.new(newPos)

    if projPart.Position.Y <= (hrp and hrp.Position.Y or 0) + 0.1 then
        velocityY = 0
        canJump = true
    end

    trailTimer = trailTimer + delta
    if trailTimer >= SETTINGS.TRAIL_INTERVAL then
        table.insert(savedPositions, projPart.CFrame)
        createTrail(projPart.CFrame)
        trailTimer = 0
    end
end)

Features & Information

bind on button z
#jujutsu#naoya

Community Comments (1)

LolmobilehavkerLolmobilehavkerJan 30, 2026

Can you make a mobile gui? I really like it but when i use keyboards i just freeze and cant move so thats why im asking

More Scripts for Universal Scripts