local ReplicatedStorage = game:GetService(“ReplicatedStorage”)
local Players = game:GetService(“Players”)

local player = script.Parent – Ссылка на игрока

– Создаём событие для передачи информации о активации способностей
local OmniManAbilityEvent = Instance.new(“RemoteEvent”)
OmniManAbilityEvent.Name = “OMNIMAN_Ability”
OmniManAbilityEvent.Parent = ReplicatedStorage

– Переменные для управления способностями
local ability1Cooldown = 10
local ability1Duration = 30
local ability1Active = false
local ability2Active = false
local ability4Cooldown = 5
local ability4Active = false
local ability4HealingRate = 200

local ability1CooldownTimer = ability1Cooldown
local ability4CooldownTimer = ability4Cooldown

– Максимальное значение маны
local maxMana = 1490
local currentMana = maxMana

– Проверка хватает ли маны для использования способности
local function hasEnoughMana(requiredMana)
return currentMana >= requiredMana
end

– Уменьшение текущей маны
local function decreaseMana(amount)
currentMana = currentMana - amount
if currentMana < 0 then
currentMana = 0
end
end

– Восстановление маны
local function regenerateMana()
while wait(1) do
if currentMana < maxMana then
currentMana = currentMana + 10 – Изменить значения для скорости восстановления маны
if currentMana > maxMana then
currentMana = maxMana
end
end
end
end

– Передача сигнала о состояниях способностей
local function sendAbilityStatus()
OmniManAbilityEvent:FireAllClients(ability1Active, ability2Active, ability4Active)
end

– Способность 1: Сверхчеловеческая сила
local function useAbility1()
if not hasEnoughMana(100) or ability1Active then
return
end

ability1Active = true
decreaseMana(100)
sendAbilityStatus()

wait(ability1Duration)
ability1Active = false
ability1CooldownTimer = ability1Cooldown
sendAbilityStatus()
end

– Способность 2: Выносливость и устойчивость
local function toggleAbility2()
if not hasEnoughMana(1) then
return
end

ability2Active = not ability2Active
sendAbilityStatus()

decreaseMana(1)
end

– Способность 3: Неуязвимость
local function useAbility3()
if not hasEnoughMana(200) then
return
end

decreaseMana(200)

– Реализовать действия способности
end

– Способность 4: Усиленный лечебный фактор
local function useAbility4()
if not hasEnoughMana(75) or ability4Active then
return
end

ability4Active = true
decreaseMana(75)
sendAbilityStatus()

local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild(“Humanoid”)

local function regenerateHealth()
while ability4Active do
humanoid.Health = humanoid.Health + ability4HealingRate
wait(1)
end
end

coroutine.wrap(regenerateHealth)()

wait(ability4Cooldown)
ability4Active = false
ability4CooldownTimer = ability4Cooldown
sendAbilityStatus()
end

– Способность 5: Высокоскоростной полет
local function useAbility5()
if not hasEnoughMana(10) then
return
end

decreaseMana(10)

– Реализовать действия способности
end

– Установка биндов для активации способностей
player:GetMouse().KeyDown:Connect(function(key)
if key == “q” then
useAbility1()
elseif key == “e” then
toggleAbility2()
elseif key == “f” then
useAbility3()
elseif key == “c” then
useAbility4()
elseif key == “z” then
useAbility5()
end
end)

– Запуск восстановления маны
coroutine.wrap(regenerateMana)() Сделай так чтобы скрипт Когда способность активируется передавай эвент в replicatedstorage, Этот эвент называется OMNIMAN_Ability (его не надо создавать, он уже есть). Это если что ЛОКАЛЬНЫЙ скрипт, он должен передавать максимум информации серверу