Các Instant Engine

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Các API mở đám mây của Engine cho phép bạn quản lý Instance đối tượng trong trải nghiệm Roblox của bạn từ trang web.

Hạn chế beta

Các API này hiện đang ở trong giai đoạn beta và có các hạn chế sau:

  • Bạn chỉ có thể đọc và cập nhật Script, LocalScriptModuleScript những thống kê.

  • Bạn không thể cập nhật các script hiện đang mở ở Roblox Studio.

  • Bạn không thể cập nhật các script là một phần của một gói .

  • Bạn chỉ có thể sử dụng mật mã API. Tạo một mật mã API với ứng dụng thế giới-địa-điểm được thêm vào như một hệ thống API.

    Bạn phải spécifi các trải nghiệm bạn muốn có quyền truy cập cũng như các khu vực đọc và viết quyền được quy định.

  • Bạn phải có một hội nhóm phiên hẹn được kích hoạt cho trải nghiệm bạn muốn truy cập.

  • Yêu cầu cơ thể, chẳng hạn như để Cập nhật Instancia , được giới hạn 200 KB.

Danh sách Trẻ em

Danh sách tất cả các con của một instância cụ thể bằng cách định nghĩa một ID instância và gọi phương thức Danh sách instância con.


import requests
# Tạo tại https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Tìm kiếm tại https://create.roblox.com/dashboards/creations trong menu trình phát của một hạng nhân
universeId = "<UNIVERSE_ID>"
# Tìm ID Bắt đầu tại https://create.roblox.com/dashboard/creations trong menu trào phúng của một thẻ trải nghiệm
placeId = "<PLACE_ID>"
# ID mặc định cho rễ của bất kỳ địa điểmhình dữ liệu nào
instanceId = "root"
# Yêu cầu đầu
apiKeyHeaderKey = "x-api-key"
# Endpoint URL cho phương thức List Children
listChildrenUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s:listChildren"
def ListChildren():
url = listChildrenUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
response = ListChildren()
print("Operation Results:", response.status_code, response.text)
# Phân tích con đường của đối tượng Hành động để sau đó nhận tài nguyên Instância. Xem mục Trao đổi kết quả để biết thêm thông tin.
operationPath = response.json()['path']

Thay vì chỉ đơn giản là danh sách con cái, đáp trả bao gồm một Operation đối tượng với một đầu cuối khác. Poll this endpoint để tạm thời lấy lại danh sách con cái thực tế. Một ví dụ mã hoàn chỉnh hơn nhìn giống như thế này:


import requests
import time
apiKey = "<API_KEY>"
universeId = "<UNIVERSE_ID>"
placeId = "<PLACE_ID>"
instanceId = "root"
apiKeyHeaderKey = "x-api-key"
listChildrenUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s:listChildren"
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
numberOfRetries = 10
retryPollingCadence = 5
doneJSONKey = "done"
def ListChildren():
url = listChildrenUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
def GetOperation(operationPath):
url = getOperationUrl % (operationPath)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
def PollForResults(operationPath):
currentRetries = 0
while (currentRetries < numberOfRetries):
time.sleep(retryPollingCadence)
results = GetOperation(operationPath)
currentRetries += 1
if (results.status_code != 200 or results.json()[doneJSONKey]):
return results
response = ListChildren()
print("Operation Results:", response.status_code, response.text)
# Phân tích con đường của đối tượng Hành động để sử dụng trong khảo sát nguồn tài nguyên.
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Response:", response.status_code, response.text)

Cuộc phản hồi cuối cùng có thể trông như thế này:


{
"path": "universes/1234567890/places/98765432109/instances/root/operations/a1a2a3a4-a1a2-a1a2-a1a2-a1a2a3a4a5a6",
"done": true,
"response": {
"@type": "type.googleapis.com/roblox.open_cloud.cloud.v2.ListInstanceChildrenResponse",
"instances": [
{
"path": "universes/1234567890/places/98765432109/instances/b1b2b3b4-b1b2-b1b2-b1b2-b1b2b3b4b5b6",
"hasChildren": true,
"engineInstance": {
"Id": "b1b2b3b4-b1b2-b1b2-b1b2-b1b2b3b4b5b6",
"Parent": "a1a2a3a4-a1a2-a1a2-a1a2-a1a2a3a4a5a6",
"Name": "Workspace",
"Details": {}
}
},
...
]
}
}

Bạn có thể sau đó lặp lại JSON để tìm một ID instância cụ thể:


