DataModel

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง

ข้อมูลแบบข้อมูล (ซึ่งมักจะเรียกว่า game หลังจากตัวแปร global ที่ใช้เพื่อเข้าถึงมัน) คือรากของ Workspace ที่ประกอบด้วยบริกา

ตัวอย่างโค้ด

GetService()

local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Examples of modifying properties of these services
Workspace.Gravity = 20
Lighting.ClockTime = 4

สรุป

คุณสมบัติ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายรหัสผู้ใช้หรือกลุ่มที่เป็นเจ้าของสถานที่

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบาย Entity.CreatorType ของสถานที่ ว่าจะเป็นเจ้าของโดยผู้ใช้หรือกลุ่มหรือไม่

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายรหัสของประสบการณ์ที่ตั้งอยู่บนเซิร์ฟเวอร์

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน
    เลิกใช้แล้ว

    ไม่สามารถใช้งานได้ อธิบายว่า Enum.Genre ของสถานที่ในเว็บไซต์ Roblox ตามที่กำหนดไว้

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    รหัสประจำตัวผู้เล่นที่ไม่ซ้ำใครสำหรับเซิร์ฟเวอร์เกมที่ดำเนินการ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายรหัสสถานที่ที่ดำเนินการบนเซิร์ฟเวอร์

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายเวอร์ชันของสถานที่ที่เซิร์ฟเวอร์ทำงานบน

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายรหัสเซิร์ฟเวอร์ส่วนตัวของเซิร์ฟเวอร์หากเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์ส่วนตัวหรือเป็น reserved server

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบาย Class.Player.UserId|userId ของ Class.Player ที่เป็นเจ้าของเซิร์ฟเวอร์ส่วนตัวหากเซิร์ฟเวอร์เป็นส่วนตัว

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    การอ้างอิงถึงบริการ Workspace

วิธีการ

  • BindToClose(function : function):void

    ผูกคุณสมบัติให้เรียกก่อนที่จะปิดเซิร์ฟเวอร์

  • การรักษาความปลอดภัยของปลั๊กอิน

    กลับตารางที่มีข้อมูลพื้นฐานเกี่ยวกับงานที่ประมาณเวลา

  • GetObjects(url : ContentId):Instances
    การรักษาความปลอดภัยของปลั๊กอิน
    เลิกใช้แล้ว

    กลับรายการ Instances ที่เกี่ยวข้องกับ URL เนื้อหาที่ให้

  • กลับ true หากลูกค้าได้โหลดเกมเป็นครั้งแรก

  • SetPlaceId(placeId : number):void
    การรักษาความปลอดภัยของปลั๊กอิน

    ตั้งค่า DataModel.PlaceId ของเกมตัวอย่างปัจจุบันให้เป็น placeId ที่ให้ไว้

  • SetUniverseId(universeId : number):void
    การรักษาความปลอดภัยของปลั๊กอิน

    ตั้งค่า DataModel.GameId ของเซิร์ฟเวอร์ตัวอย่างปัจจุบันให้เป็น universeId ที่กำหนด

วิธีการรับทอดมาจากServiceProvider
  • เขียนพร้อมๆ กัน

    กลับรายการบริการที่ระบุโดยชื่อผู้ให้บริการถ้ามันถูกสร้างแล้ว ข้อผิดพลาดสำหรับชื่อที่ไม่ถูกต้อง

  • ส่งคืนบริการด้วยชื่อคลาสที่ร้องขอ โดยสร้างมันขึ้นมาหากมันไม่มีอยู่

อีเวนต์

  • เปิดเมื่อผู้ใช้สั่งและเพิ่มหรือลดคุณภาพของกราฟิกโดยใช้ปุ่มลัด

  • เกิดขึ้นในเครื่องคอมพิวเตอร์เมื่อเกมจบการโหลดครั้งแรก

อีเวนต์รับทอดมาจากServiceProvider

คุณสมบัติ

CreatorId

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

สมบัตินี้อธิบายรหัสของผู้ใช้หรือกลุ่มที่เป็นเจ้าของสถานที่ หากสมบัติ DataModel.CreatorType เป็น User จากนั้น

