Локальный скрипт:
local Gui script.Parent
local Marketplace game:GetService(/»MarketplaceService/»)
local player game.Players.LocalPlayer
local GamepassId 0 — вместо нуля вставьте айди своего геймпасса
local Remotes game.ReplicatedStorage.Remotes
local ChangeText true — оставьте true, если хотите чтобы текст изменился после покупки, поменяйте на false,
— если хотите, чтобы текст не менялся
local GiveOnJoin true — оставьте true, если хотите, чтобы предмет сразу выдавался игроку с геймпассом, когда
— он зашёл в игру, поставьте false, если не хотите этого
Gui.GamepassButton.MouseButton1Click:Connect(function()
if Marketplace:UserOwnsGamePassAsync(player.UserId, GamepassId) then
Remotes.ItemsGiver:FireServer(/»Pult/») — если Вы используете не пульт от ядерки, то в кавычках напишите
— вместо Pult что-то другое, чтобы не запутаться
if ChangeText true then
Gui.GamepassButton.Text /»Взять пульт от ядерки/»
end
else
Marketplace:PromptGamePassPurchase(player, GamepassId)
end
end)
Marketplace.PromptGamePassPurchaseFinished:Connect(function()
if ChangeText true then
Gui.GamepassButton.Text /»Взять пульт от ядерки/»
end
Remotes.ItemsGiver:FireServer(/»Pult/») — если Вы выше в кавычках меняли Pult на
— что-то другое, то напишите тут в кавычках такое же название
end)
Remotes.ItemsGiver.OnClientEvent:Connect(function(info)
if info /»PlayerJoined/» then
if Marketplace:UserOwnsGamePassAsync(player.UserId, GamepassId) then
if GiveOnJoin true then
Remotes.ItemsGiver:FireServer(/»Pult/») — если Вы выше в кавычках меняли Pult на
— что-то другое, то напишите тут в кавычках такое же название
end
if ChangeText true then
Gui.GamepassButton.Text /»Взять пульт от ядерки/»
end
end
end
end)
Скрипт в ServerScriptService:
local remote game.ReplicatedStorage.Remotes.ItemsGiver
local AllowStack true — оставьте true, если хотите, чтобы предмет можно было стакать, поставьте false, если
— хотите, чтобы предмет нельзя было стакать
remote.OnServerEvent:Connect(function(plr, info)
if info /»Pult/» then — если Вы в локальном скрипте в кавычках меняли Pult на что-то другое, то напишите
—тут в кавычках такое же название
if AllowStack true then
local Item game.ReplicatedStorage.Items.Pult:Clone() — если вы используете не пульт от ядерки, то
— напишите вместо Pult название вашей штуки
Item.Parent plr.Backpack
elseif AllowStack false then
local Item game.ReplicatedStorage.Items.Pult:Clone() — если вы используете не пульт от ядерки, то
— напишите вместо Pult название вашей штуки
if plr.Backpack:FindFirstChild(/»Pult/») then — если вы используете не пульт от ядерки, то
— напишите вместо Pult название вашей штуки
print(/»У тебя уже есть предмет/»)
else
Item.Parent plr.Backpack
end
end
end
end)
game.Players.PlayerAdded:Connect(function(plr)
remote:FireClient(plr, /»PlayerJoined/»)
end)
Музыка из видео:
Alan Walker — Spectre https://youtu.be/lf7TVbYwJ7s?siYkyE2QwoD8leNnFn
retroVision — Puzzle VIP https://youtu.be/WtaKxxZGCKc?siRH-45dTFMGWfhfId
CØDE — Duck Face https://youtu.be/-cWkoBJuu-k?siNfBPSs-Mk8-11FWM
Tobu — Hope https://youtu.be/Y1Z3Q3O7IRE?siqPwZKjA6a3qDBS81
Таймкоды:
0:00 Начало
0:21 Создаю геймпасс
1:28 Создаю кнопку для геймпасса в gui
1:54 Скриптю кнопку пока без геймпасса
2:38 Добавляю ремоут ивент и предмет в ReplicatedStorage
3:23 Продолжаю скриптить кнопку
4:06 Создаю скрипт в ServerScriptService и скриптую его
5:16 Тестирую выдачу предмета пока без геймпасса
5:34 Продолжаю локальный скрипт уже с геймпассом
6:19 Копирую айди геймпасса и вставляю в скрипт
6:39 Фейлово продолжаю локальный скрипт
7:23 Фейлово тестирую результат и не понимаю, в чём дело
8:37 Фиксю проблемы и тестирую
9:32 Добавляю ньюансы в локальный скрипт
9:54 Тестирую результат
10:41 Всем пока
Воспользуйтесь возможностью поделиться этим видео со своими друзьями и семьей, если вы нашли его полезным.
No Comments