Roblox 코딩

로블록스(Roblox) 코딩 실습 17 : 더욱 강력한 게임 관리 시스템과 자동화 도구

runner326 2025. 2. 24. 23:34

로블록스 코딩 실습: 더욱 강력한 게임 관리 시스템과 자동화 도구 🚀🛠️

이번에는 관리자 명령어 시스템, 자동 데이터 저장 시스템, 서버 자동 재시작 기능, 자동 밴 시스템, 로그 기록 시스템과 같은 강력한 게임 관리 시스템자동화 도구를 구현해보겠습니다. 이러한 기능들은 게임 운영과 관리를 보다 효율적으로 만들어 주며, 게임의 안정성과 보안성을 높일 수 있습니다! 😊


1️⃣ 관리자 명령어 시스템 구현 🛡️

관리자들이 특정 명령어를 입력해 게임 내에서 다양한 관리 작업을 수행할 수 있는 관리자 명령어 시스템을 구현해보겠습니다.

1. 관리자 명령어 스크립트 작성

  1. ServerScriptService에 "Insert Object" -> Script를 추가합니다.
  2. 다음 코드를 입력합니다:
local admins = {"Admin1", "Admin2"}  -- 관리자 목록

game.Players.PlayerAdded:Connect(function(player)
    player.Chatted:Connect(function(message)
        if table.find(admins, player.Name) then
            if message == "!kick" then
                player:Kick("관리자에 의해 추방되었습니다.")
            elseif message == "!heal" then
                local humanoid = player.Character:FindFirstChild("Humanoid")
                if humanoid then
                    humanoid.Health = humanoid.MaxHealth
                    print("체력이 회복되었습니다.")
                end
            elseif message == "!gold 100" then
                local gold = player:FindFirstChild("leaderstats"):FindFirstChild("Gold")
                if gold then
                    gold.Value = gold.Value + 100
                    print("100 골드를 지급했습니다.")
                end
            end
        end
    end)
end)

코드 설명

  • table.find(): 관리자 목록에서 플레이어의 이름을 확인합니다.
  • player:Kick(): 관리자가 특정 플레이어를 추방할 수 있습니다.
  • Humanoid.Health: 플레이어의 체력을 회복합니다.
  • 골드 지급: 명령어를 통해 골드를 지급할 수 있습니다.

2️⃣ 자동 데이터 저장 시스템 구현 💾

플레이어의 데이터를 자동으로 저장하는 시스템을 구현해보겠습니다.

1. 데이터 저장 스크립트 작성

  1. ServerScriptService에 "Insert Object" -> Script를 추가합니다.
  2. 다음 코드를 입력합니다:
local dataStoreService = game:GetService("DataStoreService")
local goldDataStore = dataStoreService:GetDataStore("GoldData")

game.Players.PlayerAdded:Connect(function(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local gold = Instance.new("IntValue")
    gold.Name = "Gold"
    gold.Parent = leaderstats

    local savedGold = goldDataStore:GetAsync(player.UserId)
    if savedGold then
        gold.Value = savedGold
        print(player.Name .. "님의 골드가 로드되었습니다.")
    end
end)

game.Players.PlayerRemoving:Connect(function(player)
    local gold = player:FindFirstChild("leaderstats"):FindFirstChild("Gold")
    if gold then
        goldDataStore:SetAsync(player.UserId, gold.Value)
        print(player.Name .. "님의 골드가 저장되었습니다.")
    end
end)

코드 설명

  • DataStoreService: 데이터를 저장하고 로드하는 서비스입니다.
  • GetAsync(): 저장된 데이터를 불러옵니다.
  • SetAsync(): 플레이어의 데이터를 저장합니다.

3️⃣ 서버 자동 재시작 기능 구현 🔄

특정 시간이 지나면 서버가 자동으로 재시작되는 기능을 구현해보겠습니다.

1. 서버 재시작 스크립트 작성

  1. ServerScriptService에 "Insert Object" -> Script를 추가합니다.
  2. 다음 코드를 입력합니다:
local runService = game:GetService("RunService")

while wait(300) do  -- 5분마다 재시작
    print("서버가 10초 후 재시작됩니다.")
    wait(10)
    runService:Stop()  -- 서버 종료
end

코드 설명

  • RunService:Stop(): 서버를 종료합니다.
  • wait(300): 5분마다 서버를 재시작합니다.

4️⃣ 자동 밴 시스템 구현 🚫

비정상적인 행동을 하는 플레이어를 자동으로 감지하여 밴하는 시스템을 구현해보겠습니다.

1. 자동 밴 스크립트 작성

  1. ServerScriptService에 "Insert Object" -> Script를 추가합니다.
  2. 다음 코드를 입력합니다:
local bannedPlayers = {}

game.Players.PlayerAdded:Connect(function(player)
    player.Chatted:Connect(function(message)
        if message == "cheat" then
            table.insert(bannedPlayers, player.UserId)
            player:Kick("비정상적인 행동으로 인해 밴되었습니다.")
            print(player.Name .. "님이 자동 밴되었습니다.")
        end
    end)
end)

코드 설명

  • bannedPlayers: 밴된 플레이어의 목록을 관리합니다.
  • player:Kick(): 밴된 플레이어를 게임에서 추방합니다.

5️⃣ 로그 기록 시스템 구현 📜

게임 내에서 발생한 주요 이벤트를 자동으로 기록하는 로그 시스템을 구현해보겠습니다.

1. 로그 기록 스크립트 작성

  1. ServerScriptService에 "Insert Object" -> Script를 추가합니다.
  2. 다음 코드를 입력합니다:
local logs = {}

game.Players.PlayerAdded:Connect(function(player)
    table.insert(logs, player.Name .. "님이 접속하였습니다.")
end)

game.Players.PlayerRemoving:Connect(function(player)
    table.insert(logs, player.Name .. "님이 게임에서 나갔습니다.")
end)

game.Players.PlayerAdded:Connect(function(player)
    player.Chatted:Connect(function(message)
        table.insert(logs, player.Name .. ": " .. message)
    end)
end)

while wait(10) do
    print("로그 기록: " .. table.concat(logs, ", "))
end

코드 설명

  • table.insert(): 로그를 기록합니다.
  • table.concat(): 모든 로그를 하나의 문자열로 출력합니다.

마무리 ✨

이번 실습에서는 관리자 명령어 시스템, 자동 데이터 저장 시스템, 서버 자동 재시작 기능, 자동 밴 시스템, 로그 기록 시스템과 같은 강력한 게임 관리 시스템과 자동화 도구를 구현해 보았습니다. 이러한 기능들은 게임 운영과 관리를 보다 효율적으로 만들어 주며, 게임의 안정성과 보안성을 높일 수 있습니다! 😊 다음에는 플레이어 분석과 게임 통계 시스템을 소개해드리겠습니다! 🚀


 

반응형