ตัวอย่างโค้ด

Detect when the place owner joins the game

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("The place owner has joined the game!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroup(game.CreatorId) then
print("A member of the group that owns the place has joined the game!")
end
end
end)

CreatorType

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

คุณสมบัตินี้อธิบาย Entity.CreatorType ของสถานที่ว่ามีเป็นเจ้าของโดยผู้ใช้หรือกลุ่มหรือไม่

หาก Enum.CreatorType เป็น 'ผู้ใช้' แล้วสมบัติ DataModel.CreatorId จะอธิบาย Class.Player.UserId|userId ของบัญชีที่เป็นเจ้าของเกม หาก 1> สร้างเกียรต

ตัวอย่างโค้ด

Detect when the place owner joins the game

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("The place owner has joined the game!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroup(game.CreatorId) then
print("A member of the group that owns the place has joined the game!")
end
end
end)

GameId

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

รายการนี้อธิบายรหัสของประสบการณ์ที่ตั้งอยู่บนเซิร์ฟเวอร์

รหัสนี้สามารถพบได้ในมุมมองด้านขวาบนของ เมนเจอร์สินทรัพย์ ใน Roblox Studio เมื่อใช้ Roblox Studio หากสถานที่ยังไม่ได้เผยแพร่ไปยัง Roblox ก็จะมี GameId ตรงกับรูปแบบที่ใช้

ดูเพิ่มเติม:

  • DataModel.PlaceId ซึ่งอธิบายรหัสสถานที่ที่ดำเนินการบนเซิร์ฟเวอร์
  • DataModel.JobId ซึ่งเป็นรหัสอันเฉพาะสำหรับเซิร์ฟเวอร์เกมอินสแตนซ์ที่ดำเนินงาน
  • TeleportService ซึ่งเป็นบริการที่สามารถใช้ได้เพื่อขนส่ง Players ระหว่างเกม
อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

คุณสมบัตินี้พังและไม่ควรใช้

สถานที่นี้มีอยู่ในอดีตเคยอธิบาย Enum.Genre ของสถานที่นี้ในเว็บไซต์ Roblox ว่าอยู่ในตำแหน่งที่กำหนดไว้

คุณสมบัตินี้, พร้อมกับ DataModel.GearGenreSetting , ไม่สามารถทำงานได้อีกต่อไปเนื่องจากสไตล์ที่มีอยู่ในเว็บไซต์ Roblox ที่ไม่ได้รวมอยู่ใน Enum.Genre คลาสเรียบ

JobId

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

อินสแตนซ์มันเป็นรหัสที่ไม่มีใครเหมือน (ไม่มีที่อยู่ในตัวอักษร) ซึ่งหมายความว่าไม่มีเซิร์ฟเวอร์สองเครื่องที่ผ่านมาหรือปัจจุบันจะมีรหัสเดียวกั

ค่าเริ่มต้นสำหรับสตริงที่ว่างใน Studio

ดูเพิ่มเติม

  • TeleportService:GetPlayerPlaceInstanceAsync() ซึ่งสามารถใช้เพื่อดึงข้อมูล DataModel.JobId ของเซิร์ฟเวอร์ปัจจุบันของผู้ใช้
  • TeleportService:TeleportToPlaceInstance() ซึ่งสามารถใช้เพื่อเทเลพอร์ต Player ไปยังเซิร์ฟเวอร์ที่กำหนดเฉพาะ
  • DataModel.PrivateServerId อธิบาย ID ของเซิร์ฟเวอร์ส่วนตัวที่เกมส์เซิร์ฟเวอร์อินสแตนซ์เป็นเจ้าของ
  • HttpService:GenerateGUID() ระบบที่สามารถใช้เพื่อสร้าง UUID ของคุณเอง

PlaceId

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

คุณสมบัตินี้อธิบาย ID ของสถานที่ที่ดำเนินการบนเซิร์ฟเวอร์

