Замовлення від NPC



🔧 1. Скрипт у ServerScriptService

-- ServerScriptService > NPCOrderReceiver (Script)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Recipes = require(ReplicatedStorage:WaitForChild("Recipes"))
local npcOrderEvent = ReplicatedStorage:WaitForChild("NPCOrderEvent")
local newOrderEvent = ReplicatedStorage:WaitForChild("NewOrder")
local OrderManager = require(game.ServerScriptService:WaitForChild("OrderManager"))

npcOrderEvent.OnServerEvent:Connect(function(player, recipeName)
if type(recipeName) ~= "string" then return end
if not Recipes[recipeName] then
warn("Гравець "..player.Name.." надіслав недійсний рецепт:", tostring(recipeName))
return
end

-- Зберігаємо замовлення у OrderManager
OrderManager.AssignOrder(player, recipeName)

-- Відправляємо клієнту дані для GUI (опціонально)
newOrderEvent:FireClient(player, recipeName, Recipes[recipeName])
print(player.Name.." отримав замовлення від NPC: "..recipeName)
end)

🔧 2. Локал скрипт у StarterPlayerScripts

-- StarterPlayerScripts > NPCDialogListener (LocalScript)
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local npcOrderEvent = ReplicatedStorage:WaitForChild("NPCOrderEvent")

local localPlayer = Players.LocalPlayer

-- Якщо в тебе один NPC з відомим шляхом:
local dialog = workspace:WaitForChild("Knight"):WaitForChild("Head"):WaitForChild("Dialog")

dialog.DialogChoiceSelected:Connect(function(player, choice)
-- Перевіримо, що це саме наш LocalPlayer (за безпекою)
if player ~= localPlayer then return end

-- Відправляємо на сервер назву рецепту (перевіряй назви в Recipes)
if choice.ResponseDialog == "Soup" then
npcOrderEvent:FireServer("Soup")
elseif choice.ResponseDialog == "Pizza" then
npcOrderEvent:FireServer("Pizza")
-- додай інші варіанти
end
end)

🔧 3. В ReplicatedStorage створити RemoteEvent і назвати NPCOrderEvent