robie gre na robloxie ze gracz ma jakiegos tycoona kebabow i musi od npctow zarabiac pieniadze (nie umiem programowac wiec uzylem meta ai z whatsappa i ten problem ktory tutaj pokazuje jest jedyny)
mam 3 skrypty:
1 npc podchodzi do lady i losuje swoje zamowienie:
--local npc = script.Parent
local npc = game.Workspace:WaitForChild("NPC")
local humanoid = npc:FindFirstChildOfClass("Humanoid")
local zamowienie = npc:WaitForChild("Zamowienie")
local part1 = workspace:WaitForChild("Part_Zamowienie")
local part2 = workspace:WaitForChild("Part_Wyjscie")
local function idzDo(part)
humanoid:MoveTo(part.Position)
humanoid.MoveToFinished:Wait()
end
local function losujZamowienie()
for _, val in pairs(zamowienie:GetChildren()) do
if val:IsA("IntValue") then
val.Value = math.random(1,3) -- 1=wołowina, 2=kurczak itd.
end
end
print("Nowe zamówienie dla ".. npc.Name)
print("mieso: " ..zamowienie.Mieso.Value)
print("pita: " ..zamowienie.Pita.Value)
print("ostrosc: " ..zamowienie.Ostrosc.Value)
print("sos: " ..zamowienie.Sos.Value)
print("salata: " ..zamowienie.Salata.Value)
-- tu możesz wyświetlić GUI nad głową
end
-- START
if npc then
idzDo(part1)
losujZamowienie()
-- teraz stoi i czeka, resztę zrobi Part_Submit
end
2 part submit w workspace ma skrypt ktory sprawdza czy cos co dotknelo nadaje sie dla npc:
local submit = script.Parent
local part2 = workspace:WaitForChild("Part_Wyjscie")
local function porownaj(npcZam, kebabSklad)
for _, v in pairs(npcZam:GetChildren()) do
local kebabVal = kebabSklad:FindFirstChild(v.Name)
if not kebabVal or kebabVal.Value ~= v.Value then
return false
end
end
return true
end
submit.Touched:Connect(function(hit)
local kebab = hit.Parent
if not kebab:FindFirstChild("Skladniki") then return end
if kebab:GetAttribute("Oddany") then return end -- żeby nie spamowało
kebab:SetAttribute("Oddany", true)
-- znajdź najbliższego NPC który czeka
local najblizszyNPC = nil
local minDist = 20
for _, npc in pairs(workspace:GetChildren()) do
if npc:FindFirstChild("Zamowienie") and npc:FindFirstChildOfClass("Humanoid") then
local dist = (npc.HumanoidRootPart.Position - submit.Position).Magnitude
if dist < minDist then
minDist = dist
najblizszyNPC = npc
end
end
end
if not najblizszyNPC then return end
local skladniki = kebab:FindFirstChild("Skladniki")
local zamowienie = najblizszyNPC:FindFirstChild("Zamowienie")
if porownaj(zamowienie, skladniki) then
print("Dobre zamówienie!")
-- daj monety - zakładam że masz leaderstats
local player = game.Players:GetPlayerFromCharacter(kebab:GetAttribute("Owner")) -- jak zapiszesz właściciela
-- prostsza wersja: znajdź gracza który dotknął
local tag = kebab:FindFirstChild("Owner")
if tag then
local pl = game.Players:FindFirstChild(tag.Value)
if pl and pl:FindFirstChild("leaderstats") then
pl.leaderstats.Coins.Value += 20
end
end
kebab:Destroy()
-- NPC idzie do wyjścia
local hum = najblizszyNPC:FindFirstChildOfClass("Humanoid")
hum:MoveTo(part2.Position)
task.wait(3)
najblizszyNPC:Destroy()
else
print("Złe zamówienie")
kebab:SetAttribute("Oddany", false)
end
end)
i 3 spawner aby nastepne npcty sie zglaszaly:
local ServerStorage = game:GetService("ServerStorage")
local npcFolder = ServerStorage:WaitForChild("NPC") -- tam gdzie trzymasz model NPC
local spawnPart = workspace:WaitForChild("NPCSpawn") -- Part gdzie się respi
local wyjsciePart = workspace:WaitForChild("Part_Wyjscie") -- Part_Wyjscie
local function spawnNPC()
local npc = npcFolder:Clone()
npc.Parent = workspace
npc.HumanoidRootPart.CFrame = spawnPart.CFrame + Vector3.new(0,3,0)
-- idzie do wyjścia dopiero jak go obsłużysz
-- jak chcesz żeby sam wyszedł po czasie:
task.delay(90, function() -- po 90 sek wychodzi
if npc.Parent then
npc.Humanoid:MoveTo(wyjsciePart.Position)
npc.Humanoid.MoveToFinished:Wait()
npc:Destroy() -- USUWA
-- RESPI NOWEGO
task.wait(2)
spawnNPC()
end
end)
return npc
end
-- pierwszy spawn
spawnNPC()
a problem jest taki ze pierwszy npc normalnie dobrze dziala ale nastepny nie moze znalezc parta od zamowienia wiec po uplywie ustalonego czasu poprostu idzie do wyjscia i znika i wyskakuje taki blad:

jak ktos moze pomuc ale niedokladnie rozumie to prosze zadac pyatnie.