หากสถานที่ถูกเผยแพร่ไปยัง Roblox ให้พบได้ที่ เมนูทรัพยากร โดยการคลิกขวาที่สถานที่ภายในโฟลเดอร์ สถานที่ และเลือก เคลื่อนย้าย ID ไปยังลายละคร

หากสถานที่ยังไม่ได้เผยแพร่ไปยัง Roblox รหัสนี้จะตรงกับรูปแบบที่ใช้

ดูเพิ่มเติม

  • DataModel.GameId ซึ่งอธิบายรหัสของประสบการณ์ที่ตั้งอยู่ในปัจจุบัน
  • DataModel.JobId ซึ่งเป็นรหัสอันเฉพาะสำหรับเซิร์ฟเวอร์เกมอินสแตนซ์ที่ดำเนินงาน
  • TeleportService ซึ่งเป็นบริการที่สามารถใช้เพื่อขนส่ง Players ระหว่างสถานที่

PlaceVersion

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

คุณสมบัตินี้อธิบายเวอร์ชันของสถานที่ที่เซิร์ฟเวอร์กำลังประมวลผล

เวอร์ชันนี้ตรงกับเวอร์ชันนี้ที่ปรากฏใต้ส่วน ประวัติเวอร์ชัน ของการตั้งค่าสถานที่ มันไม่ใช่เวอร์ชันปัจจุบันของ Roblox ตัวนี้ มีค่า 0 สำหรับทุกประสบการณ์ที่ไม่เผยแพร่

เมื่อสร้างตัวอักษรเซิร์ฟเวอร์สำหรับสถานที่ มันจะใช้เวอร์ชันปัจจุบันของสถานที่ หากสถานที่ถูกปรับปรุงในภายหลังในขณะที่เซิร์ฟเวอร์นี้กำลังทำงาน เซิร์ฟเวอร์จะยังคงอยู่ในเวอร์ชันปัจจุบัน

สมบัตินี้สามารถใช้เพื่อแสดง ScreenGui ที่แสดงรุ่นปัจจุบันของเกมให้กับ Players เพื่อช่วยให้การดีบั๊ก

ตัวอย่างโค้ด

Server version number GUI

