아하, UUID 키를 게임 안에서 생성하는 게 아니라 외부 사이트(웹사이트나 디스코드 봇 등)에서 생성해서 유저에게 지급하고, 유저는 그 키를 복사해서 게임 내 Rayfield UI에 입력하는 방식을 원하시는군요!
이 구조를 만들려면 로블록스 게임 서버가 외부 사이트의 데이터베이스(DB)를 조회할 수 있어야 하므로, HttpService:GetAsync()나 Rayfield의 GrabKeyFromUrl 기능을 사용해야 합니다.
가장 대중적이고 만들기 쉬운 웹사이트 연동형 (GrabKeyFromUrl) 구조를 짜는 방법을 알려드릴게요.
🌐 전체적인 작동 흐름
내 웹사이트/서버: 유저가 사이트에서 광고를 보거나 로그인을 하면, 서버가 무작위 UUID 키를 생성해 DB에 넣고 24시간 뒤 만료되게 설정합니다.
키 확인 API 제공: 내 사이트에 특정 유저의 키를 확인할 수 있는 주소(예: https://내사이트.com/api/getkey?userid=유저ID)를 만듭니다. 이 주소로 접속하면 오늘 날짜의 UUID 키가 텍스트(KEY-abc123xyz)로만 출력되어야 합니다.
로블록스(Rayfield): 게임이 켜지면 Rayfield가 이 URL에 자동으로 유저 ID를 붙여 접속한 뒤, 사이트가 뱉어낸 UUID 키와 유저가 입력한 키가 같은지 검증합니다.
🛠️ 로블록스 스크립트 설정 (Client)
외부 웹사이트 API와 연동할 때는 서버 스크립트를 복잡하게 짤 필요 없이, Rayfield의 내장 기능인 GrabKeyFromUrl을 활용하면 로컬 스크립트 한 줄로 끝납니다.
Lua
local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
-- 내 웹사이트의 키 확인 API 주소 (유저 ID를 파라미터로 붙임)
-- 게임이 실행되면 Rayfield가 이 주소에 접속해서 "실제 올바른 UUID 키 값"을 스스로 읽어옵니다.
local keyApiUrl = "https://[Log in to view URL]" .. tostring(LocalPlayer.UserId)
local Window = Rayfield:CreateWindow({
Name = "Website UUID Key System",
LoadingTitle = "웹사이트 인증 확인 중...",
LoadingSubtitle = "by Rayfield",
ConfigurationSaving = { Enabled = false },
KeySystem = true,
KeySettings = {
Title = "사이트 연동 일일 인증",
Subtitle = "홈페이지에서 오늘자의 UUID 키를 발급받으세요.",
Note = "키 발급 주소: https://[Log in to view URL]", -- 유저가 키를 얻으러 갈 사이트 주소
FileName = "Rayfield_WebUUIDKey",
SaveKey = true, -- 24시간 동안 유저 기기에 키 저장
-- [핵심 설정]
GrabKeyFromUrl = true, -- 외부 URL에서 키를 가져오겠다고 설정
Key = { keyApiUrl } -- 위에 적은 API 주소를 넣으면, Rayfield가 내부적으로 HttpGet을 보냅니다.
}
})
local MainTab = Window:CreateTab("메인 화면", 4483362458)
MainTab:CreateButton({
Name = "핵심 기능 실행",
Callback = function()
print("웹사이트 UUID 인증 성공!")
end,
})
🖥️ 웹사이트(백엔드)는 어떻게 구축해야 하나요?
웹사이트를 직접 만드실 때(Node.js, Python, PHP 등 사용), 로블록스가 보낸 요청을 처리하는 핵심 로직은 다음과 같아야 합니다.
https://[Log in to view URL] 요청이 들어옴
백엔드에서 DB를 조회해 12345 유저에게 발급된 UUID 키가 있는지 확인.
만약 키가 있고 발급된 지 24시간 안 지났다면: * 다른 HTML 태그나 JSON 형식 없이 오직 문자열(예: KEY-6f9a23b1)만 화면에 그대로 출력(plain/text)해야 합니다. Rayfield는 글자 그대로 읽어가기 때문입니다.
만약 키가 없거나 24시간이 지났다면:
새로운 UUID를 생성(uuidv4() 등 활용)하여 DB에 유저 ID, 생성 시간과 함께 저장한 뒤 그 새 키를 화면에 출력합니다.
⚠️ 주의사항 (중요)
로블록스 스튜디오에서 테스트하실 때는 Game Settings -> Security -> Allow HTTP Requests가 On(활성화) 되어 있어야 외부 사이트와 통신이 가능합니다!
To embed this project on your website, copy the following code and paste it into your website's HTML: