Вот 15 примеров того, на что можно написать код в Roblox Studio:
1. Персонажи с уникальными способностями: Создание различных классов персонажей, каждый из которых имеет свои особые умения и способности.
2. Система навыков и уровней: Разработка системы, где игроки могут повышать свои уровни и развивать навыки, такие как скорость, сила или ловкость.
3. Интерактивные объекты: Программирование предметов, которые реагируют на действия игроков, например, скамейки, на которые можно сесть, или двери, которые открываются по сигналу.
4. Игра на выживание: Разработка механики для игры на выживание, где игроки должны собирать ресурсы и строить укрытия.
5. Система квестов: Создание квестов и миссий, которые игроки могут выполнять, чтобы получать вознаграждения.
6. Магазин и экономика: Программирование торговой системы, где игроки могут покупать, продавать и обменивать предметы.
7. Гонки: Реализация гоночной механики с автомобилями или другими транспортными средствами, включая контроль скорости и управления.
8. Ограниченное время на выполнение задач: Создание игр с таймером, где игроки должны выполнить определенные задачи до истечения времени.
9. Искусственный интеллект (Ии) для NPC: Программирование NPC, которые могут взаимодействовать с игроками, следовать им или выполнять другие действия.
10. Парк аттракционов: Создание аттракционов и игровых зон, где игроки могут участвовать в различных активностях.
11. Система достижений: Разработка системы достижений, где игроки могут зарабатывать трофеи за выполнение определенных условий.
12. Милые животные (питомцы): Реализация системы, в которой игроки могут иметь виртуальных питомцев, которых они могут ухаживать, кормить и тренировать.
13. Открытый мир: Создание большого открытого мира, где игроки могут исследовать, находить сокровища и выполнять задания.
14. Анимации и эффекты: Программирование специальных анимаций и эффектов для различных действий, например, прыжков, атак или взаимодействий.
15. Система погоды и времени суток: Создание динамической системы, где погодные условия и время суток могут влиять на игровой процесс.
Эти идеи помогут вам начать разработку интересных и увлекательных игр в Roblox Studio!
1. Персонажи с уникальными способностями: Создание различных классов персонажей, каждый из которых имеет свои особые умения и способности.
2. Система навыков и уровней: Разработка системы, где игроки могут повышать свои уровни и развивать навыки, такие как скорость, сила или ловкость.
3. Интерактивные объекты: Программирование предметов, которые реагируют на действия игроков, например, скамейки, на которые можно сесть, или двери, которые открываются по сигналу.
4. Игра на выживание: Разработка механики для игры на выживание, где игроки должны собирать ресурсы и строить укрытия.
5. Система квестов: Создание квестов и миссий, которые игроки могут выполнять, чтобы получать вознаграждения.
6. Магазин и экономика: Программирование торговой системы, где игроки могут покупать, продавать и обменивать предметы.
7. Гонки: Реализация гоночной механики с автомобилями или другими транспортными средствами, включая контроль скорости и управления.
8. Ограниченное время на выполнение задач: Создание игр с таймером, где игроки должны выполнить определенные задачи до истечения времени.
9. Искусственный интеллект (Ии) для NPC: Программирование NPC, которые могут взаимодействовать с игроками, следовать им или выполнять другие действия.
10. Парк аттракционов: Создание аттракционов и игровых зон, где игроки могут участвовать в различных активностях.
11. Система достижений: Разработка системы достижений, где игроки могут зарабатывать трофеи за выполнение определенных условий.
12. Милые животные (питомцы): Реализация системы, в которой игроки могут иметь виртуальных питомцев, которых они могут ухаживать, кормить и тренировать.
13. Открытый мир: Создание большого открытого мира, где игроки могут исследовать, находить сокровища и выполнять задания.
14. Анимации и эффекты: Программирование специальных анимаций и эффектов для различных действий, например, прыжков, атак или взаимодействий.
15. Система погоды и времени суток: Создание динамической системы, где погодные условия и время суток могут влиять на игровой процесс.
Эти идеи помогут вам начать разработку интересных и увлекательных игр в Roblox Studio!
Вот код, который делает так, что если нажать на кнопку, будет спавниться объект. ( Предполагается, что у вас уже есть модель объекта, например дом. )
Для того чтобы создать функционал, который будет спавнить объект в Roblox Studio при нажатии на кнопку, вам нужно использовать LocalScript и Server Script. Вот пример кода, который позволяет это сделать.
1. Создайте кнопку:
- Вставьте ScreenGui в StarterGui.
- Вставьте TextButton в ScreenGui (вы можете настроить его цвет, размер и текст).
2. Создайте объект, который вы хотите спавнить:
- Например, создайте модель или объект в ReplicatedStorage.
3. Напишите код:
- В TextButton добавьте LocalScript с следующим кодом:
local button = script.Parent -- Указывает на TextButton
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local function onButtonClicked()
-- Отправляем запрос на сервер для спавна объекта
game.ReplicatedStorage.SpawnObject:FireServer()
end
button.MouseButton1Click:Connect(onButtonClicked)
4. Создайте RemoteEvent:
- В ReplicatedStorage создайте RemoteEvent и назовите его SpawnObject.
5. Добавьте серверный скрипт:
- В ServerScriptService создайте Script с следующим кодом:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnObjectEvent = ReplicatedStorage:WaitForChild("SpawnObject")
local function onSpawnObject(player)
-- Здесь создаем объект, который вы хотите спавнить
local newObject = Instance.new("Part") -- Вы можете заменить это на вашу модель
newObject.Size = Vector3.new(1, 1, 1)
newObject.Position = Vector3.new(0, 50, 0) -- Позиция, где будет спавниться объект
newObject.Anchored = true
newObject.Parent = workspace
end
SpawnObjectEvent.OnServerEvent:Connect(onSpawnObject)
Теперь, когда игрок нажимает на кнопку в интерфейсе, он получит событие на стороне сервера, и объект будет создан в игре. Вы можете заменить Instance.new("Part") на вашу модель, которая находится в ReplicatedStorage.
Не забудьте протестировать вашу игру, чтобы убедиться, что всё работает корректно.
1. Создайте кнопку:
- Вставьте ScreenGui в StarterGui.
- Вставьте TextButton в ScreenGui (вы можете настроить его цвет, размер и текст).
2. Создайте объект, который вы хотите спавнить:
- Например, создайте модель или объект в ReplicatedStorage.
3. Напишите код:
- В TextButton добавьте LocalScript с следующим кодом:
local button = script.Parent -- Указывает на TextButton
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local function onButtonClicked()
-- Отправляем запрос на сервер для спавна объекта
game.ReplicatedStorage.SpawnObject:FireServer()
end
button.MouseButton1Click:Connect(onButtonClicked)
4. Создайте RemoteEvent:
- В ReplicatedStorage создайте RemoteEvent и назовите его SpawnObject.
5. Добавьте серверный скрипт:
- В ServerScriptService создайте Script с следующим кодом:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnObjectEvent = ReplicatedStorage:WaitForChild("SpawnObject")
local function onSpawnObject(player)
-- Здесь создаем объект, который вы хотите спавнить
local newObject = Instance.new("Part") -- Вы можете заменить это на вашу модель
newObject.Size = Vector3.new(1, 1, 1)
newObject.Position = Vector3.new(0, 50, 0) -- Позиция, где будет спавниться объект
newObject.Anchored = true
newObject.Parent = workspace
end
SpawnObjectEvent.OnServerEvent:Connect(onSpawnObject)
Теперь, когда игрок нажимает на кнопку в интерфейсе, он получит событие на стороне сервера, и объект будет создан в игре. Вы можете заменить Instance.new("Part") на вашу модель, которая находится в ReplicatedStorage.
Не забудьте протестировать вашу игру, чтобы убедиться, что всё работает корректно.
Коды для роблокс студио
Розыгрыш 100 телеграмм звёзд в честь первых 10 подписчиков!
Уже завтра объявление о победителе розыгрыша!
14 2 1 1
Вот готовый код для управления камерой и прозрачностью персонажа. Создайте LocalScript в StarterPlayerScripts:
1. 1 - Первое лицо (от первого лица)
2. 2 - Вид спереди
3. 3 - Третье лицо (обычный вид)
4. Колесо мыши - Приближение/отдаление (в режиме 3-го лица)
5. T - Переключение прозрачности
Особенности:
- Плавное управление камерой в режиме третьего лица
- Полная прозрачность всех частей тела и аксессуаров
- Автоматическое отслеживание персонажа
- Защита от выхода за пределы зума
Для кастомизации можно менять значения:
- ZOOM_SPEED - скорость изменения масштаба
- CAMERA_OFFSET - позиция камеры относительно персонажа
- MIN_ZOOM/MAX_ZOOM - ограничения зума
local Players = game:GetService("Players")Управление:
local UserInput = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local camera = workspace.CurrentCamera
-- Настройки
local ZOOM_SPEED = 4 -- Скорость зума
local MIN_ZOOM = 2 -- Минимальное расстояние
local MAX_ZOOM = 20 -- Максимальное расстояние
local CAMERA_OFFSET = Vector3.new(0, 3, 0) -- Смещение камеры для 3-го лица
local currentCameraMode = "ThirdPerson" -- FirstPerson/ThirdPerson/FrontView
local currentZoom = 10
local isTransparent = false
-- Переключение режимов камеры
local function SetCameraMode(mode)
currentCameraMode = mode
camera.CameraType = Enum.CameraType.Scriptable
if mode == "FirstPerson" then
camera.CFrame = character.Head.CFrame
elseif mode == "FrontView" then
camera.CFrame = character.Head.CFrame * CFrame.new(0, 0, 5) * CFrame.Angles(0, math.pi, 0)
end
end
-- Управление прозрачностью
local function ToggleTransparency()
isTransparent = not isTransparent
local transparency = isTransparent and 0.8 or 0
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.LocalTransparencyModifier = transparency
end
end
end
-- Обработка ввода
UserInput.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.T then
ToggleTransparency()
elseif input.KeyCode == Enum.KeyCode.One then
SetCameraMode("FirstPerson")
elseif input.KeyCode == Enum.KeyCode.Two then
SetCameraMode("FrontView")
elseif input.KeyCode == Enum.KeyCode.Three then
SetCameraMode("ThirdPerson")
end
end)
UserInput.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseWheel then
currentZoom = math.clamp(currentZoom - input.Position.Z * ZOOM_SPEED, MIN_ZOOM, MAX_ZOOM)
end
end)
-- Обновление камеры
RunService.RenderStepped:Connect(function()
if currentCameraMode == "ThirdPerson" then
local rootPart = character:FindFirstChild("HumanoidRootPart")
if rootPart then
local cameraPosition = rootPart.Position + CAMERA_OFFSET + rootPart.CFrame.LookVector * -currentZoom
camera.CFrame = CFrame.lookAt(cameraPosition, rootPart.Position + Vector3.new(0, 2, 0))
end
end
end)
-- Первоначальная настройка
SetCameraMode("ThirdPerson")
1. 1 - Первое лицо (от первого лица)
2. 2 - Вид спереди
3. 3 - Третье лицо (обычный вид)
4. Колесо мыши - Приближение/отдаление (в режиме 3-го лица)
5. T - Переключение прозрачности
Особенности:
- Плавное управление камерой в режиме третьего лица
- Полная прозрачность всех частей тела и аксессуаров
- Автоматическое отслеживание персонажа
- Защита от выхода за пределы зума
Для кастомизации можно менять значения:
- ZOOM_SPEED - скорость изменения масштаба
- CAMERA_OFFSET - позиция камеры относительно персонажа
- MIN_ZOOM/MAX_ZOOM - ограничения зума
3 4 2 2 1
Ребята, простите что давно коды не выкладывал)
Скоро будет всё как раньше
Скоро будет всё как раньше
Кстати, на что хотите код?
Пишите в комментарии (только коды, не создание целых игр)
Пишите в комментарии (только коды, не создание целых игр)
Вот полный код для игры по типу зомби апокалипсиса спустя НЕВЕРОЯТНО долгое время (такого больше не будет). Вам понадобятся два скрипта: один для сервера (зомби и здоровье игрока), другой для клиента (управление и интерфейс). Создайте модель зомби и назовите «zombie», затем соедините его руки, ноги, голову и туловище.
1. Серверный скрипт (вставьте в Script внутри ServerScriptService)
`lua
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- Настройки
local ZOMBIE_SPEED = 4
local DAMAGE_RANGE = 3
local DAMAGE_AMOUNT = 10
local DETECTION_RANGE = 20
local RESPAWN_POSITION = Vector3.new(0, 5, 0) -- Позиция спавна
local HEALTH_REGEN_RATE = 0.5 -- Регенерация здоровья в секунду
-- Инициализация зомби
local zombie = workspace:FindFirstChild("zombie")
if not zombie then error("Zombie model not found!") end
local zombieRoot = zombie:FindFirstChild("HumanoidRootPart")
local zombieHumanoid = zombie:FindFirstChildOfClass("Humanoid")
-- Система здоровья и состояния игроков
local playerStats = {}
local function respawnPlayer(player)
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 100
end
character:MoveTo(RESPAWN_POSITION)
end
playerStats[player].health = 100
end
Players.PlayerAdded:Connect(function(player)
playerStats[player] = {
health = 100,
sprinting = false,
stamina = 100
}
player.CharacterAdded:Connect(function(character)
playerStats[player].health = 100
playerStats[player].stamina = 100
local humanoid = character:WaitForChild("Humanoid")
humanoid.Health = 100
-- Отправляем начальные значения клиенту
playerStats[player].updateEvent:Fire(playerStats[player].health, playerStats[player].stamina)
end)
-- Создаем удаленное событие для обновления состояния
playerStats[player].updateEvent = Instance.new("RemoteEvent")
playerStats[player].updateEvent.Name = "PlayerStatsUpdate"
playerStats[player].updateEvent.Parent = player
end)
-- ИИ зомби
local function findNearestPlayer(zombiePos)
local closestPlayer = nil
local closestDistance = math.huge
for player, stats in pairs(playerStats) do
local character = player.Character
if character and stats.health > 0 then
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
local distance = (hrp.Position - zombiePos).Magnitude
if distance < closestDistance and distance < DETECTION_RANGE then
closestDistance = distance
closestPlayer = player
end
end
end
end
return closestPlayer
end
local lastAttack = 0
local wanderDirection = Vector3.new(math.random(), 0, math.random()).Unit
-- Обработка спринта от клиента
local sprintEvent = Instance.new("RemoteEvent")
sprintEvent.Name = "SprintEvent"
sprintEvent.Parent = game:GetService("ReplicatedStorage")
sprintEvent.OnServerEvent:Connect(function(player, sprinting)
if playerStats[player] then
playerStats[player].sprinting = sprinting
end
end)
RunService.Heartbeat:Connect(function(delta)
-- Обновление здоровья и стамины игроков
for player, stats in pairs(playerStats) do
if stats.health < 100 then
stats.health = math.min(stats.health + HEALTH_REGEN_RATE * delta, 100)
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = stats.health
end
end
-- Отправляем обновление клиенту
stats.updateEvent:Fire(stats.health, stats.stamina)
end
end
-- ИИ зомби
if not zombieRoot then return end
local target = findNearestPlayer(zombieRoot.Position)
if target then
`lua
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- Настройки
local ZOMBIE_SPEED = 4
local DAMAGE_RANGE = 3
local DAMAGE_AMOUNT = 10
local DETECTION_RANGE = 20
local RESPAWN_POSITION = Vector3.new(0, 5, 0) -- Позиция спавна
local HEALTH_REGEN_RATE = 0.5 -- Регенерация здоровья в секунду
-- Инициализация зомби
local zombie = workspace:FindFirstChild("zombie")
if not zombie then error("Zombie model not found!") end
local zombieRoot = zombie:FindFirstChild("HumanoidRootPart")
local zombieHumanoid = zombie:FindFirstChildOfClass("Humanoid")
-- Система здоровья и состояния игроков
local playerStats = {}
local function respawnPlayer(player)
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 100
end
character:MoveTo(RESPAWN_POSITION)
end
playerStats[player].health = 100
end
Players.PlayerAdded:Connect(function(player)
playerStats[player] = {
health = 100,
sprinting = false,
stamina = 100
}
player.CharacterAdded:Connect(function(character)
playerStats[player].health = 100
playerStats[player].stamina = 100
local humanoid = character:WaitForChild("Humanoid")
humanoid.Health = 100
-- Отправляем начальные значения клиенту
playerStats[player].updateEvent:Fire(playerStats[player].health, playerStats[player].stamina)
end)
-- Создаем удаленное событие для обновления состояния
playerStats[player].updateEvent = Instance.new("RemoteEvent")
playerStats[player].updateEvent.Name = "PlayerStatsUpdate"
playerStats[player].updateEvent.Parent = player
end)
-- ИИ зомби
local function findNearestPlayer(zombiePos)
local closestPlayer = nil
local closestDistance = math.huge
for player, stats in pairs(playerStats) do
local character = player.Character
if character and stats.health > 0 then
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
local distance = (hrp.Position - zombiePos).Magnitude
if distance < closestDistance and distance < DETECTION_RANGE then
closestDistance = distance
closestPlayer = player
end
end
end
end
return closestPlayer
end
local lastAttack = 0
local wanderDirection = Vector3.new(math.random(), 0, math.random()).Unit
-- Обработка спринта от клиента
local sprintEvent = Instance.new("RemoteEvent")
sprintEvent.Name = "SprintEvent"
sprintEvent.Parent = game:GetService("ReplicatedStorage")
sprintEvent.OnServerEvent:Connect(function(player, sprinting)
if playerStats[player] then
playerStats[player].sprinting = sprinting
end
end)
RunService.Heartbeat:Connect(function(delta)
-- Обновление здоровья и стамины игроков
for player, stats in pairs(playerStats) do
if stats.health < 100 then
stats.health = math.min(stats.health + HEALTH_REGEN_RATE * delta, 100)
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = stats.health
end
end
-- Отправляем обновление клиенту
stats.updateEvent:Fire(stats.health, stats.stamina)
end
end
-- ИИ зомби
if not zombieRoot then return end
local target = findNearestPlayer(zombieRoot.Position)
if target then
-- Преследование игрока
local targetPos = target.Character.HumanoidRootPart.Position
local direction = (targetPos - zombieRoot.Position).Unit
zombieRoot.CFrame = CFrame.lookAt(zombieRoot.Position, zombieRoot.Position + direction)
zombieRoot.Position += direction * ZOMBIE_SPEED * delta
-- Атака
if (tick() - lastAttack) > 1 then
if (targetPos - zombieRoot.Position).Magnitude < DAMAGE_RANGE then
playerStats[target].health = math.max(playerStats[target].health - DAMAGE_AMOUNT, 0)
local character = target.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = playerStats[target].health
end
end
-- Отправляем обновление клиенту
playerStats[target].updateEvent:Fire(playerStats[target].health, playerStats[target].stamina)
if playerStats[target].health <= 0 then
respawnPlayer(target)
end
lastAttack = tick()
end
end
else
-- Случайное блуждание
if (tick() - lastAttack) > 5 then
wanderDirection = Vector3.new(math.random(-1, 1), 0, math.random(-1, 1)).Unit
lastAttack = tick()
end
zombieRoot.Position += wanderDirection * ZOMBIE_SPEED * delta
end
end)
-- Инициализация позиции зомби
zombieRoot.Anchored = false
zombieRoot.CFrame = CFrame.new(RESPAWN_POSITION + Vector3.new(10, 0, 10))
local targetPos = target.Character.HumanoidRootPart.Position
local direction = (targetPos - zombieRoot.Position).Unit
zombieRoot.CFrame = CFrame.lookAt(zombieRoot.Position, zombieRoot.Position + direction)
zombieRoot.Position += direction * ZOMBIE_SPEED * delta
-- Атака
if (tick() - lastAttack) > 1 then
if (targetPos - zombieRoot.Position).Magnitude < DAMAGE_RANGE then
playerStats[target].health = math.max(playerStats[target].health - DAMAGE_AMOUNT, 0)
local character = target.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = playerStats[target].health
end
end
-- Отправляем обновление клиенту
playerStats[target].updateEvent:Fire(playerStats[target].health, playerStats[target].stamina)
if playerStats[target].health <= 0 then
respawnPlayer(target)
end
lastAttack = tick()
end
end
else
-- Случайное блуждание
if (tick() - lastAttack) > 5 then
wanderDirection = Vector3.new(math.random(-1, 1), 0, math.random(-1, 1)).Unit
lastAttack = tick()
end
zombieRoot.Position += wanderDirection * ZOMBIE_SPEED * delta
end
end)
-- Инициализация позиции зомби
zombieRoot.Anchored = false
zombieRoot.CFrame = CFrame.new(RESPAWN_POSITION + Vector3.new(10, 0, 10))
(Этот длинный скрипт телеграм разделил на 2 части, но это все один код.)
2. Клиентский скрипт (вставьте в LocalScript внутри StarterPlayerScripts)
`lua
local Players = game:GetService("Players")
local UserInput = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
-- Настройки
local NORMAL_SPEED = 16
local SPRINT_SPEED = 32
local STAMINA_DRAIN_RATE = 25 -- % в секунду при спринте
local STAMINA_REGEN_RATE = 20 -- % в секунду при восстановлении
local STAMINA_REGEN_DELAY = 2 -- Задержка перед восстановлением
local DOUBLE_TAP_TIME = 0.3 -- Макс время между нажатиями для двойного клика
-- Переменные состояния
local sprinting = false
local stamina = 100
local lastStaminaUse = 0
local lastWPressed = 0
local humanoid
-- Создаем интерфейс
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player.PlayerGui
-- Полоса здоровья
local healthFrame = Instance.new("Frame")
healthFrame.Size = UDim2.new(0.2, 0, 0.03, 0)
healthFrame.Position = UDim2.new(0.02, 0, 0.02, 0)
healthFrame.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
healthFrame.BorderSizePixel = 2
healthFrame.Parent = screenGui
local healthBar = Instance.new("Frame")
healthBar.Size = UDim2.new(1, 0, 1, 0)
healthBar.BackgroundColor3 = Color3.new(1, 0, 0)
healthBar.BorderSizePixel = 0
healthBar.Parent = healthFrame
-- Полоса стамины
local staminaFrame = Instance.new("Frame")
staminaFrame.Size = UDim2.new(0.2, 0, 0.03, 0)
staminaFrame.Position = UDim2.new(0.02, 0, 0.06, 0)
staminaFrame.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
staminaFrame.BorderSizePixel = 2
staminaFrame.Parent = screenGui
local staminaBar = Instance.new("Frame")
staminaBar.Size = UDim2.new(1, 0, 1, 0)
staminaBar.BackgroundColor3 = Color3.new(0, 0, 1)
staminaBar.BorderSizePixel = 0
staminaBar.Parent = staminaFrame
-- Кнопка спринта
local sprintButton = Instance.new("TextButton")
sprintButton.Size = UDim2.new(0.15, 0, 0.15, 0)
sprintButton.Position = UDim2.new(0.8, 0, 0.7, 0)
sprintButton.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
sprintButton.Text = "🏃♂️" -- Эмодзи бегущего человека
sprintButton.TextSize = 24
sprintButton.Parent = screenGui
-- Джойстик для мобильных устройств
local isMobile = UserInput.TouchEnabled
local touchGui, touchJoystick
if isMobile then
touchGui = Instance.new("ScreenGui")
touchGui.Parent = player.PlayerGui
touchJoystick = Instance.new("ImageButton")
touchJoystick.Size = UDim2.new(0.2, 0, 0.2, 0)
touchJoystick.Position = UDim2.new(0.05, 0, 0.7, 0)
touchJoystick.Image = "rbxassetid://3570695787"
touchJoystick.Parent = touchGui
end
-- Функция обновления интерфейса
local function updateUI(health, stam)
healthBar.Size = UDim2.new(health / 100, 0, 1, 0)
staminaBar.Size = UDim2.new(stam / 100, 0, 1, 0)
-- Изменение цвета здоровья при низких значениях
if health < 30 then
healthBar.BackgroundColor3 = Color3.new(1, 0.2, 0.2)
else
healthBar.BackgroundColor3 = Color3.new(1, 0, 0)
end
end
-- Обработка событий от сервера
local playerStatsUpdate = player:WaitForChild("PlayerStatsUpdate")
playerStatsUpdate.OnClientEvent:Connect(updateUI)
-- Функция спринта
local function setSprint(enabled)
sprinting = enabled
if humanoid then
humanoid.WalkSpeed = enabled and SPRINT_SPEED or NORMAL_SPEED
end
-- Отправляем состояние на сервер
local sprintEvent = game:GetService("ReplicatedStorage"):FindFirstChild("SprintEvent")
if sprintEvent then
sprintEvent:FireServer(enabled)
end
end
-- Обработка кнопки спринта
sprintButton.MouseButton1Click:Connect(function()
if stamina > 10 then
setSprint(not sprinting)
end
end)
-- Обработка двойного нажатия W
UserInput.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
local now = tick()
`lua
local Players = game:GetService("Players")
local UserInput = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
-- Настройки
local NORMAL_SPEED = 16
local SPRINT_SPEED = 32
local STAMINA_DRAIN_RATE = 25 -- % в секунду при спринте
local STAMINA_REGEN_RATE = 20 -- % в секунду при восстановлении
local STAMINA_REGEN_DELAY = 2 -- Задержка перед восстановлением
local DOUBLE_TAP_TIME = 0.3 -- Макс время между нажатиями для двойного клика
-- Переменные состояния
local sprinting = false
local stamina = 100
local lastStaminaUse = 0
local lastWPressed = 0
local humanoid
-- Создаем интерфейс
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player.PlayerGui
-- Полоса здоровья
local healthFrame = Instance.new("Frame")
healthFrame.Size = UDim2.new(0.2, 0, 0.03, 0)
healthFrame.Position = UDim2.new(0.02, 0, 0.02, 0)
healthFrame.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
healthFrame.BorderSizePixel = 2
healthFrame.Parent = screenGui
local healthBar = Instance.new("Frame")
healthBar.Size = UDim2.new(1, 0, 1, 0)
healthBar.BackgroundColor3 = Color3.new(1, 0, 0)
healthBar.BorderSizePixel = 0
healthBar.Parent = healthFrame
-- Полоса стамины
local staminaFrame = Instance.new("Frame")
staminaFrame.Size = UDim2.new(0.2, 0, 0.03, 0)
staminaFrame.Position = UDim2.new(0.02, 0, 0.06, 0)
staminaFrame.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
staminaFrame.BorderSizePixel = 2
staminaFrame.Parent = screenGui
local staminaBar = Instance.new("Frame")
staminaBar.Size = UDim2.new(1, 0, 1, 0)
staminaBar.BackgroundColor3 = Color3.new(0, 0, 1)
staminaBar.BorderSizePixel = 0
staminaBar.Parent = staminaFrame
-- Кнопка спринта
local sprintButton = Instance.new("TextButton")
sprintButton.Size = UDim2.new(0.15, 0, 0.15, 0)
sprintButton.Position = UDim2.new(0.8, 0, 0.7, 0)
sprintButton.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
sprintButton.Text = "🏃♂️" -- Эмодзи бегущего человека
sprintButton.TextSize = 24
sprintButton.Parent = screenGui
-- Джойстик для мобильных устройств
local isMobile = UserInput.TouchEnabled
local touchGui, touchJoystick
if isMobile then
touchGui = Instance.new("ScreenGui")
touchGui.Parent = player.PlayerGui
touchJoystick = Instance.new("ImageButton")
touchJoystick.Size = UDim2.new(0.2, 0, 0.2, 0)
touchJoystick.Position = UDim2.new(0.05, 0, 0.7, 0)
touchJoystick.Image = "rbxassetid://3570695787"
touchJoystick.Parent = touchGui
end
-- Функция обновления интерфейса
local function updateUI(health, stam)
healthBar.Size = UDim2.new(health / 100, 0, 1, 0)
staminaBar.Size = UDim2.new(stam / 100, 0, 1, 0)
-- Изменение цвета здоровья при низких значениях
if health < 30 then
healthBar.BackgroundColor3 = Color3.new(1, 0.2, 0.2)
else
healthBar.BackgroundColor3 = Color3.new(1, 0, 0)
end
end
-- Обработка событий от сервера
local playerStatsUpdate = player:WaitForChild("PlayerStatsUpdate")
playerStatsUpdate.OnClientEvent:Connect(updateUI)
-- Функция спринта
local function setSprint(enabled)
sprinting = enabled
if humanoid then
humanoid.WalkSpeed = enabled and SPRINT_SPEED or NORMAL_SPEED
end
-- Отправляем состояние на сервер
local sprintEvent = game:GetService("ReplicatedStorage"):FindFirstChild("SprintEvent")
if sprintEvent then
sprintEvent:FireServer(enabled)
end
end
-- Обработка кнопки спринта
sprintButton.MouseButton1Click:Connect(function()
if stamina > 10 then
setSprint(not sprinting)
end
end)
-- Обработка двойного нажатия W
UserInput.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
local now = tick()
if now - lastWPressed < DOUBLE_TAP_TIME then
if stamina > 10 then
setSprint(true)
end
end
lastWPressed = now
elseif input.KeyCode == Enum.KeyCode.Space then
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
UserInput.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
setSprint(false)
end
end)
-- Основной цикл
RunService.RenderStepped:Connect(function(delta)
-- Обновление стамины
if sprinting and stamina > 0 then
stamina = math.max(stamina - STAMINA_DRAIN_RATE * delta, 0)
lastStaminaUse = tick()
if stamina <= 0 then
setSprint(false)
end
updateUI(playerStatsUpdate:InvokeServer(), stamina)
elseif tick() - lastStaminaUse > STAMINA_REGEN_DELAY and stamina < 100 then
stamina = math.min(stamina + STAMINA_REGEN_RATE * delta, 100)
updateUI(playerStatsUpdate:InvokeServer(), stamina)
end
-- Обновление состояния кнопки спринта
sprintButton.BackgroundColor3 = sprinting and Color3.new(0, 0.5, 0) or Color3.new(0.3, 0.3, 0.3)
end)
-- Инициализация персонажа
local character = player.Character or player.CharacterAdded:Wait()
humanoid = character:WaitForChild("Humanoid")
humanoid.WalkSpeed = NORMAL_SPEED
-- Запрос начальных значений со сервера
playerStatsUpdate:FireServer()
if stamina > 10 then
setSprint(true)
end
end
lastWPressed = now
elseif input.KeyCode == Enum.KeyCode.Space then
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
UserInput.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
setSprint(false)
end
end)
-- Основной цикл
RunService.RenderStepped:Connect(function(delta)
-- Обновление стамины
if sprinting and stamina > 0 then
stamina = math.max(stamina - STAMINA_DRAIN_RATE * delta, 0)
lastStaminaUse = tick()
if stamina <= 0 then
setSprint(false)
end
updateUI(playerStatsUpdate:InvokeServer(), stamina)
elseif tick() - lastStaminaUse > STAMINA_REGEN_DELAY and stamina < 100 then
stamina = math.min(stamina + STAMINA_REGEN_RATE * delta, 100)
updateUI(playerStatsUpdate:InvokeServer(), stamina)
end
-- Обновление состояния кнопки спринта
sprintButton.BackgroundColor3 = sprinting and Color3.new(0, 0.5, 0) or Color3.new(0.3, 0.3, 0.3)
end)
-- Инициализация персонажа
local character = player.Character or player.CharacterAdded:Wait()
humanoid = character:WaitForChild("Humanoid")
humanoid.WalkSpeed = NORMAL_SPEED
-- Запрос начальных значений со сервера
playerStatsUpdate:FireServer()
(Этот скрипт телеграмм тоже разделил на 2 части, это тоже 1 код)
Инструкция по установке:
1. Серверный скрипт:
- Создайте Script в ServerScriptService
- Вставьте первый код
2. Клиентский скрипт:
- Создайте LocalScript в StarterPlayerScripts
- Вставьте второй код
3. Настройте зомби:
- Убедитесь, что ваша модель зомби называется "zombie"
- У зомби должна быть часть "HumanoidRootPart"
- Добавьте Humanoid к зомби (через Explorer)
4. Настройте спавн:
- Измените RESPAWN_POSITION на координаты вашей точки спавна
Особенности реализации:
1. Система здоровья:
- 100 HP у игрока
- Регенерация 0.5 HP/сек
- При смерти респавн на точке спавна
2. Система стамины:
- Синяя полоса в левом верхнем углу
- Спринт активируется:
- Двойным нажатием W
- Кнопкой в правом нижнем углу
- Во время спринта:
- Скорость увеличивается в 2 раза
- Стамина уменьшается на 25%/сек
- Восстановление стамины:
- Начинается через 2 секунды после остановки
- Восстанавливается на 20%/сек
3. ИИ зомби:
- Случайное блуждание без игроков
- Преследование ближайшего игрока в радиусе 20 studs
- Атака (10 урона/сек) при приближении ближе 3 studs
4. Мобильная поддержка:
- Джойстик в левом нижнем углу
- Кнопка спринта справа
Для корректной работы убедитесь, что у игроков есть HumanoidRootPart в их персонажах.
1. Серверный скрипт:
- Создайте Script в ServerScriptService
- Вставьте первый код
2. Клиентский скрипт:
- Создайте LocalScript в StarterPlayerScripts
- Вставьте второй код
3. Настройте зомби:
- Убедитесь, что ваша модель зомби называется "zombie"
- У зомби должна быть часть "HumanoidRootPart"
- Добавьте Humanoid к зомби (через Explorer)
4. Настройте спавн:
- Измените RESPAWN_POSITION на координаты вашей точки спавна
Особенности реализации:
1. Система здоровья:
- 100 HP у игрока
- Регенерация 0.5 HP/сек
- При смерти респавн на точке спавна
2. Система стамины:
- Синяя полоса в левом верхнем углу
- Спринт активируется:
- Двойным нажатием W
- Кнопкой в правом нижнем углу
- Во время спринта:
- Скорость увеличивается в 2 раза
- Стамина уменьшается на 25%/сек
- Восстановление стамины:
- Начинается через 2 секунды после остановки
- Восстанавливается на 20%/сек
3. ИИ зомби:
- Случайное блуждание без игроков
- Преследование ближайшего игрока в радиусе 20 studs
- Атака (10 урона/сек) при приближении ближе 3 studs
4. Мобильная поддержка:
- Джойстик в левом нижнем углу
- Кнопка спринта справа
Для корректной работы убедитесь, что у игроков есть HumanoidRootPart в их персонажах.