local StarterGui = game:GetService("StarterGui")
local versionGui = Instance.new("ScreenGui")
local textLabel = Instance.new("TextLabel")
textLabel.Position = UDim2.new(1, -10, 1, 0)
textLabel.AnchorPoint = Vector2.new(1, 1)
textLabel.Size = UDim2.new(0, 150, 0, 40)
textLabel.BackgroundTransparency = 1
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.TextXAlignment = Enum.TextXAlignment.Right
textLabel.TextScaled = true
local placeVersion = game.PlaceVersion
textLabel.Text = string.format("Server version: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

รายการนี้อธิบายรหัสเซิร์ฟเวอร์ส่วนตัวของเซิร์ฟเวอร์หากเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์ส่วนตัว

หากเซิร์ฟเวอร์ไม่ใช่เซิร์ฟเวอร์ส่วนตัว, ค่านี้จะเป็นสตริงว่าง

เซิร์ฟเวอร์ส่วนตัว

กำลังติดตาม:

PrivateServerId vs รหัสงาน

PrivateServerId ของเซิร์ฟเวอร์แตกต่างจาก DataModel.JobId ส่วน JobId อินสแตนซ์

เซิร์ฟเวอร์ส่วนตัว (เกม) สามารถมีหลายตัวอย่างเซิร์ฟเวอร์ที่เกี่ยวข้องกับพวกเขาในเวลาต่อมา

ดูเพิ่มเติม:

ตัวอย่างโค้ด

Detecting Private Servers

local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservedServer"
end
else
return "StandardServer"
end
end
print(getServerType())

PrivateServerOwnerId

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

สมบัตินี้อธิบาย Class.Player.UserId|userId ของ Class.Player ที่เป็นเจ้าของ Class.Player ซึ่งเป็นเซิร์ฟเวอร์ส่วนตัวหากเซิร์ฟเวอร์เป็นส่วนตัว

หากเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์สาธารณะหรือสำรองนี้จะได้รับการตั้งค่า 0

คุณสมบัตินี้สามารถใช้เพื่อระบุว่า Player เป็นเจ้าของเซิร์ฟเวอร์ส่วนตัวหรือไม่ โดยตัวอย่างเช่น:


local Players = game:GetService("Players")
-- นี่เป็นเซิร์ฟเวอร์ส่วนตัวหรือไม่?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- ฟังผู้เล่นใหม่ที่เพิ่มเข้ามา
Players.PlayerAdded:Connect(function(player)
-- ตรวจสอบว่าผู้เล่นเป็นเจ้าของเซิร์ฟเวอร์หรือไม่
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

ดูเพิ่มเติม:

  • DataModel.PrivateServerId คือคุณสมบัติที่อธิบายรหัสเฉพาะของเซิร์ฟเวอร์ส่วนตัวและ reserved servers

ตัวอย่างโค้ด

Detecting Private Servers

local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservedServer"
end
else
return "StandardServer"
end
end
print(getServerType())

Workspace

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

คุณสมบัติ Workspace เป็นการอ้างถึงบริการ Workspace

สมบัตินี้จะชี้ไปที่ Workspace และจะไม่เคยเป็น ไม่มี

Class.Workspace สามารถเข้าถึงได้โดยการใช้แปร global workspace และคุณสมบัติ ServiceProvider:GetService() ตัวอย่างเช่น:


workspace -- ตัวแปร global
game.Workspace -- สมบัติของ DataModel (เกม)
game:GetService("Workspace") -- workspace is a service

วิธีการ

BindToClose

void

ผูกคุณสมบัติให้เรียกก่อนที่เซิร์ฟเวอร์จะปิดลง หากคุณสมบัติผูกยอมรับตัวอักษร Enum.CloseReason จะส่งผ่าน EntityCloseReason เพื่อระบุเหตุผลในการปิดเซิร์ฟเวอร์

คุณสามารถผูกหลายหน้าโดยการเรียก BindToClose() ซ้ำแล้วซ้ำซาก. หน้าเชื่อมต่อจะเรียกในพาร์เลลและประมวลผลในเวลาเดียวกัน

เซิร์ฟเวอร์ประสบการณ์รอ 30 วินาทีสำหรับการทำงานทั้งหมดของตัวผู้ใช้จะหยุดทำงานก่อนที่จะปิดเซิร์ฟเวอร์ หลังจาก 30 วินาทีเซิร์ฟเวอร์จะปิดทำงานแม้ว่าการทำงานจะยังคงดำเนินการได้

เพื่อยืนยันว่าเซสชันปัจจุบันไม่ได้อยู่ใน Roblox Studio ใช้ RunService:IsStudio() นี้จะป้องกันให้ฟังก์ชันติดตัวจากการทำงานในเซสชันออฟไลน์

เมื่อคุณใช้ DataStoreService คุณควรใช้ BindToClose เพื่อผูกตัวเรื่องที่บันทึกทั้งหมดไปยัง DataStores เพื่อป้องกันการสูญเสียข้อมูลหากเซิร์ฟเวอร์ปิดการใช้

ดูเพิ่มเติม:

  • Enum.CloseReason สําหรับเหตุผลในการปิดเซิร์ฟเวอร์ประสบการณ์
  • PluginGui:BindToClose() ซึ่งผูกคุณสมบัติให้กับปุ่มปิด PluginGui

พารามิเตอร์

function: function

ฟังก์ชันที่เรียกก่อนที่เซิร์ฟเวอร์ปิดลง หากตัวแปรที่ผูกรับรองได้ยอมรับพารามิเตอร์ มันผ่าน Enum.CloseReason เพื่อระบุเหตุผลสำหรับการปิดเซิร์ฟเวอร์


ส่งค่ากลับ

void

ตัวอย่างโค้ด

Saving player data before shutting down

local DataStoreService = game:GetService("DataStoreService")
local RunService = game:GetService("RunService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
local allPlayerSessionDataCache = {}
local function savePlayerDataAsync(userId, data)
return playerDataStore:UpdateAsync(userId, function(oldData)
return data
end)
end
local function onServerShutdown(closeReason)
if RunService:IsStudio() then
-- Avoid writing studio data to production and stalling test session closing
return
end
-- Reference for yielding and resuming later
local mainThread = coroutine.running()
-- Counts up for each new thread, down when the thread finishes. When 0 is reached,
-- the individual thread knows it's the last thread to finish and should resume the main thread
local numThreadsRunning = 0
-- Calling this function later starts on a new thread because of coroutine.wrap
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- Perform the save operation
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- Could implement a retry
warn(string.format("Failed to save %d's data: %s", userId, result))
end
-- Thread finished, decrement counter
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- This was the last thread to finish, resume main thread
coroutine.resume(mainThread)
end
end)
-- This assumes playerData gets cleared from the data table during a final save on PlayerRemoving,
-- so this is iterating over all the data of players still in the game that hasn't been saved
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- This loop finishes running and counting numThreadsRunning before any of
-- the save threads start because coroutine.wrap has built-in deferral on start
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- Stall shutdown until save threads finish. Resumed by the last save thread when it finishes
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)
Binding to and Handling Game Shutdown

game:BindToClose(function(closeReason)
print(`Closing with reason {closeReason}`)
task.wait(3)
print("Done")
end)

GetJobsInfo

การรักษาความปลอดภัยของปลั๊กอิน

กลับตารางที่มีข้อมูลพื้นฐานเกี่ยวกับงานที่ประมาณเวลา

ในการคำนวณ ตัวจัดการภารกิจเป็นระบบที่รับผิดชอบในการประมาณเวลาการประมวลผลและการประมวลผลแบบขั้นสูง

คุณยังสามารถหาสถิติตัวจัดการงานสดในหน้าตัวจัดการงานใน Roblox Studio ได้

รายการแรกในตารางที่กลับมาคือคู่มืออ้างอิงที่มีสถิติ (หรือหัวข้อ) ที่มีอยู่ มันอยู่ในรูปแบบต่อไปนี้:


{
["name"] = "name",
["averageDutyCycle"] = "averageDutyCycle",
["averageStepsPerSecond"] = "averageStepsPerSecond",
["averageStepTime"] = "averageStepTime",
["averageError"] = "averageError",
["isRunning"] = "isRunning",
}

รายการที่ปรากฏในตารางต่อไปนี้เป็นพจนานุกรมที่มีสถิติด้านบนสำหรับงานที่ดำเนินการโดยตัวประมวลผลงาน ตัวอย่างเช่น:


{
["name"] = "Heartbeat",
["averageDutyCycle"] = 0,
["averageStepsPerSecond"] = 0,
["averageStepTime"] = 0,
["averageError"] = 0,
["isRunning"] = false,
}

ดูเพิ่มเติม:


ส่งค่ากลับ

ตารางที่มีข้อมูลเกี่ยวกับงานที่ประสานงานตรงไปยังตัวประมวลผล ดูด้านบนสำหรับรูปแบบ

ตัวอย่างโค้ด

Getting Jobs Info

local jobInfo = game:GetJobsInfo()
local jobTitles = jobInfo[1]
table.remove(jobInfo, 1)
local divider = string.rep("-", 120)
print(divider)
warn("JOB INFO:")
print(divider)
for _, job in pairs(jobInfo) do
for jobIndex, jobValue in pairs(job) do
local jobTitle = jobTitles[jobIndex]
warn(jobTitle, "=", jobValue)
end
print(divider)
end

GetObjects

Instances
การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้กลับรายการ Instances ที่เกี่ยวข้องกับ URL เนื้อหาที่ให้ สามารถใช้เพื่อใส่เนื้อหาจากห้องสมุด Roblox ได้ ไม่สามารถใส่เนื้อหา Class.Sound

ในขณะที่ InsertService:LoadAsset() ไม่ต้องการให้มีสินทรัพย์เป็น "สินทรัพย์ที่ไว้วางใจ" Roblox

เนื่องจากสถานที่รักษาความปลอดภัยของฟังก์ชันนี้ มันสามารถใช้ได้เฉพาะโดยปลั๊กอินหรือแถบคําสั่ง สําหรับตัวเลือกที่สามารถใช้ใน Scripts และ

พารามิเตอร์

url: ContentId

ที่อยู่ URL เนื้อหาที่ให้


ส่งค่ากลับ

Instances

Class.Instance|Instances รายการที่เกี่ยวข้องกับ URL เนื้อหา

ตัวอย่างโค้ด

View a plugin's source code

local Selection = game:GetService("Selection")
local WEB_URL = "plugin URL here"
local function downloadPlugin(webURL)
-- get the content URL
local contentID = string.match(webURL, "%d+")
local contentURL = "rbxassetid://" .. contentID
-- download the objects
local objects = game:GetObjects(contentURL)
-- decide where to parent them
local selection = Selection:Get()
local parent = #selection == 1 and selection[1] or workspace
-- parent the objects
for _, object in pairs(objects) do
object.Parent = parent
end
end
downloadPlugin(WEB_URL)
Batch convert decal IDs

local IMAGES = {
-- Insert Decal web URLs in an array here (as strings)
}
-- open the dictionary
local outputString = "textures = {"
-- utility function to add a new entry to the dictionary (as a string)
local function addEntryToDictionary(original, new)
outputString = outputString
.. "\n" -- new line
.. " " -- indent
.. '["'
.. original
.. '"]' -- key
.. ' = "'
.. new
.. '",' -- value
end
print("Starting conversion")
for _, webURL in pairs(IMAGES) do
-- get the content URL
local contentID = string.match(webURL, "%d+")
local contentURL = "rbxassetid://" .. contentID
local success, result = pcall(function()
local objects = game:GetObjects(contentURL)
return objects[1].Texture
end)
if success then
addEntryToDictionary(webURL, result)
else
addEntryToDictionary(webURL, "Error downloading decal")
end
task.wait()
end
print("Conversion complete")
-- close the dictionary
outputString = outputString .. "\n}"
-- print the dictionary
print(outputString)

IsLoaded

ฟังก์ชันนี้จะกลับ true หากลูกค้าได้โหลดเกมเป็นครั้งแรก

เมื่อทุกอย่างเริ่มต้น Instances ในเกมเสร็จสิ้นแล้วจะส่งคืนค่า true

ยกเว้นพวกเขาจะเป็นลูกของ ReplicatedFirst , LocalScripts จะไม่รันเมื่อเกมยังไม่โหลด ส่วนตัวอย่างต่อไปนี้วิ่งจาก LocalScript ใน 1> Class.ReplicatedFirst


if not game:IsLoaded() then
game.Loaded:Wait()
end

ดูเพิ่มเติม:

  • DataModel.Loaded เหตุการณ์ที่เกิดขึ้นเมื่อเกมโหลดเสร็จ
  • Instance:WaitForChild() ระบบที่สามารถใช้เพื่อรอให้ Instance ตัวนั้นเองเพื่อวิดีโอเกมทั้งหมด

ส่งค่ากลับ

ว่าลูกค้าจบการโหลดเกมครั้งแรกหรือไม่

ตัวอย่างโค้ด

Custom Loading Screen

local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Create a basic loading screen
local screenGui = Instance.new("ScreenGui")
screenGui.IgnoreGuiInset = true
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.GothamMedium
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "Loading"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- Parent entire screen GUI to player GUI
screenGui.Parent = playerGui
-- Remove the default loading screen
ReplicatedFirst:RemoveDefaultLoadingScreen()
--wait(3) -- Optionally force screen to appear for a minimum number of seconds
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SetPlaceId

void
การรักษาความปลอดภัยของปลั๊กอิน

ฟังก์ชันนี้ตั้งค่า DataModel.PlaceId ของเกมไอน์สแตนซ์ไปยัง placeId ที่กำหนด

ต้องการการตั้งค่าทั้งสอง DataModel.PlaceId และ DataModel.GameId เพื่อเข้าถึง


local DataStoreService = game:GetService("DataStoreService")
-- เข้าถึง DataStore 'Data' โดยการตั้งค่า PlaceId เป็น placeId และ GameId เป็น universeId
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

พารามิเตอร์

placeId: number

รหัสที่ต้องการตั้ง DataModel.PlaceId


ส่งค่ากลับ

void

SetUniverseId

void
การรักษาความปลอดภัยของปลั๊กอิน

ฟังก์ชันนี้ตั้ง DataModel.GameId ของเกมตัวอย่างปัจจุบันไว้ที่ universeId ที่กำหนด นี่เป็นประโยชน์เมื่อทดสอบไฟล์ rbxl ที่ไม่ได้เผยแพร่บน Roblox เมื่อเป็นไฟล์ท้องถิ่น

เพื่อเข้าถึง DataStoreService ในสถานที่ที่ไม่เผยแพร่ ระหว่าง DataModel:SetUniverseId() และ DataModel:SetPlaceId() ต้องการตั้งค่า

พารามิเตอร์

universeId: number

รหัสที่ต้องการตั้ง DataModel.GameId


ส่งค่ากลับ

void

อีเวนต์

GraphicsQualityChangeRequest

เปิดเมื่อผู้ใช้ระบุว่าต้องการเพิ่มหรือลดคุณภาพของกราฟิกโดยใช้ปุ่มลัด

เหตุการณ์นี้จะเกิดขึ้นภายใต้เงื่อนไขต่อไปนี้:

  • หากผู้ใช้กด F10 เหตุการณ์นี้จะเกิดขึ้นด้วย betterQuality เป็นอาร์เจนต์
  • หากผู้ใช้กด ShiftF10 เหตุการณ์นี้จะเกิดขึ้นด้วย betterQuality ของ 0> false0> อาร์เจนต์

เหตุการณ์นี้ไม่ได้ให้ระดับคุณภาพกราฟิกปัจจุบันหรือครอบคลุมการอัปเดตทั้งหมดในคุณภาพกราฟิก ตัวอย่างเช่นการเปลี่ยนแปลงที่ทำในเมนูหลบหนีของ GUI ไม่ได้รับการลงทะเบียน

คุณสามารถดึงกลับค่า Enum.SavedQualitySetting ของผู้ใช้โดยใช้ UserGameSettings ด้วยสแน็ปช็อตต่อไปนี้:


UserSettings():GetService("UserGameSettings").SavedQualityLevel

หากการตั้งค่ากราฟิกของผู้ใช้ถูกตั้งค่าเป็นอัตโนมัติ Enum.SavedQualitySetting จะเป็น Automatic ปัจจุบันไม่มีวิธีที่ผู้พัฒนาจะได้รับระดับคุณภาพกราฟิกของผู้ใช

พารามิเตอร์

betterQuality: bool

ว่าผู้ใช้ได้ร้องขอการเพิ่ม ( จริง ) หรือการลด ( ปลอม ) ในคุณภาพกราฟิก


ตัวอย่างโค้ด

Handling User Changes in Graphics Quality

game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("The user has requested an increase in graphics quality!")
else
print("The user has requested a decrease in graphics quality!")
end
end)

Loaded

เหตุการณ์นี้จะเกิดขึ้นในตัวเล่นเมื่อเกมส์สิ้นสุดการโหลดครั้งแรก

เหตุการณ์ที่โหลดเกิดขึ้นเมื่อเกิดการเลียนแบบทั้งหมดในเกมที่เสร็จสิ้นแล้ว Instances ในเกม

ยกเว้นพวกเขาจะเป็นลูกของ ReplicatedFirst , LocalScripts จะไม่รันก่อนที่จะเกิดเหตุการณ์นี้ สแน็ปช็อตต่อไปนี้จาก LocalScript ใน 1> Class.ReplicatedFirst1>


if not game:IsLoaded() then
game.Loaded:Wait()
end

ดูเพิ่มเติม:

  • DataModel:IsLoaded() ระบบที่ให้คุณสามารถเลือกได้ว่าจะโหลดเกมหรือไม่
  • Instance:WaitForChild() ระบบที่สามารถใช้เพื่อรอให้ Instance ตัวเดียว ๆ ที่จะเลียนแบบโดยไม่ต้องรอให้เกมทั้งหมดโหลด