Вот пример скрипта для NPC в Roblox Studio, который будет скупать предметы у игрока, проверять их наличие в инвентаре и выдавать деньги в обмен. Также включен скрипт для управления деньгами игрока.
### 1. Скрипт для управления деньгами игрока
Создайте скрипт в `ServerScriptService`:
-- MoneyManagerScript.lua
local Players = game:GetService("Players")
-- Создаем лидерстат для отображения денег
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder", player)
leaderstats.Name = "leaderstats"
local money = Instance.new("IntValue", leaderstats)
money.Name = "Money"
money.Value = 0 -- Стартовое количество денег
end)
### 2. Скрипт для NPC, который покупает предметы
Добавьте этот скрипт в NPC (например, в модель персонажа):
local npc = script.Parent
local interactionDistance = 10 -- Дистанция, на которой игрок может взаимодействовать с NPC
local itemToBuy = "Apple" -- Название предмета, который NPC покупает
local itemPrice = 50 -- Цена за один предмет
local function playerHasItem(player, itemName)
local backpack = player:FindFirstChild("Backpack")
if backpack then
for _, item in ipairs(backpack:GetChildren()) do
if item.Name == itemName then
return item
end
end
end
return nil
end
local function buyItems(player)
local item = playerHasItem(player, itemToBuy)
if item then
local money = player:FindFirstChild("leaderstats"):FindFirstChild("Money")
if money then
item:Destroy() -- Удаляем предмет из инвентаря
money.Value = money.Value + itemPrice -- Добавляем деньги
print(player.Name .. " продал предмет " .. itemToBuy .. " за " .. itemPrice .. " денег.")
end
else
print("У игрока " .. player.Name .. " нет предмета " .. itemToBuy)
end
end
npc.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
local character = player.Character
if character and (character.PrimaryPart.Position - npc.Position).Magnitude <= interactionDistance then
buyItems(player)
end
end
end)
### Как работает:
1. Скрипт для денег создает лидерстат с параметром `Money` у каждого игрока.
2. NPC проверяет, есть ли у игрока нужный предмет в рюкзаке (`Backpack`).
3. Если предмет найден, он удаляется, а игроку начисляются деньги.
### Как настроить:
- Измените `itemToBuy` на название предмета, который вы хотите, чтобы NPC покупал.
- Укажите стоимость предмета в переменной `itemPrice`.
- Убедитесь, что предмет добавлен в инвентарь игрока через систему инструментов или другим способом.