Top.Mail.Ru
Ответы

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

Ребят, мне нужна помощь в создании скрипта в роблокс студио. Мне нужно чтоб игрок подходил к предмету, допустим part, появлялась кнопка : зажми E. После того как зажимаешь Е, парт ударяется. Мне нужно сделать чтоб игрок удалял несколько part-ов и ему выдавался бейдж, помогите пожалуйста.

По дате
По рейтингу
Аватар пользователя
9мес

Окей, сейчас сделаю.

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

Скрипт помести прямиком в ServerScriptService. Он считывает количество удалённых блоков.

1234567891011121314151617181920212223242526272829303132333435
 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  


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

123456789101112131415
 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", дабы скрипт их видел.

Если что то не работает, то отпишись в комментариях, я отвечу когда появится время.

Аватар пользователя
Мудрец
9мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
 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) 
Аватар пользователя
Профи
9мес

Чтобы создать такой скрипт в Roblox Studio, выполните следующие шаги:Откройте Roblox Studio и создайте новый проект.Добавьте модель Part в сцену.Создайте новый скрипт в Roblox Studio и назовите его «PartBreaker».В скрипте добавьте функцию OnMouseDown, которая будет вызываться при нажатии кнопки мыши. Внутри функции создайте переменные для хранения количества ударов и текущего бейджа.Добавьте цикл for, который будет выполняться определённое количество раз (количество ударов). Внутри цикла создайте функцию, которая будет наносить удар по Part модели.Создайте функцию для выдачи бейджа, которая будет вызываться после завершения цикла.Добавьте оператор if, который проверяет, равен ли текущий бейдж нулю. Если равен, выдаётся бейдж и устанавливается его значение.Сохраните скрипт и вернитесь в игру.Зажмите кнопку мыши на Part модели, чтобы активировать скрипт. Игрок должен удалить несколько Part моделей и получить бейдж.