instances = response.json()['response']['instances']
replicatedStorageId = ""
for i in instances:
if i['engineInstance']['Name'] == "ReplicatedStorage":
replicatedStorageId = i['engineInstance']['Id']
if replicatedStorageId:
# Bây giờ bạn có một ID instância và có thể nhận hoặc cập nhật nó.
else:
# The name wasn't found.

Scripts có một số thông tin bổ sung trong đối tượng Details, chẳng hạn như loại đánh máy, nguồn và có được bật.

Nhận một Instância

Phương thức này trả về một mặt đơn .


import requests
# Tạo tại https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Tìm kiếm tại https://create.roblox.com/dashboards/creations trong menu trình phát của một hạng nhân
universeId = "<UNIVERSE_ID>"
# Tìm ID Bắt đầu tại https://create.roblox.com/dashboard/creations trong menu trào phúng của một thẻ trải nghiệm
placeId = "<PLACE_ID>"
# ID mặc định cho rễ của bất kỳ địa điểmhình dữ liệu nào
instanceId = "<INSTANCE_ID>"
# Yêu cầu đầu
apiKeyHeaderKey = "x-api-key"
# Endpoint URL cho phương thức Nhận Instanz
getInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
def GetInstance():
url = getInstanceUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey}
return requests.get(url, headers = headerData)
response = GetInstance()
print("Response:", response.status_code, response.text)
# Phân tích con đường của đối tượng Hành động từ kết quả. Xem mục Trao đổi kết quả để biết thêm thông tin.
operationPath = response.json()['path']

Giống như phương thức List Instances Children, phản hồi bao gồm một Operation đối ví dụ / trường hợpmà bạn khảo sát để lấy lại instância thực tế. Xem Khảo sát cho Kết quả để biết thêm thông tin.

Cập nhật Instances

Sau khi bạn có được một ID phù hợp, bạn có thể cập nhật nó. Khảo sát kết quả sau khi thực hiện yêu cầu cập nhật ban đầu.


import json
import requests
# Tạo tại https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Tìm kiếm tại https://create.roblox.com/dashboards/creations trong menu trình phát của một hạng nhân
universeId = "<UNIVERSE_ID>"
# Tìm ID Bắt đầu tại https://create.roblox.com/dashboard/creations trong menu trào phúng của một thẻ trải nghiệm
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# Yêu cầu đầu
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# Endpoint URL cho phương pháp Cập Nhật Instanz
updateInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
# Chìa khóa JSON
detailsJSONKey = "Details"
engineInstanceJSONKey = "engineInstance"
def GeneratePostData():
propertiesDict = {propertyName: propertyValue}
detailsDict = {instanceType: propertiesDict}
instanceDict = {detailsJSONKey: detailsDict}
outerDict = {engineInstanceJSONKey: instanceDict}
return json.dumps(outerDict)
def UpdateInstance(postData):
url = updateInstanceUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey,
contentTypeHeaderKey: contentTypeHeaderValue}
return requests.patch(url, headers = headerData, data = postData)
postData = GeneratePostData()
response = UpdateInstance(postData)
print("Response:", response.status_code, response.text)
# Tiến hành phân tích con đường của đối tượng Hành động từ kết quả để thực hiện
# cập nhật.
operationPath = response.json()['path']

Khảo sát kết quả

Tất cả các phương pháp hiện tại Instanti đều trả về một Operation đối tượng thay vì nguồn tài nguyên bạn yêu cầu. Đối tượng này cho phép bạn thực hiện một cách asynchronous Operation đối tượng thay vì nguồn tài nguyên bạ

Bạn có thể sử dụng một loạt các chiến lược khảo sát, chẳng hạn như sử dụng một hàm trở lại hoặc một độ trễ cố định giữa các yêu cầu. Các ví dụ sau đây thực hiện mỗi năm năm, lên đến 10 lần.


import requests
import time
# Tạo tại https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Sử dụng con đường Operation từ yêu cầu ban đầu của bạn
# Tiến hành theo hình dạng "các vũ trụ/<UNIVERSE_ID>/places/<PLACE_ID>/instances/< Instance_ID>/ operations/<操作_ID>"
operationPath = "<OPERATION_PATH>"
# Thông số khảo sát
numberOfRetries = 10
retryPollingCadence = 5
# Yêu cầu đầu
apiKeyHeaderKey = "x-api-key"
# Địa chỉ URL kết thúc cho cuộc khảo sát dữ liệu lớn
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
# Chìa khóa JSON
doneJSONKey = "done"
def GetOperation(operationPath):
url = getOperationUrl % (operationPath)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
def PollForResults(operationPath):
currentRetries = 0
while (currentRetries < numberOfRetries):
time.sleep(retryPollingCadence)
results = GetOperation(operationPath)
currentRetries += 1
if (results.status_code != 200 or results.json()[doneJSONKey]):
return results
response = PollForResults(operationPath)
print("Response:", response.status_code, response.text)

