🎮Как заменить курсор в Roblox Studio через скрипт
Если хочешь сделать свою игру в Roblox более уникальной и стильной, можно заменить стандартный курсор на любой свой. Это просто и делается с помощью локального скрипта!
Шаги для замены курсора:
Открой Roblox Studio и в своём проекте найди папку StarterGui.
Добавь в StarterGui новый LocalScript (локальный скрипт).
В скрипте получи объекты игрока и мыши:
Задай свойству mouse.Icon ID изображения твоего нового курсора:
Где ID_ИЗОБРАЖЕНИЯ - это числовой идентификатор картинки, которую ты загрузил в Roblox (лучше использовать PNG с прозрачным фоном).
Запусти игру и увидишь, как курсор изменился!
Как получить ID изображения для курсора:
Открой вкладку VIEW найди там Asset Manager и через это окно загрузи свою картинку с компьютера.
После загрузки открой страницу с наклейкой и скопируй ID из URL. Это число после ?id= или в адресе вида rbxassetid://123456789.
Используй этот ID в скрипте вместо ID_ИЗОБРАЖЕНИЯ.
Советы:
Картинка для курсора должна иметь прозрачный фон, чтобы выглядела аккуратно.
Размер изображения лучше делать небольшим (например, 32x32 пикселя).
Если курсор не меняется, проверь правильность ID и что скрипт действительно запускается.
Сделай свою игру в Roblox уникальной и запоминающейся с помощью кастомного курсора! Если возникнут вопросы - пиши в комментариях. ⬇️
#Roblox #Lua #GameDev
Если хочешь сделать свою игру в Roblox более уникальной и стильной, можно заменить стандартный курсор на любой свой. Это просто и делается с помощью локального скрипта!
Шаги для замены курсора:
Открой Roblox Studio и в своём проекте найди папку StarterGui.
Добавь в StarterGui новый LocalScript (локальный скрипт).
В скрипте получи объекты игрока и мыши:
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
Задай свойству mouse.Icon ID изображения твоего нового курсора:
mouse.Icon = "rbxassetid://ID_ИЗОБРАЖЕНИЯ"
Где ID_ИЗОБРАЖЕНИЯ - это числовой идентификатор картинки, которую ты загрузил в Roblox (лучше использовать PNG с прозрачным фоном).
Запусти игру и увидишь, как курсор изменился!
Как получить ID изображения для курсора:
Открой вкладку VIEW найди там Asset Manager и через это окно загрузи свою картинку с компьютера.
После загрузки открой страницу с наклейкой и скопируй ID из URL. Это число после ?id= или в адресе вида rbxassetid://123456789.
Используй этот ID в скрипте вместо ID_ИЗОБРАЖЕНИЯ.
Советы:
Картинка для курсора должна иметь прозрачный фон, чтобы выглядела аккуратно.
Размер изображения лучше делать небольшим (например, 32x32 пикселя).
Если курсор не меняется, проверь правильность ID и что скрипт действительно запускается.
Сделай свою игру в Roblox уникальной и запоминающейся с помощью кастомного курсора! Если возникнут вопросы - пиши в комментариях. ⬇️
#Roblox #Lua #GameDev
👍4❤2🎉2🔥1🥰1
🤖Что такое DragDetector в Roblox Studio и как его использовать?
DragDetector - это мощный встроенный компонент Roblox, который позволяет делать 3D-объекты в игре перетаскиваемыми с помощью мыши, тачскрина, геймпада или VR без написания кода!
Основные возможности DragDetector:
🌟Позволяет перетаскивать объекты (части или модели) в игровом пространстве.
🌟Работает со всеми типами ввода: мышь, сенсорный экран, геймпад и VR.
🌟Можно настроить стиль перетаскивания: перемещение по плоскости, по линии, вращение и другие варианты.
🌟Позволяет ограничить область перемещения, чтобы объект не выходил за заданные границы.
🌟Настраиваемая чувствительность и сила отклика для плавного управления.
🌟Можно задать, кто именно может перетаскивать объект (например, только владелец или все игроки).
🌟Работает без необходимости писать скрипты - достаточно добавить компонент и настроить параметры.
Как добавить DragDetector:
В Roblox Studio выберите объект (BasePart или Model), который хотите сделать перетаскиваемым.
В его иерархии добавьте объект DragDetector.
Настройте параметры DragDetector в свойствах:
DragStyle - стиль перетаскивания (например, TranslatePlane - движение по плоскости).
Responsiveness - насколько быстро объект реагирует на перемещение.
MaxActivationDistance - максимальное расстояние, с которого можно начать перетаскивание.
Другие параметры для ограничения движения и управления поведением.
Пример использования
Хотите сделать выдвижной ящик или вращающийся рычаг? DragDetector отлично подойдёт! Просто добавьте его к нужной части и настройте стиль движения. Игроки смогут перетаскивать объект в пределах заданных ограничений - всё это без единой строки кода.
Полезные ссылки для изучения:
Официальная документация Roblox по DragDetector:
https://create.roblox.com/docs/ui/3D-drag-detectors
DragDetector - отличный инструмент для интерактивности в ваших играх Roblox. Попробуйте добавить его и создайте уникальные механики перетаскивания!
Если нужны примеры или помощь с настройкой - пишите в комментариях! ⬇️
#Roblox #GameDev
DragDetector - это мощный встроенный компонент Roblox, который позволяет делать 3D-объекты в игре перетаскиваемыми с помощью мыши, тачскрина, геймпада или VR без написания кода!
Основные возможности DragDetector:
🌟Позволяет перетаскивать объекты (части или модели) в игровом пространстве.
🌟Работает со всеми типами ввода: мышь, сенсорный экран, геймпад и VR.
🌟Можно настроить стиль перетаскивания: перемещение по плоскости, по линии, вращение и другие варианты.
🌟Позволяет ограничить область перемещения, чтобы объект не выходил за заданные границы.
🌟Настраиваемая чувствительность и сила отклика для плавного управления.
🌟Можно задать, кто именно может перетаскивать объект (например, только владелец или все игроки).
🌟Работает без необходимости писать скрипты - достаточно добавить компонент и настроить параметры.
Как добавить DragDetector:
В Roblox Studio выберите объект (BasePart или Model), который хотите сделать перетаскиваемым.
В его иерархии добавьте объект DragDetector.
Настройте параметры DragDetector в свойствах:
DragStyle - стиль перетаскивания (например, TranslatePlane - движение по плоскости).
Responsiveness - насколько быстро объект реагирует на перемещение.
MaxActivationDistance - максимальное расстояние, с которого можно начать перетаскивание.
Другие параметры для ограничения движения и управления поведением.
Пример использования
Хотите сделать выдвижной ящик или вращающийся рычаг? DragDetector отлично подойдёт! Просто добавьте его к нужной части и настройте стиль движения. Игроки смогут перетаскивать объект в пределах заданных ограничений - всё это без единой строки кода.
Полезные ссылки для изучения:
Официальная документация Roblox по DragDetector:
https://create.roblox.com/docs/ui/3D-drag-detectors
DragDetector - отличный инструмент для интерактивности в ваших играх Roblox. Попробуйте добавить его и создайте уникальные механики перетаскивания!
Если нужны примеры или помощь с настройкой - пишите в комментариях! ⬇️
#Roblox #GameDev
🔥3🤔3👍2👀2
🎬 Как сделать анимацию персонажа в Roblox Studio?
Хотите, чтобы ваш персонаж в Roblox не просто стоял, а оживал, махал рукой или танцевал? Всё реально! В Roblox Studio есть удобный Animation Editor, который позволяет создавать собственные анимации для NPC и игровых героев.
Что нужно сделать:
✨Откройте Roblox Studio и добавьте персонажа (например, через AVATAR → Build Rig).
✨Откройте вкладку AVATAR → Animation Editor и выберите своего персонажа.
✨Придумайте и создайте анимацию: двигайте части тела на временной шкале, добавляйте ключевые кадры.
✨Сохраните анимацию и получите её ID.
✨Примените анимацию к персонажу с помощью Lua-скрипта.
Вот пример простого скрипта для NPC (script вложите в модель NPC):
💡 Полезные видео по теме:
Как сделать анимацию для NPC в Roblox Studio (YouTube)
Как сделать анимацию для NPC в Roblox Studio (Rutube)
Попробуйте создать свою первую анимацию - это не так сложно, как кажется! Делитесь своими результатами и вопросами в комментариях 👇
#Roblox #GameDev #Обучение
Хотите, чтобы ваш персонаж в Roblox не просто стоял, а оживал, махал рукой или танцевал? Всё реально! В Roblox Studio есть удобный Animation Editor, который позволяет создавать собственные анимации для NPC и игровых героев.
Что нужно сделать:
✨Откройте Roblox Studio и добавьте персонажа (например, через AVATAR → Build Rig).
✨Откройте вкладку AVATAR → Animation Editor и выберите своего персонажа.
✨Придумайте и создайте анимацию: двигайте части тела на временной шкале, добавляйте ключевые кадры.
✨Сохраните анимацию и получите её ID.
✨Примените анимацию к персонажу с помощью Lua-скрипта.
Вот пример простого скрипта для NPC (script вложите в модель NPC):
animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://ВАШ_ID_АНИМАЦИИ"
local humanoid = script.Parent:FindFirstChildOfClass("Humanoid")
local animTrack = humanoid:LoadAnimation(animation)
animTrack:Play()
💡 Полезные видео по теме:
Как сделать анимацию для NPC в Roblox Studio (YouTube)
Как сделать анимацию для NPC в Roblox Studio (Rutube)
Попробуйте создать свою первую анимацию - это не так сложно, как кажется! Делитесь своими результатами и вопросами в комментариях 👇
#Roblox #GameDev #Обучение
👍4🔥3👌1👨💻1
🎮 Разбор игрового момента: смена иконки у NPC-квестодателя в Roblox
В нашей игре игрок берёт квест у NPC. После этого над головой NPC иконка со знаком вопроса меняется на другую - чтобы было видно, что квест уже взят. Вот как это реализовано на Lua в Roblox Studio!
🔹 Скрипт для StarterPlayerScripts (клиентский localScript)
lua
🔹 Скрипт для ServerScriptService (серверный)
lua
📝 Что происходит в игре?
✨Игрок подходит к NPC и видит значок вопроса над головой персонажа.
✨Нажимает на ProximityPrompt (например, кнопку "Взять квест").
✨Сервер отправляет сигнал только этому игроку, что квест взят.
✨У игрока меняется картинка над головой NPC - теперь видно, что квест уже взят именно этим игроком!
💡 Почему это важно?
Такой подход позволяет каждому игроку видеть свой статус квеста, не мешая другим. Это удобно для индивидуальных заданий и делает игру более интерактивной!
Посмотреть как это было реализовано в игре можно в видео на моих каналах:
Ссылка на видео: YouTube
Ссылка на видео: RUTUBE
Если хотите больше разборов игровых механик или есть вопросы по скриптам - пишите в комментариях! 👇
Терри и Тим всегда на связи 🐢🎧
#Roblox #Lua #GameDev
В нашей игре игрок берёт квест у NPC. После этого над головой NPC иконка со знаком вопроса меняется на другую - чтобы было видно, что квест уже взят. Вот как это реализовано на Lua в Roblox Studio!
🔹 Скрипт для StarterPlayerScripts (клиентский localScript)
lua
local npcHead = workspace.Sylvia:WaitForChild("Head") -- Находим голову NPC по имени "Head" в модели Sylvia
local billboardGui = npcHead:FindFirstChild("BillboardGui") -- Ищем BillboardGui над головой NPC
local imageLabel = billboardGui and billboardGui:FindFirstChild("ImageLabel") -- Находим ImageLabel с иконкой (если BillboardGui существует)
local remote = npcHead:FindFirstChild("QuestStatusEvent") -- Ищем RemoteEvent для получения сигнала от сервера
local QUEST_TAKEN_IMAGE = "rbxassetid://000000" -- ID картинки, которая появится после взятия квеста
if remote and imageLabel then
remote.OnClientEvent:Connect(function(questTaken) -- Подписываемся на событие от сервера
if questTaken then
imageLabel.Image = QUEST_TAKEN_IMAGE -- Меняем иконку на новую, если квест взят
end
end)
end
🔹 Скрипт для ServerScriptService (серверный)
lua
local npcHead = workspace.Sylvia:WaitForChild("Head") -- Находим голову NPC по имени "Head" в модели Sylvia
local proximityPrompt = npcHead:FindFirstChild("ProximityPrompt") -- Ищем ProximityPrompt (кнопка взаимодействия)
local remote = Instance.new("RemoteEvent", npcHead) -- Создаём RemoteEvent для связи с клиентом
remote.Name = "QuestStatusEvent" -- Даём событию имя
proximityPrompt.Triggered:Connect(function(player) -- Когда игрок активирует ProximityPrompt
remote:FireClient(player, true) -- Отправляем игроку сигнал: квест взят (true)
end)
📝 Что происходит в игре?
✨Игрок подходит к NPC и видит значок вопроса над головой персонажа.
✨Нажимает на ProximityPrompt (например, кнопку "Взять квест").
✨Сервер отправляет сигнал только этому игроку, что квест взят.
✨У игрока меняется картинка над головой NPC - теперь видно, что квест уже взят именно этим игроком!
💡 Почему это важно?
Такой подход позволяет каждому игроку видеть свой статус квеста, не мешая другим. Это удобно для индивидуальных заданий и делает игру более интерактивной!
Посмотреть как это было реализовано в игре можно в видео на моих каналах:
Ссылка на видео: YouTube
Ссылка на видео: RUTUBE
Если хотите больше разборов игровых механик или есть вопросы по скриптам - пишите в комментариях! 👇
Терри и Тим всегда на связи 🐢🎧
#Roblox #Lua #GameDev
👍3🔥2🤔1👌1
🚪 Геймпасс-дверь в Roblox: открываем VIP-локацию!
Привет! Сегодня разберём, как сделать дверь, которая открывается только для тех, кто купил специальный геймпасс. Такой способ часто используют для VIP-комнат, секретных баз или эксклюзивных зон.
🔑 Как это работает?
Геймпасс — это платный пропуск, который можно купить за Robux. Его ID ты найдёшь в адресе страницы геймпасса на сайте Roblox.
Скрипт проверяет, есть ли у игрока нужный геймпасс. Если да — дверь становится прозрачной и не мешает пройти. Если нет — можно вывести подсказку или предложить купить геймпасс.
🛠 Пример кода (LocalScript в StarterPlayerScripts):
💡 Советы от Терри:
✨ID геймпасса — это число из адреса страницы твоего геймпасса.
✨Скрипт лучше размещать в LocalScript, чтобы дверь открывалась только для конкретного игрока.
✨Можно использовать ProximityPrompt для красивого взаимодействия: при попытке открыть дверь появляется кнопка “Купить VIP-доступ”.
✨Не забудь протестировать: если у игрока нет геймпасса, скрипт предложит купить его через стандартное окно Roblox.
Если хочешь подробный видеоурок или есть вопросы по настройке — пиши в комментариях, Терри и Тим всегда помогут! 🐢
Полезные ссылки:
Официальная документация Roblox по Game Pass
#Roblox #Lua #GameDev
Привет! Сегодня разберём, как сделать дверь, которая открывается только для тех, кто купил специальный геймпасс. Такой способ часто используют для VIP-комнат, секретных баз или эксклюзивных зон.
🔑 Как это работает?
Геймпасс — это платный пропуск, который можно купить за Robux. Его ID ты найдёшь в адресе страницы геймпасса на сайте Roblox.
Скрипт проверяет, есть ли у игрока нужный геймпасс. Если да — дверь становится прозрачной и не мешает пройти. Если нет — можно вывести подсказку или предложить купить геймпасс.
🛠 Пример кода (LocalScript в StarterPlayerScripts):
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local gamePassID = 123456789 -- замени на свой GamePass ID
local door = workspace:WaitForChild("GamepassDoor") -- имя двери в Workspace
local player = Players.LocalPlayer
-- Функция проверки наличия геймпасса
local function hasGamepass()
local success, hasPass = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamePassID)
end)
return success and hasPass
end
-- Функция открытия двери
local function tryOpenDoor()
if hasGamepass() then
door.Transparency = 0.7 -- делаем дверь полупрозрачной
door.CanCollide = false -- игрок может пройти сквозь дверь
else
door.Transparency = 0 -- дверь остаётся обычной
door.CanCollide = true
-- Можно добавить подсказку или кнопку покупки:
MarketplaceService:PromptGamePassPurchase(player, gamePassID)
end
end
-- Проверяем при приближении к двери (например, через .Touched)
door.Touched:Connect(function(hit)
if hit.Parent == player.Character then
tryOpenDoor()
end
end)
💡 Советы от Терри:
✨ID геймпасса — это число из адреса страницы твоего геймпасса.
✨Скрипт лучше размещать в LocalScript, чтобы дверь открывалась только для конкретного игрока.
✨Можно использовать ProximityPrompt для красивого взаимодействия: при попытке открыть дверь появляется кнопка “Купить VIP-доступ”.
✨Не забудь протестировать: если у игрока нет геймпасса, скрипт предложит купить его через стандартное окно Roblox.
Теперь твоя VIP-дверь готова!
Если хочешь подробный видеоурок или есть вопросы по настройке — пиши в комментариях, Терри и Тим всегда помогут! 🐢
Полезные ссылки:
Официальная документация Roblox по Game Pass
#Roblox #Lua #GameDev
❤5🔥3👌3👍2
📚 Материалы для обучения Blender, Unity, Roblox, Scratch и Web-разработке
Друзья! Для вашего удобства я собрала в одном месте полезные материалы, которые помогут учиться быстрее и эффективнее, в процессе планирую пополнять:
— Шпаргалки по основным программам и языкам
— Ссылки на мои плейлисты с видеоуроками
— Официальные сайты для установки программ и самостоятельного изучения
________________________________________
🔹 Blender
📝 Шпаргалка по горячим клавишам для новичков: скачать
▶️ Мои плейлисты по Blender:
YouTube:
Blender первые шаги
Создание форм простых моделей в Blender
RUTUBE:
Изучаем Blender 3D
🌐 Официальный сайт: blender.org
▶️ Официальный на YouTube: ссылка
________________________________________
🔹 Unity
📝 Шпаргалка по горячим клавишам для новичков: скачать
🌐 Официальный сайт: unity.com
Сайт с ресурсами (модели, текстуры...): assetstore.unity.com
Ещё сайт с ресурсами: kenney.nl
________________________________________
🔹 Roblox
▶️ Мои плейлисты по Roblox:
YouTube:
Создаём игры в Roblox Studio
Графический интерфейс пользователя GUI в Roblox Studio
Программирование в Roblox Studio
RUTUBE:
Создаём игры в Roblox Studio
Графический интерфейс пользователя GUI в Roblox Studio
Моделирование в Roblox Studio
Изучаем программирование в Roblox Studio
🌐 Официальный сайт: roblox.com/develop
________________________________________
🔹 Scratch
🌐 Официальный сайт: scratch.mit.edu
________________________________________
🔹 Web-разработка
🌐 Официальный сайт:
— developer.mozilla.org
—web-skills
________________________________________
🔹 Компьютерная грамотность
▶️ Мои плейлисты по MS Office:
YouTube:
MS Excel
MS Word
MS Access
Полезные программы
RUTUBE:
Microsoft Excel
Microsoft Word
________________________________________
Сохраняйте пост, делитесь с друзьями и пишите в комментариях, какие материалы нужны ещё!
#Blender3D #Unity #Roblox #Scratch #Web #КомпьютернаяГрамотность #Обучение #Шпаргалки
Друзья! Для вашего удобства я собрала в одном месте полезные материалы, которые помогут учиться быстрее и эффективнее, в процессе планирую пополнять:
— Шпаргалки по основным программам и языкам
— Ссылки на мои плейлисты с видеоуроками
— Официальные сайты для установки программ и самостоятельного изучения
________________________________________
🔹 Blender
📝 Шпаргалка по горячим клавишам для новичков: скачать
▶️ Мои плейлисты по Blender:
YouTube:
Blender первые шаги
Создание форм простых моделей в Blender
RUTUBE:
Изучаем Blender 3D
🌐 Официальный сайт: blender.org
▶️ Официальный на YouTube: ссылка
________________________________________
🔹 Unity
📝 Шпаргалка по горячим клавишам для новичков: скачать
🌐 Официальный сайт: unity.com
Сайт с ресурсами (модели, текстуры...): assetstore.unity.com
Ещё сайт с ресурсами: kenney.nl
________________________________________
🔹 Roblox
▶️ Мои плейлисты по Roblox:
YouTube:
Создаём игры в Roblox Studio
Графический интерфейс пользователя GUI в Roblox Studio
Программирование в Roblox Studio
RUTUBE:
Создаём игры в Roblox Studio
Графический интерфейс пользователя GUI в Roblox Studio
Моделирование в Roblox Studio
Изучаем программирование в Roblox Studio
🌐 Официальный сайт: roblox.com/develop
________________________________________
🔹 Scratch
🌐 Официальный сайт: scratch.mit.edu
________________________________________
🔹 Web-разработка
🌐 Официальный сайт:
— developer.mozilla.org
—web-skills
________________________________________
🔹 Компьютерная грамотность
▶️ Мои плейлисты по MS Office:
YouTube:
MS Excel
MS Word
MS Access
Полезные программы
RUTUBE:
Microsoft Excel
Microsoft Word
________________________________________
Сохраняйте пост, делитесь с друзьями и пишите в комментариях, какие материалы нужны ещё!
#Blender3D #Unity #Roblox #Scratch #Web #КомпьютернаяГрамотность #Обучение #Шпаргалки
🔥4👌3❤2👍2🤯2🤓2
🎮 Лидерстатс в Roblox: без сохранения и с сохранением (DataStore) + важная настройка API!
В Roblox лидерстатс — это папка с показателями игрока (например, деньги, очки), которые видны на табло в игре. Разберём два варианта: простой (без сохранения) и с сохранением данных между сессиями.
🟢 Вариант 1: Лидерстатс без сохранения
Все значения сбрасываются при каждом новом заходе игрока.
Скрипт размещается в ServerScriptService.
Значения не сохраняются после выхода.
🟡 Вариант 2: Лидерстатс с сохранением (DataStore)
Для сохранения данных между сессиями используем DataStore:
Скрипт размещается в ServerScriptService.
Значения сохраняются между сессиями.
⚠️ ВАЖНО: включите доступ к API для работы с базой данных!
Чтобы DataStore работал в Roblox Studio, нужно включить доступ к API:
✨Откройте Game Settings (Настройки игры).
✨Перейдите во вкладку Security (Безопасность).
✨Включите опцию Enable Studio Access to API Services (как на скриншоте — переключатель должен быть зелёным).
✨Нажмите Save.
💡 Советы:
✨Для тестирования сохранения используйте Roblox Studio в режиме Play (Start Server + Player).
✨Не храните слишком много данных в DataStore — есть лимиты на количество запросов.
✨Для сложных игр используйте таблицу (dictionary) для хранения нескольких значений.
Пробуйте оба варианта, чтобы понять, какой лучше подходит для вашей игры!
Если остались вопросы — пишите в комментариях, помогу разобраться.👇
#Roblox #GameDev
В Roblox лидерстатс — это папка с показателями игрока (например, деньги, очки), которые видны на табло в игре. Разберём два варианта: простой (без сохранения) и с сохранением данных между сессиями.
🟢 Вариант 1: Лидерстатс без сохранения
Все значения сбрасываются при каждом новом заходе игрока.
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = 50 -- стартовое значение
money.Parent = leaderstats
end)
Скрипт размещается в ServerScriptService.
Значения не сохраняются после выхода.
🟡 Вариант 2: Лидерстатс с сохранением (DataStore)
Для сохранения данных между сессиями используем DataStore:
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("PlayerData")
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Parent = leaderstats
local playerUserId = "Player_" .. player.UserId
local data
local success, err = pcall(function()
data = playerData:GetAsync(playerUserId)
end)
if success and data then
money.Value = data
else
money.Value = 0
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local playerUserId = "Player_" .. player.UserId
local success, err = pcall(function()
playerData:SetAsync(playerUserId, player.leaderstats.Money.Value)
end)
if not success then
warn("Не удалось сохранить данные: " .. err)
end
end)
Скрипт размещается в ServerScriptService.
Значения сохраняются между сессиями.
⚠️ ВАЖНО: включите доступ к API для работы с базой данных!
Чтобы DataStore работал в Roblox Studio, нужно включить доступ к API:
✨Откройте Game Settings (Настройки игры).
✨Перейдите во вкладку Security (Безопасность).
✨Включите опцию Enable Studio Access to API Services (как на скриншоте — переключатель должен быть зелёным).
✨Нажмите Save.
💡 Советы:
✨Для тестирования сохранения используйте Roblox Studio в режиме Play (Start Server + Player).
✨Не храните слишком много данных в DataStore — есть лимиты на количество запросов.
✨Для сложных игр используйте таблицу (dictionary) для хранения нескольких значений.
Пробуйте оба варианта, чтобы понять, какой лучше подходит для вашей игры!
Если остались вопросы — пишите в комментариях, помогу разобраться.👇
#Roblox #GameDev
🔥8👍6👨💻4👌3❤2
🐍 Как научить персонажа проползать под блоками в Roblox?
Привет, всем! 👋
Сегодня разберём, как добавить классную механику — анимацию ползания , чтобы игрок мог проползать под препятствиями ! Это отлично подойдёт для паркур-игр, скрытных способностей или просто интересной игровой механики. 💡
▶️ YouTube: Ссылка на видео
📺 Rutube: Ссылка на видео
🔧 Что делает этот код?
Этот скрипт:
✨Запускает анимацию при нажатии клавиши (например, F),
✨Отключает коллизию у персонажа, чтобы он мог "проскользнуть" под объектом,
✨После окончания анимации всё возвращается в исходное состояние.
💻 Код с пояснениями:
📌 Как использовать?
✨Вставь этот код в LocalScript внутри StarterPlayerScripts.
✨Убедись, что ты используешь LocalScript, потому что здесь используется LocalPlayer.
✨Можешь изменить key на любую другую кнопку.
✨Нажми F в игре и наслаждайся эффектом!
💬 Давайте вместе создавать крутые проекты!
Если у тебя уже есть идеи, как использовать эту механику — пиши в комментариях!
Хочешь, чтобы я разобрала ещё какие-то анимации или механики? Пиши — будем делать новые игры!👇
#Roblox #GameDev #Lua
Привет, всем! 👋
Сегодня разберём, как добавить классную механику — анимацию ползания , чтобы игрок мог проползать под препятствиями ! Это отлично подойдёт для паркур-игр, скрытных способностей или просто интересной игровой механики. 💡
▶️ YouTube: Ссылка на видео
📺 Rutube: Ссылка на видео
🔧 Что делает этот код?
Этот скрипт:
✨Запускает анимацию при нажатии клавиши (например, F),
✨Отключает коллизию у персонажа, чтобы он мог "проскользнуть" под объектом,
✨После окончания анимации всё возвращается в исходное состояние.
💻 Код с пояснениями:
-- Получаем персонажа игрока
local char = game.Players.LocalPlayer.Character
-- Получаем компонент Humanoid для работы с анимациями
local human = game.Players.LocalPlayer.Character.Humanoid
-- Сервис ввода — отслеживает нажатия клавиш
local uis = game:GetService("UserInputService")
-- ID анимации (ее можно заменить на свою)
local animation_ID = "rbxassetid://133965842091574"
-- Защита от повторного запуска анимации
local debounce = true
-- Клавиша активации анимации
local key = "F"
-- Подписываемся на событие начала ввода
uis.InputBegan:Connect(function(Input, IsTyping)
-- Если пользователь печатает в чате — выходим из функции
if IsTyping then return end
-- Проверяем, была ли нажата нужная клавиша и можно ли запустить анимацию
if Input.KeyCode == Enum.KeyCode[key] and debounce == true then
-- Блокируем повторный запуск
debounce = false
-- Отключаем взаимодействие с физикой, чтобы персонаж мог проползти под блоком
char.HumanoidRootPart.CanCollide = false
-- Создаём временный объект анимации
local animation = Instance.new("Animation")
animation.AnimationId = animation_ID -- Привязываем нашу анимацию
-- Загружаем и запускаем анимацию
local loadanimation = human:LoadAnimation(animation)
loadanimation:Play()
-- Ждём 2 секунды — это примерное время длительности анимации
wait(2)
-- Включаем обратно взаимодействие с миром
char.HumanoidRootPart.CanCollide = true
-- Удаляем временную анимацию, чтобы не засорять память
animation:Destroy()
-- Разрешаем снова запускать анимацию
debounce = true
end
end)
📌 Как использовать?
✨Вставь этот код в LocalScript внутри StarterPlayerScripts.
✨Убедись, что ты используешь LocalScript, потому что здесь используется LocalPlayer.
✨Можешь изменить key на любую другую кнопку.
✨Нажми F в игре и наслаждайся эффектом!
💬 Давайте вместе создавать крутые проекты!
Если у тебя уже есть идеи, как использовать эту механику — пиши в комментариях!
Хочешь, чтобы я разобрала ещё какие-то анимации или механики? Пиши — будем делать новые игры!👇
#Roblox #GameDev #Lua
👍8🔥5👨💻4❤3👌3
⌨️ Горячие клавиши в Roblox Studio: как ускорить работу и не устать
Представь, что ты печёшь блинчики.
Вместо того чтобы каждый раз мыть сковородку, ты находишь лайфхак: один щелчок — и готовый блинчик уже в тарелке.
Так вот, в Roblox Studio тоже есть такие "щелчки" — горячие клавиши , которые делают рутину в 10 раз быстрее и вообще добавляют кайфа от процесса 🎮✨Давай познакомимся с ними
🔹 Ctrl + C / Ctrl + V — как копировать идеи у одноклассника (но легально!)
Представь, что тебе нужно сделать 5 одинаковых деревьев.
Можно каждое строить заново... или скопировать одно и быстро расставить остальные.
Ctrl + C — копирует объект.
Ctrl + V — вставляет его.
Просто выбери объект в Explorer → нажми сочетание → и получи копию.
Как сделать копию вкусного бургера, а не собирать его снова с нуля 🍔
🔹 F — фокус на объекте. Как увеличить фото на телефоне одним касанием
Представь, что ты потерял игрушку в большой коробке.
Вместо того чтобы вываливать всё на пол, ты просто берёшь её и увеличиваешь, чтобы рассмотреть получше.
F — камера мгновенно фокусируется на выбранном объекте.
Выбери объект в Explorer → Нажми F → И смотришь прямо на него.
Как приблизить важную деталь — быстро и удобно 👀
🔹 Ctrl + G — группировка объектов. Как сложить игрушки в коробку
Представь, что ты собираешь игрушки после игры.
Вместо того чтобы переносить их по одной, ты складываешь всё в одну коробку и несёшь сразу.
Ctrl + G — объединяет несколько объектов в одну model.
Можно двигать, поворачивать, скрывать целиком.
Как положить всё в сумку — аккуратно и удобно 🎒
🔹 Ctrl + Z — отмена. Как стереть ошибку ластиком
Представь, что ты нарисовал что-то не то.
Вместо того чтобы начинать всё сначала, берёшь ластик и стираешь ошибку.
Ctrl + Z — отменяет последнее действие.
Нажал лишнее? Просто отмени — и продолжай работать дальше.
Как стереть каракуль — легко и без следа ✨
🔹 Ctrl + D — дублировать. Как сделать двойник-копию любимого платья
Представь, что у тебя есть классная футболка.
И ты хочешь такую же, но другого цвета.
Проще сделать копию и поменять немного, чем создавать заново.
Ctrl + D — создаёт копию объекта рядом с оригиналом.
Полезно, если хочешь сделать похожий объект, но с другими параметрами.
Делай копию — экономь время и силы 👕
💡 А теперь самое важное:
Эти горячие клавиши — не про "крутость", а про удобство и скорость .
Они помогают меньше уставать, делать больше и вообще получать удовольствие от создания игр.
📌 Что делать дальше?
Если ты только начинаешь — не надо запоминать всё сразу.
Выбери 2–3 сочетания, которые тебе пригодятся сегодня, и начни использовать их.
Через неделю они станут привычкой, как завязывать шнурки.
Хочешь, чтобы я показала это в видео или сделала подробный разбор с этими (и другими) клавишами?
Пиши в комментариях — сделаем! 💬
#Roblox #GameDev
Представь, что ты печёшь блинчики.
Вместо того чтобы каждый раз мыть сковородку, ты находишь лайфхак: один щелчок — и готовый блинчик уже в тарелке.
Так вот, в Roblox Studio тоже есть такие "щелчки" — горячие клавиши , которые делают рутину в 10 раз быстрее и вообще добавляют кайфа от процесса 🎮✨Давай познакомимся с ними
🔹 Ctrl + C / Ctrl + V — как копировать идеи у одноклассника (но легально!)
Представь, что тебе нужно сделать 5 одинаковых деревьев.
Можно каждое строить заново... или скопировать одно и быстро расставить остальные.
Ctrl + C — копирует объект.
Ctrl + V — вставляет его.
Просто выбери объект в Explorer → нажми сочетание → и получи копию.
Как сделать копию вкусного бургера, а не собирать его снова с нуля 🍔
🔹 F — фокус на объекте. Как увеличить фото на телефоне одним касанием
Представь, что ты потерял игрушку в большой коробке.
Вместо того чтобы вываливать всё на пол, ты просто берёшь её и увеличиваешь, чтобы рассмотреть получше.
F — камера мгновенно фокусируется на выбранном объекте.
Выбери объект в Explorer → Нажми F → И смотришь прямо на него.
Как приблизить важную деталь — быстро и удобно 👀
🔹 Ctrl + G — группировка объектов. Как сложить игрушки в коробку
Представь, что ты собираешь игрушки после игры.
Вместо того чтобы переносить их по одной, ты складываешь всё в одну коробку и несёшь сразу.
Ctrl + G — объединяет несколько объектов в одну model.
Можно двигать, поворачивать, скрывать целиком.
Как положить всё в сумку — аккуратно и удобно 🎒
🔹 Ctrl + Z — отмена. Как стереть ошибку ластиком
Представь, что ты нарисовал что-то не то.
Вместо того чтобы начинать всё сначала, берёшь ластик и стираешь ошибку.
Ctrl + Z — отменяет последнее действие.
Нажал лишнее? Просто отмени — и продолжай работать дальше.
Как стереть каракуль — легко и без следа ✨
🔹 Ctrl + D — дублировать. Как сделать двойник-копию любимого платья
Представь, что у тебя есть классная футболка.
И ты хочешь такую же, но другого цвета.
Проще сделать копию и поменять немного, чем создавать заново.
Ctrl + D — создаёт копию объекта рядом с оригиналом.
Полезно, если хочешь сделать похожий объект, но с другими параметрами.
Делай копию — экономь время и силы 👕
💡 А теперь самое важное:
Эти горячие клавиши — не про "крутость", а про удобство и скорость .
Они помогают меньше уставать, делать больше и вообще получать удовольствие от создания игр.
📌 Что делать дальше?
Если ты только начинаешь — не надо запоминать всё сразу.
Выбери 2–3 сочетания, которые тебе пригодятся сегодня, и начни использовать их.
Через неделю они станут привычкой, как завязывать шнурки.
Хочешь, чтобы я показала это в видео или сделала подробный разбор с этими (и другими) клавишами?
Пиши в комментариях — сделаем! 💬
#Roblox #GameDev
🔥17👍15👨💻8❤6💯5👌4
🧱 ТОП-5 ошибок новичков в Roblox Studio и как их не повторять
Представь, что ты собираешь шкаф из магазина.
Сначала думаешь: «Ну что тут сложного?», берёшь отвёртку и начинаешь крутить болты.
А потом обнаруживаешь, что половина деталей не туда прикручена 😅
Так бывает и с Roblox Studio — особенно если ты только начинаешь.
Сегодня расскажу тебе про самые частые ошибки , которые делают новички, и как их легко избежать.
❌ Ошибка №1: Забыть проверить, где находится персонаж
Представь, что ты запускаешь игру, а герой не появляется.
Или появляется, но в подземелье. Или вообще внутри стены.
Что случилось?
Персонаж не может появиться, потому что:
SpawnLocation потерялся,
Он стоит внутри другой модели,
Его кто-то случайно спрятал или удалил.
Как исправить:
Убедись, что в папке Workspace есть объект SpawnLocation.
Проверь, чтобы он не был внутри других объектов.
Можно добавить новый через вкладку Model →Gameplay → SpawnLocation.
Как проверить, положил ли ты игрушку на пол, а не под кровать 🧸
❌ Ошибка №2: Скрипты работают не так, как ожидалось
Пишешь код, всё красиво, логично...
А скрипт молчит, как партизан.
Что случилось?
Скорее всего:
Скрипт находится не там, где должен (например, в Workspace, а не в StarterGui),
Нет нужных объектов в дереве,
Забыл указать LocalScript, если нужно взаимодействовать с игроком.
Как исправить:
Убедись, что скрипт находится в правильном месте.
Проверяй, есть ли нужные объекты в дереве (Player, Humanoid, Part и т.д.).
Если работаешь с интерфейсом — используй LocalScript.
Как выбрать правильное место для хранения ключей — не в кармане, а в рюкзаке 🔑
❌ Ошибка №3: Объекты "проваливаются" сквозь пол или зависают в воздухе
Ставишь платформу, прыгаешь — и проваливаешься.
Или наоборот: стоишь, а под ногами ничего нет.
Что случилось?
CanCollide выключен у объекта.
Объект слишком маленький или невидимый.
Физика ещё не успела "подгрузиться".
Как исправить:
Убедись, что у всех платформ и стен CanCollide = true.
Проверь, правильно ли расставлены размеры объектов.
Добавь небольшую задержку, если объект создаётся программно.
Как проверить, положил ли ты кирпич на кирпич, а не на воздух 🏗
❌ Ошибка №4: Перепутаны LocalScript и Script
Думаешь, почему кнопка не работает.
Смотришь код — всё правильно.
А дело в том, что скрипт просто не может "увидеть" кнопку.
Что случилось?
Script работает на сервере, а GUI находится у игрока.
Если хочешь, чтобы скрипт реагировал на клики по кнопке — нужен LocalScript.
Как исправить:
GUI, камера, мышь — всегда требуют LocalScript.
Всё, что связано с физикой, движением, NPC — можно делать через Script.
Как звонок в домофоне: если он не подключён к твоему телефону — ты его не услышишь 📞
❌ Ошибка №5: Не сохраняешь проект
Работал два часа.
Добавил кучу объектов, написал классный скрипт…
А потом студия закрылась. И всё пропало.
Что случилось?
Не сохранил проект.
Roblox Studio не сохраняет автоматически.
Как исправить:
Сохраняйся часто: File → Save As или Ctrl + Shift + S.
Сохраняй под разными именами — чтобы всегда была "запасная копия".
Как сохранить прогресс в любимой игре перед сложным уровнем 💾
💡 А теперь самое важное:
Эти ошибки — нормально.
Все их делают.
Даже профессионалы иногда забывают, где они оставили SpawnLocation 😄
Главное — не пугайся, когда что-то не работает.
Просто проверь эти пункты — и ты быстро найдёшь проблему.
📌 Что делать дальше?
Если ты только начинаешь — попробуй создать простой проект и проверить эти моменты.
Можно сделать мини-игру: платформер с одной кнопкой и одним прыжком.
Хочешь, чтобы я показала это в видео или сделала чек-лист с этими ошибками?
Пиши в комментариях — сделаем! 💬
#Roblox #GameDev
Представь, что ты собираешь шкаф из магазина.
Сначала думаешь: «Ну что тут сложного?», берёшь отвёртку и начинаешь крутить болты.
А потом обнаруживаешь, что половина деталей не туда прикручена 😅
Так бывает и с Roblox Studio — особенно если ты только начинаешь.
Сегодня расскажу тебе про самые частые ошибки , которые делают новички, и как их легко избежать.
❌ Ошибка №1: Забыть проверить, где находится персонаж
Представь, что ты запускаешь игру, а герой не появляется.
Или появляется, но в подземелье. Или вообще внутри стены.
Что случилось?
Персонаж не может появиться, потому что:
SpawnLocation потерялся,
Он стоит внутри другой модели,
Его кто-то случайно спрятал или удалил.
Как исправить:
Убедись, что в папке Workspace есть объект SpawnLocation.
Проверь, чтобы он не был внутри других объектов.
Можно добавить новый через вкладку Model →Gameplay → SpawnLocation.
Как проверить, положил ли ты игрушку на пол, а не под кровать 🧸
❌ Ошибка №2: Скрипты работают не так, как ожидалось
Пишешь код, всё красиво, логично...
А скрипт молчит, как партизан.
Что случилось?
Скорее всего:
Скрипт находится не там, где должен (например, в Workspace, а не в StarterGui),
Нет нужных объектов в дереве,
Забыл указать LocalScript, если нужно взаимодействовать с игроком.
Как исправить:
Убедись, что скрипт находится в правильном месте.
Проверяй, есть ли нужные объекты в дереве (Player, Humanoid, Part и т.д.).
Если работаешь с интерфейсом — используй LocalScript.
Как выбрать правильное место для хранения ключей — не в кармане, а в рюкзаке 🔑
❌ Ошибка №3: Объекты "проваливаются" сквозь пол или зависают в воздухе
Ставишь платформу, прыгаешь — и проваливаешься.
Или наоборот: стоишь, а под ногами ничего нет.
Что случилось?
CanCollide выключен у объекта.
Объект слишком маленький или невидимый.
Физика ещё не успела "подгрузиться".
Как исправить:
Убедись, что у всех платформ и стен CanCollide = true.
Проверь, правильно ли расставлены размеры объектов.
Добавь небольшую задержку, если объект создаётся программно.
Как проверить, положил ли ты кирпич на кирпич, а не на воздух 🏗
❌ Ошибка №4: Перепутаны LocalScript и Script
Думаешь, почему кнопка не работает.
Смотришь код — всё правильно.
А дело в том, что скрипт просто не может "увидеть" кнопку.
Что случилось?
Script работает на сервере, а GUI находится у игрока.
Если хочешь, чтобы скрипт реагировал на клики по кнопке — нужен LocalScript.
Как исправить:
GUI, камера, мышь — всегда требуют LocalScript.
Всё, что связано с физикой, движением, NPC — можно делать через Script.
Как звонок в домофоне: если он не подключён к твоему телефону — ты его не услышишь 📞
❌ Ошибка №5: Не сохраняешь проект
Работал два часа.
Добавил кучу объектов, написал классный скрипт…
А потом студия закрылась. И всё пропало.
Что случилось?
Не сохранил проект.
Roblox Studio не сохраняет автоматически.
Как исправить:
Сохраняйся часто: File → Save As или Ctrl + Shift + S.
Сохраняй под разными именами — чтобы всегда была "запасная копия".
Как сохранить прогресс в любимой игре перед сложным уровнем 💾
💡 А теперь самое важное:
Эти ошибки — нормально.
Все их делают.
Даже профессионалы иногда забывают, где они оставили SpawnLocation 😄
Главное — не пугайся, когда что-то не работает.
Просто проверь эти пункты — и ты быстро найдёшь проблему.
📌 Что делать дальше?
Если ты только начинаешь — попробуй создать простой проект и проверить эти моменты.
Можно сделать мини-игру: платформер с одной кнопкой и одним прыжком.
Хочешь, чтобы я показала это в видео или сделала чек-лист с этими ошибками?
Пиши в комментариях — сделаем! 💬
#Roblox #GameDev
👍22🔥16👌14❤8💯4👨💻3
🐾 Как связать клиентскую и серверную части в Roblox с помощью RemoteEvent?
Привет, друзья! 👋 Сегодня расскажу, как организовать простое и эффективное взаимодействие между клиентом (LocalScript) и сервером (Script) в Roblox с помощью RemoteEvent — одного из самых удобных инструментов для обмена сообщениями без ожидания ответа.
Что такое RemoteEvent?
RemoteEvent — это специальный объект, который позволяет клиенту отправлять сигналы на сервер и наоборот, без ожидания результата (в отличие от RemoteFunction, где связь двусторонняя и нужна синхронизация). Мы можем передавать любые аргументы: числа, строки, таблицы, объекты или ссылки на игрока.
Как это работает на практике?
1. Где создавать RemoteEvent?
Создаём объект RemoteEvent в ReplicatedStorage (это специальное хранилище, доступное и клиенту, и серверу).
2. Клиент — отправляем событие серверу
В LocalScript пишем код, который будет срабатывать при событии (например, нажатии кнопки), и отправлять сигнал на сервер:
3. Сервер — слушаем событие и реагируем
В обычном Script (например, внутри ServerScriptService) подписываемся на событие и обрабатываем данные от клиента:
Обратите внимание: первым аргументом в обработчике всегда идёт игрок, который вызвал событие!
Важные моменты:
✨RemoteEvent — односторонний: клиент уведомляет сервер или сервер уведомляет клиента.
✨Для обратной связи клиенту от сервера используй: RemoteEvent:FireClient(player, ...) или RemoteEvent:FireAllClients(...).
✨Клиент всегда должен использовать FireServer, сервер — FireClient или FireAllClients.
✨Можно передавать несколько аргументов сразу, например: FireServer(arg1, arg2, ...).
Пример простого применения
Как только игрок нажал кнопку "Старт", отправляем сигнал серверу, чтобы начать игру:
🎯 Итог: RemoteEvent — для простой и быстрой связи клиента с сервером в Roblox! Это надёжный способ отправлять сигналы, события и данные без лишних сложностей.
💬 Оставляй вопросы в комментариях, если надо помочь с кодом или сделать разбор конкретной механики!
#Roblox #GameDev #Lua
Привет, друзья! 👋 Сегодня расскажу, как организовать простое и эффективное взаимодействие между клиентом (LocalScript) и сервером (Script) в Roblox с помощью RemoteEvent — одного из самых удобных инструментов для обмена сообщениями без ожидания ответа.
Что такое RemoteEvent?
RemoteEvent — это специальный объект, который позволяет клиенту отправлять сигналы на сервер и наоборот, без ожидания результата (в отличие от RemoteFunction, где связь двусторонняя и нужна синхронизация). Мы можем передавать любые аргументы: числа, строки, таблицы, объекты или ссылки на игрока.
Как это работает на практике?
1. Где создавать RemoteEvent?
Создаём объект RemoteEvent в ReplicatedStorage (это специальное хранилище, доступное и клиенту, и серверу).
-- В Roblox Studio в окне "Explorer" создаём RemoteEvent:
-- ReplicatedStorage -> New Object -> RemoteEvent, назовём, например, "MyRemoteEvent"
2. Клиент — отправляем событие серверу
В LocalScript пишем код, который будет срабатывать при событии (например, нажатии кнопки), и отправлять сигнал на сервер:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MyRemoteEvent = ReplicatedStorage:WaitForChild("MyRemoteEvent")
-- Пример: отправляем событие на сервер с аргументом — именем игрока
MyRemoteEvent:FireServer("Привет с клиента!")
3. Сервер — слушаем событие и реагируем
В обычном Script (например, внутри ServerScriptService) подписываемся на событие и обрабатываем данные от клиента:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MyRemoteEvent = ReplicatedStorage:WaitForChild("MyRemoteEvent")
MyRemoteEvent.OnServerEvent:Connect(function(player, message)
print("Получено сообщение от игрока "..player.Name..": "..message)
-- Здесь можно добавить логику, например, выдать награду или запустить анимацию
end)
Обратите внимание: первым аргументом в обработчике всегда идёт игрок, который вызвал событие!
Важные моменты:
✨RemoteEvent — односторонний: клиент уведомляет сервер или сервер уведомляет клиента.
✨Для обратной связи клиенту от сервера используй: RemoteEvent:FireClient(player, ...) или RemoteEvent:FireAllClients(...).
✨Клиент всегда должен использовать FireServer, сервер — FireClient или FireAllClients.
✨Можно передавать несколько аргументов сразу, например: FireServer(arg1, arg2, ...).
Пример простого применения
Как только игрок нажал кнопку "Старт", отправляем сигнал серверу, чтобы начать игру:
-- LocalScript при нажатии кнопки
MyRemoteEvent:FireServer("Старт игры")
-- Script на сервере
MyRemoteEvent.OnServerEvent:Connect(function(player, command)
if command == "Старт игры" then
print(player.Name .. " начал игру!")
-- Запускаем игровую логику для этого игрока
end
end)
🎯 Итог: RemoteEvent — для простой и быстрой связи клиента с сервером в Roblox! Это надёжный способ отправлять сигналы, события и данные без лишних сложностей.
💬 Оставляй вопросы в комментариях, если надо помочь с кодом или сделать разбор конкретной механики!
#Roblox #GameDev #Lua
❤22🔥20👍18🤯10