Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ребят, всем привет, помогите пожалуйста создать скрипт для роблокс студио!

片尺巳工乚 从升乂 Ученик (102), на голосовании 1 неделю назад
Ребят, мне нужна помощь в создании скрипта в роблокс студио. Мне нужно чтоб игрок подходил к предмету, допустим part, появлялась кнопка : зажми E. После того как зажимаешь Е, парт ударяется. Мне нужно сделать чтоб игрок удалял несколько part-ов и ему выдавался бейдж, помогите пожалуйста.
Голосование за лучший ответ
Максим Никифоров Профи (750) 1 месяц назад
Чтобы создать такой скрипт в Roblox Studio, выполните следующие шаги:Откройте Roblox Studio и создайте новый проект.Добавьте модель Part в сцену.Создайте новый скрипт в Roblox Studio и назовите его «PartBreaker».В скрипте добавьте функцию OnMouseDown, которая будет вызываться при нажатии кнопки мыши. Внутри функции создайте переменные для хранения количества ударов и текущего бейджа.Добавьте цикл for, который будет выполняться определённое количество раз (количество ударов). Внутри цикла создайте функцию, которая будет наносить удар по Part модели.Создайте функцию для выдачи бейджа, которая будет вызываться после завершения цикла.Добавьте оператор if, который проверяет, равен ли текущий бейдж нулю. Если равен, выдаётся бейдж и устанавливается его значение.Сохраните скрипт и вернитесь в игру.Зажмите кнопку мыши на Part модели, чтобы активировать скрипт. Игрок должен удалить несколько Part моделей и получить бейдж.
❄️ Гуру (2952) 1 месяц назад
Окей, сейчас сделаю.

Для начала, создай в твоём part - ProximityPrompt, вкратце это такая штука, которая даёт блоку кнопку E когда подходишь к нему.

Скрипт помести прямиком в ServerScriptService. Он считывает количество удалённых блоков.
 local badgeService = game:GetService("BadgeService") 
local badgeId = nil -- замените на ваш ID бейджа (точнее его AssetID)
local partsDeleted = 0
local partsToDelete = 4 -- количество частей, которые нужно удалить для получения бейджа

local function onPartDeleted()
partsDeleted = partsDeleted + 1

if partsDeleted >= partsToDelete then
-- Предполагается, что player передается в функцию или доступен глобально
badgeService:AwardBadge(player.UserId, badgeId)
end
end

-- Функция для проверки и удаления блоков
local function checkAndDeleteParts()
local partName = "Part" -- замените на имя ваших блоков
local parts = workspace:GetChildren()

for _, obj in ipairs(parts) do
if obj:IsA("Part") and obj.Name == partName and obj.Transparency == 1 then
partsDeleted = partsDeleted + 1
end
end

if partsDeleted >= partsToDelete then
badgeService:AwardBadge(player.UserId, badgeId)
end
end

-- Запускаем проверку каждые несколько секунд
while true do
checkAndDeleteParts()
wait(5) -- интервал проверки в секундах
end

Скрипт этот помести прямиком в твои блоки:

 local part = script.Parent 

local function onPromptTriggered()
part.Transparency = 1
part.CanCollide = false
part.Anchored = true -- чтобы блок не падал
end

local proximityPrompt = Instance.new("ProximityPrompt")
proximityPrompt.ActionText = "Удалить"
proximityPrompt.ObjectText = "Часть"
proximityPrompt.KeyboardKeyCode = Enum.KeyCode.E
proximityPrompt.Parent = part

proximityPrompt.Triggered:Connect(onPromptTriggered)
Обязательно запомни, что твои блоки должны иметь название - "Part", дабы скрипт их видел.

Если что то не работает, то отпишись в комментариях, я отвечу когда появится время.
Рустам Абдрашитов Мыслитель (8566) 1 месяц назад
 local part = script.Parent -- Объект, к которому игрок будет подходить 
local badgeID = 12345678 -- Замените на ID вашего бейджа
local badgeService = game:GetService("BadgeService")
local players = game:GetService("Players")
local guiEnabled = false -- Флаг для отслеживания состояния GUI

-- Функция для отображения GUI
local function showGui(player)
local playerGui = player:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui", playerGui)
local textLabel = Instance.new("TextLabel", screenGui)

textLabel.Text = "Зажми E"
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.Position = UDim2.new(0.5, -100, 0.5, -25)
textLabel.BackgroundColor3 = Color3.new(1, 1, 1)
textLabel.TextColor3 = Color3.new(0, 0, 0)

return screenGui
end

part.Touched:Connect(function(hit)
local player = players:GetPlayerFromCharacter(hit.Parent)
if player and not guiEnabled then
guiEnabled = true -- Устанавливаем флаг

-- Показать GUI
local screenGui = showGui(player)

-- Ждем нажатия клавиши E
local function onKeyPress(key)
if key == "e" then
-- Удаляем объект
part:Destroy()

-- Проверяем и выдаем бейдж
if not badgeService:UserHasBadge(player.UserId, badgeID) then
badgeService:AwardBadge(player.UserId, badgeID)
end

-- Убираем GUI после взаимодействия
screenGui:Destroy()
guiEnabled = false -- Сбрасываем флаг
end
end

-- Подписываемся на событие нажатия клавиш
player:GetMouse().KeyDown:Connect(onKeyPress)

-- Удаляем слушатель событий при выходе игрока
player.AncestryChanged:Connect(function(_, parent)
if not parent then
guiEnabled = false -- Сбрасываем флаг при выходе игрока
screenGui:Destroy() -- Удаляем GUI если игрок покинул игру
end
end)
end
end)
Похожие вопросы