Cửa hàng thuốc Demo

Cuộn sách Google Sheets dưới đây cho bạn thấy cách cập nhật một tập lệnh trong kinh nghiệm từ trang web. Cuộn sách bao gồm các bước sau theo dõi:

  • Một nơi không bị bản quyền khóa với một giao diện người dùng giả mạo hiển thị các loại thuốc và giá của chúng.
  • Một tập tin .ods bạn nhập vào Google Sheets. This spreadsheet cho phép bạn xác định và cập nhật giá trị cho các thuộc tính trong trải nghiệm.
  • Mã cho một Google Apps Script đọc dữ liệu từ Google Sheet và cập nhật script ReplicatedStorage > ItemList trong trải nghiệm Potion Shop.

Tùy chỉnh Demo

  1. Đi đến trang Potion Shop Demo Khám phá. Nhấp vào menu trên cùng, sau đó Chỉnh sửa trong Studio . Studio được mở với một bản sao của địa điểmđó.

  2. Nhấp vào Tập tinLưu vào Roblox và hoàn thành các thông tin cần thiết để lưu Potion Shop Demo nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơi nơ

Tạo một Bảng

  1. Tải bản thông báo của Potion Shop spreadsheets.
  2. Đi đến Google Sheets và nhấp vào Blank Spreadsheet .
  3. Trong trang xuất hiện, hãy nhấp vào File > Import và nhấp vào tab Upload .
  4. Kéo tập tin bảng dữ liệu Cửa hàng Thuốc tới cửa sổ tải.
  5. Chọn Thay thế bảng tính và sau đó Nhập dữ liệu .
  6. Trong trang AppScript của cuộn sách, sao chép mã trong tế bào A1.
  7. Nhấp vào menu Extensions > Apps Script và nhập mã vào file Code.gs . Sau đó lưu dự án.
  8. Trở về trang bảng tính, chọn tab Cập nhật Cửa hàng Thuốc. Click the Cập nhật Script button, click the overflow menu, and select Gán script.
  9. Trong cửa sổ Giao nhiệm vụ script , nhập UpdateScript và nhấp vào OK .

Tạo một Chìa khóa API

  1. Đi đến trang Creator Hub Open Cloud API Keys và nhấp vào Tạo mã API .

  2. Hoàn thành biểu mẫu với các thông tin sau đây.

    • Tên : PotionShop
    • API System : Thêm các ứng dụng-thế giới-ảo tưởng API. Thêm trải nghiệm Cửa hàng Thuốc của bạn vào hệ thống. Đối với Trải nghiệm Oper作션 , thêm quyền truy cập đọc và viết.
    • Địa chỉ IP đã được chấp nhận : Thêm 0.0.0.0/0 như một địa chỉ IP
    • Hết hạn : Không hết hạn
    • Nhấp vào Lưu và tạo mật mã và sau đó sao chép mật mã vào bộ nhớ剪贴 .
  3. Sao chép chìa khóa API vào tế bào Chìa khóa API (D2) trên trang Intro của Google Sheet của bạn.

Nhận ID Vũ Trụ và Địa Điểm

  1. Vào trang Sáng tạo Hub Creator, hover over the Potion Shop's experience tile, and click the menu chảy.
  2. Chọn sao chép ID Universe và dán nó vào Universe ID cell (E2) trên trang Intro của Google Sheet của bạn.
  3. Chọn sao chép ID bắt đầu có và dán nó vào ô nơi ID trên trang Intro của Google Sheet của bạn.

Cập nhật giá trị từ script

  1. Ở trên trang Cập nhật Cửa hàng Thuốc , modify any values you'd like and click the Cập nhật Script button.
  2. Nếu Google Sheets yêu cầu bạn để cho phép, hãy nhấp vào OK và cho phép tài khoản của bạn chạy script.
  3. Trong Studio, thử nghiệm Cửa hàng Thuốc để xem bất kỳ thay đổi phản ánh nào. Từ cửa sổ Explorer , bạn cũng có thể mở ReplicatedStorage > ItemList script để kiểm tra các thay đổi.