เอนจิ้น Open Cloud API ช่วยให้คุณจัดการ Instance วัตถุในประสบการณ์ Roblox ของคุณจากเว็บ
ข้อจํากัดเวลา
API เหล่านี้ขณะนี้อยู่ในเบต้าและมีข้อจํากัดต่อไปนี้:
คุณสามารถอ่านและปรับปรุง Script , LocalScript และ ModuleScript รวมถึงวัตถุ
คุณไม่สามารถอัปเดตสคริปต์ที่เปิดอยู่ใน Roblox Studio ได้
คุณไม่สามารถอัปเดตสคริปที่เป็นส่วนหนึ่งของ แพ็กเกจ
คุณสามารถใช้การรับรองด้วย API เท่านั้น สร้าง API key ด้วย จักรวาล-สถานที่จัดการในสถานที่เพิ่มเติม เป็นระบบ API
คุณต้องระบุประสบการณ์ที่คุณต้องการให้กุญแจมีสิทธิ์เข้าถึง รวมถึงขอบเขตการอ่านและเขียนที่ต้องการ
คุณต้องมีเซสชัน ร่วมมือ เปิดใช้งานสำหรับประสบการณ์ที่คุณต้องการเข้าถึง
คำขอตัวละคร, เช่น ปรับปรุงสถานที่ จำกัดไว้ที่ 200 KB
รายชื่อเด็ก
รายชื่อบุตรทั้งหมดของตัวอย่างเฉพาะโดยการระบุรหัสตัวอย่างและการเรียกวิธี รายชื่อบุตรของตัวอย่าง
import requests
# สร้างที่ https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# ค้นหาที่ https://create.roblox.com/dashboards/creations ในเมนูรวมของปุ่มออก
universeId = "<UNIVERSE_ID>"
# ค้นหารหัสสถานที่เริ่มต้นที่ https://create.roblox.com/dashboards/creations ในเมนูรวมของปุ่มท่อระบายน้ำ
placeId = "<PLACE_ID>"
# รหัสที่ตั้งปกติสำหรับรุ่นข้อมูลที่รวมของสถานที่ใด ๆ
instanceId = "root"
# รายละเอียดการส่งคำขอ
apiKeyHeaderKey = "x-api-key"
# รหัสสิ้นสุดสำหรับวิธีการรายชื่อบุตร
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)
# ประมวลผลเส้นทางของวัตถุการปฏิบัติการเพื่อให้ได้รับทรัพยากรอินสแตนซ์ในภายหลัง ดูส่วนตรวจสอบผลลัพธ์เพื่อขอข้อมูลเพิ่มเติม
operationPath = response.json()['path']
แทนที่จะเพียงแค่รายชื่อเด็ก, ตอบสนองรวมถึง Operation วัตถุด้วย端口ที่แตกต่างกัน โพลล์จุดนี้ เพื่อดึงรายการเด็กจริงออกมา ตัวอย่างโค้ดที่สมบูรณ์แบบดูเหมือนนี้:
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)
# วิเคราะห์เส้นทางของวัตถุการปฏิบัติการเพื่อใช้ในการโพลลิ่งสำหรับทรัพยากรอินสแตนซ์
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Response:", response.status_code, response.text)
การตอบกลับครั้งสุดท้ายอาจดูเหมือนนี้:
{
"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": {}
}
},
...
]
}
}
คุณสามารถทำซ้ำ JSON เพื่อค้นหารหัสรุ่นตัวอย่างเฉพาะ:
instances = response.json()['response']['instances']replicatedStorageId = ""for i in instances:if i['engineInstance']['Name'] == "ReplicatedStorage":replicatedStorageId = i['engineInstance']['Id']if replicatedStorageId:# ตอนนี้คุณมีรหัสสินค้าและสามารถรับหรือปรับปรุงได้else:# The name wasn't found.
สคริปต์มีข้อมูลเพิ่มเติมบางอย่างในวัตถุ Details เช่นประเภทสคริปต์ พิมพ์และว่าพวกเขาเปิดใช้งานหรือไม่
รับตัวอินสแตนซ์
วิธีนี้กลับ รายการเดียว
import requests
# สร้างที่ https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# ค้นหาที่ https://create.roblox.com/dashboards/creations ในเมนูรวมของปุ่มออก
universeId = "<UNIVERSE_ID>"
# ค้นหารหัสสถานที่เริ่มต้นที่ https://create.roblox.com/dashboards/creations ในเมนูรวมของปุ่มท่อระบายน้ำ
placeId = "<PLACE_ID>"
# รหัสที่ตั้งปกติสำหรับรุ่นข้อมูลที่รวมของสถานที่ใด ๆ
instanceId = "<INSTANCE_ID>"
# รายละเอียดการส่งคำขอ
apiKeyHeaderKey = "x-api-key"
# รหัสโอนสิ้นสุดสำหรับวิธีรับตัวอย่าง
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)
# วิเคราะห์เส้นทางของวัตถุการปฏิบัติการจากการตอบกลับ ดูส่วน "การสำรวจสำหรับผลลัพธ์" เพื่อขอข้อมูลเพิ่มเติม
operationPath = response.json()['path']
เหมือนวิธี List Instanced Children ตอบสนองรวมถึงวัตถุ Operation อินสแตนซ์ดูที่ โพลลิ่งเพื่อผลลัพธ์ สำหรับข้อมูลเพิ่มเติม
การปรับปรุงสถานที่
หลังจากที่คุณได้รับ ID ของเครื่องมือที่เหมาะสมแล้วคุณสามารถปรับปรุงได้ โพลสำหรับผลลัพธ์ หลังจากสร้างคำขอปรับปรุงครั้งแรก
import json
import requests
# สร้างที่ https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# ค้นหาที่ https://create.roblox.com/dashboards/creations ในเมนูรวมของปุ่มออก
universeId = "<UNIVERSE_ID>"
# ค้นหารหัสสถานที่เริ่มต้นที่ https://create.roblox.com/dashboards/creations ในเมนูรวมของปุ่มท่อระบายน้ำ
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# รายละเอียดการส่งคำขอ
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# รหัส URL สิ้นสุดสำหรับวิธีการอัปเดตรุ่น
updateInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
# รหัส 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)
# ประมวลผลเส้นทางของวัตถุการปฏิบัติการจากการตอบสนอง โพลเพื่อรับผลลัพธ์เพื่อดำเนินการ
# การอัปเดต
operationPath = response.json()['path']
การโหวตผล
วิธี ทั้งหมด ของ Operation ในปัจจุบันกลับมาเป็นวัตถุ Operation แทนที่จะเป็นทรัพยากรที่คุณขอ
คุณสามารถใช้กลยุทธ์การโหวตต่างๆ เช่นการใช้ค่าควบคุมอัตราการเร่งหรือความแลคที่ติดต่อกันในขณะที่ร้องขอ ตัวอย่างต่อไปจะทำทุก 5 วินาที, ถึง 10 ครั้ง
import requests
import time
# สร้างที่ https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# ใช้เส้นทางการดำเนินงานจากคำขอเริ่มต้นของคุณ
# มีรูปร่างของ "จักรวาล/<UNIVERSE_ID>/places/<PLACE_ID>/instances/< Instance_ID>/ operations/< OPERATION_ID>"
operationPath = "<OPERATION_PATH>"
# โพลตคอนสตรัคชัน
numberOfRetries = 10
retryPollingCadence = 5
# รายละเอียดการส่งคำขอ
apiKeyHeaderKey = "x-api-key"
# รหัสสิ้นสุดสำหรับการโพลลิงการดำเนินงานเป็นเวลานาน
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
# รหัส 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)
ร้านขายยา สาธิต
การแสดงผลลัพธ์ของ Google Sheets ในร้านค้ายาแสดงให้เห็นวิธีการปรับปรุงสคริปของประสบการณ์จากเว็บ กำลังติดตาม:
- สถานที่ที่ปลดล็อคไม่ได้ด้วย UI ตลกที่แสดงคุณยาต่างๆ และราคาของพวกเขา
- ไฟล์ .ods ที่คุณนำเข้าไปยัง Google Sheets ของคุณ สเปรดชีตนี้ช่วยให้คุณกำหนดและปรับปรุงค่าสำหรับสมบัติภายในประสบการณ์
- รหัสสำหรับ Google Apps Script ที่อ่านข้อมูลจาก Google Sheet และปรับปรุง ReplicatedStorage > ItemList สคริปในประสบการณ์ Potion Shop
การตั้งค่า Demo
ไปที่หน้า Potion Shop Demo ค้นพบ คลิกที่เมนูเหยียดระเบิด แล้ว แก้ไขใน Studio Studio เปิดด้วยคัดลอกสถานที่
คลิก ไฟล์ → บันทึกไปยัง Roblox และกรอกข้อมูลที่จำเป็นเพื่อบันทึก Potion Shop Demo ให้เป็นสถานที่ปกติสำหรับประสบการณ์ของคุณ ทดสอบประสบการณ์ คุณจะ
การตั้งค่าแผ่น
- ดาวน์โหลด ไฟล์แผ่นขยายตัวร้านค้ายา
- ไปที่ Google Sheets และคลิก แผ่นกระดาษว่างเปล่า 3. ในแผ่นที่ปรากฏขึ้น คลิก ไฟล์ > นำเข้า และคลิกที่ อัปโหลด แท็บ
- ลากแผ่นขายยาไปยังหน้าต่างการอัปโหลด
- เลือก แทนแผ่นกระจาย แล้ว นำเข้าข้อมูล 6. ในแท็บ AppScript ของหน้าเอกสาร คัดลอกโค้ดในเซลล์ A1
- คลิกเมนู Extensions > Apps Script แล้ววางโค้ดใน Code.gs ไฟล์ จากนั้นบันทึกโครงการ
- กลับสู่แผ่นกระจายเสียง, เลือกแท็บ ร้านค้ายาอัปเดต. คลิกปุ่ม เรียกร้องสคริปท์ และเลือก เรียกร้องสคริปท์ .
- ใน หน้าต่างจัดการสคริปท์ ใส่ UpdateScript และคลิก ตกลง
คีย์ API
- ไปที่หน้า เปิดให้ใช้งาน API ของ Creator Hub และคลิก สร้างรหัส API
- กรอกแบบฟอร์มด้วยข้อมูลต่อไปนี้
- ชื่อ: : PotionShop
- ระบบ API : เพิ่มระบบ place-instances จักรวาล ในระบบ API ของคุณ เพิ่มประสบการณ์ร้านขายยาของคุณในระบบ สำหรับ การดำเนินการประสบการณ์ ให้การอ่านและเขียนการเขียนแบบอักษร
- อนุญาต IP ที่ได้รับการยอมรับ : เพิ่ม 0.0.0.0/0 เป็นที่อยู่ IP
- หมดอายุ : ไม่มีหมดอายุ
- คลิก บันทึกและสร้างรหัส แล้ว คัดลอกรหัสไปยังกระดาษ
- วางรหัส API ในเซลล์ API Key (D2) ในแท็บเริ่มต้นของ Google Sheet ของคุณ
รับรหัสจักรวาลและสถานที่
- ไปที่หน้า ผลงานของผู้สร้าง Hub แล้ววางเมาส์ไว้บนพื้นผลประสบการณ์ของร้านค้าน้ำ แล้วคลิกปุ่มเมนูเหนือการเลือก
- เลือก คัดลอกรหัสจักรวาล และวางลงในเซลล์ จักรวาล ID (E2) ในแท็บ การแนะนำ ของ Google Sheet ของคุณ
- เลือก คัดลอกรหัสสถานที่เริ่มต้นของคุณ และวางในเซลล์ สถานที่ ID (F2) ในแท็บ เริ่ม ของ Google Sheet ของคุณ
การปรับปรุงค่าสคริปต์
- ในแท็บ Update Potion Shop ของหน้าเวร์ดี้ เปลี่ยนแป้งค์ใด ๆ ที่คุณต้องการและคลิกปุ่ม Update Script 2. หาก Google Sheets ขอให้คุณเพิ่มอẩานเพื่ออนุญาตให้ใช้สคริปต์นี้ คลิก ตกลง และอนุญาตให้บัญชีของคุณประมวลผลสคริปต์นี้
- ใน Studio คุณสามารถทดสอบ Potion Shop เพื่อดูการเปลี่ยนแปลงที่สะท้อนได้ จากหน้าต่าง Explorer คุณสามารถเปิดสคริปต์ ReplicatedStorage > ItemList เพื่อตรวจสอบการเปลี่ยนแปลง