Menu
CoddyTech

공장 차지하기

Coddy의 Roblox 게임: 공장 타이쿤 코스 레슨. 18개 중 6번째.

타이쿤은 누군가의 소유입니다. 입구 옆의 초록색 패드가 소유권을 결정합니다. 처음으로 패드 위에 올라서는 플레이어가 소유자가 되고, 공장이 가동되며, 소유자에게만 돈이 지급됩니다. 소유자는 스크립트 맨 위의 변수 하나로 관리하며, 누군가 소유권을 주장하기 전까지는 nil입니다:

local owner = nil

claimPad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if player and not owner then
		owner = player
	end
end)

공장의 소유권이 정해지면 공장 안의 모든 드로퍼가 작동을 시작합니다. 드로퍼에는 태그 Dropper가 지정되어 있으므로, CollectionService:GetTagged("Dropper")를 사용하면 어디에 있든 모두 찾을 수 있습니다. 구매한 드로퍼는 ServerStorage에서 대기하므로 workspace에 있는 드로퍼만 작동을 시작합니다.

나중에 소유자가 떠난 뒤 공장의 소유권을 다시 주장할 수 있습니다. 어떤 드로퍼도 루프를 두 번 실행하지 않도록, startDropper는 실행 중인 드로퍼에 특성을 표시하고 해당 특성이 설정되어 있으면 아무것도 하지 않습니다.

공장 위의 표지판에는 소유자가 표시됩니다. 다른 게시판과 마찬가지로 tycoon.Sign에 SurfaceGui가 있습니다.

challenge icon

챌린지

중급

공장을 소유할 수 있게 만드세요:

  1. CollectionService를 가져오고, 위쪽 근처에 local owner = nil을 추가하세요.
  2. tycoon.Sign에 표지판을 배치하세요. 표지판은 SurfaceGui와 그 안을 채우는 Status라는 이름의 TextLabel로 구성하고, 어두운 배경에 흰색의 크기가 조정되는 텍스트를 표시하세요. 텍스트는 Step on the green pad to claim this factory로 설정하고, setSign(text) 함수를 만드세요.
  3. startDropper에서 드롭퍼의 Running 특성이 설정되어 있으면 즉시 반환하세요. 그렇지 않으면 특성을 설정하고, 루프가 끝날 때 해제하세요.
  4. tycoon.Dropper를 시작하는 줄을 삭제하세요. 플레이어가 tycoon.ClaimPad를 밟았을 때 소유자가 없다면, 해당 플레이어를 소유자로 지정하고, 발판을 회색으로 바꾸고(Color3.fromRGB(120, 120, 120), SmoothPlastic), 표지판을 Player1's Factory로 설정한 다음(플레이어의 Name 사용), 워크스페이스에 태그된 모든 드롭퍼를 시작하세요.
  5. 수집기에서는 소유자에게만 지급하세요(소유자가 있는 경우).

Play를 눌러 공장을 소유한 다음, Check를 누르세요.

직접 해보기

local Players = game:GetService("Players")
local Debris = game:GetService("Debris")
local Settings = require(game.ReplicatedStorage.Settings)

local tycoon = workspace.Tycoon

print("Ore is worth " .. Settings.OreValue .. " Cash")

-- 모든 플레이어는 리더보드에서 Cash를 받습니다
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Parent = leaderstats
end)

-- Ore: Cash 가치가 있는 작은 파트로, 드로퍼 아래로 떨어집니다
local function dropOre(dropper)
	local ore = Instance.new("Part")
	ore.Name = "Ore"
	ore.Size = Vector3.new(1, 1, 1)
	ore.Color = Color3.fromRGB(150, 150, 160)
	ore.Position = dropper.Position - Vector3.new(0, 2.5, 0)
	ore:SetAttribute("Value", Settings.OreValue)
	if math.random() < Settings.GoldChance then
		ore.Color = Color3.fromRGB(255, 200, 40)
		ore.Material = Enum.Material.Neon
		ore:SetAttribute("Value", Settings.OreValue * 5)
	end
	ore.Parent = workspace
	Debris:AddItem(ore, 20)
end

local function startDropper(dropper)
	task.spawn(function()
		while dropper:IsDescendantOf(workspace) do
			dropOre(dropper)
			task.wait(Settings.DropInterval)
		end
	end)
end

startDropper(tycoon.Dropper)

-- 컨베이어는 그 위에 놓인 모든 것을 운반합니다
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- 수집기는 광석을 Cash로 바꿉니다
tycoon.Collector.Touched:Connect(function(hit)
	if hit.Name == "Ore" then
		local value = hit:GetAttribute("Value")
		hit:Destroy()
		for _, player in Players:GetPlayers() do
			player.leaderstats.Cash.Value += value
		end
	end
end)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Roblox 게임: 공장 타이쿤의 모든 레슨