ตัวอย่างเครื่องยนต์

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

คลาวด์ API เปิดเครื่องทำให้คุณสามารถจัดการวัตถุ Instance ในประสบการณ์ Roblox ของคุณจากเว็บได้

ข้อจำกัดเบต้า

API เหล่านี้อยู่ในช่วงเบต้าและมีข้อจำกัดดังต่อไปนี้:

  • คุณสามารถอ่านและอัปเดตวัตถุ Script , LocalScript และ ModuleScript ได้เท่านั้น

  • คุณไม่สามารถอัปเดตสคริปต์ที่เปิดอยู่ใน Roblox Studio ได้

  • คุณไม่สามารถอัปเดตสคริปต์ที่เป็นส่วนหนึ่งของแพคเกจ ได้

  • คุณสามารถใช้การตรวจสอบรหัส API เท่านั้น สร้าง รหัส API ด้วย instances สถานที่จักรวาล ที่เพิ่มเป็นระบบ API

    คุณต้องระบุประสบการณ์ที่คุณต้องการให้กุญแจมีสิทธิ์เข้าถึงรวมถึงขอบเขตการอ่านและเขียนที่ต้องการ

  • คุณต้องมีเซสชัน ร่วมกัน เปิดใช้งานสำหรับประสบการณ์ที่คุณต้องการเข้าถึง

  • ร่างคำขอ เช่น เพื่อ อัปเดตตัวอย่าง จะถูกจำกัดเป็น 200 KB

รายการเด็ก

ระบุ ID ตัวอย่างและเรียกวิธี รายการเด็กตัวอย่างของตัวอย่าง เพื่อระบุเด็กทั้งหมดของตัวอย่างเฉพาะ


import requests
# สร้างที่ https://create.roblox.com/ashboard/credentials
apiKey = "<API_KEY>"
# ค้นหาที่ https://create.roblox.com/ashboard/creations ในเมนูเหลื่อมของปุ่มประสบการณ์
universeId = "<UNIVERSE_ID>"
# ค้นหา ID ตำแหน่งเริ่มต้นที่ https://create.roblox.com/dashboard/creations ในเมนูเหลื่อมของปุ่มประสบการณ์
placeId = "<PLACE_ID>"
# ID เริ่มต้นสำหรับรากของโมเดลข้อมูลใดๆ สถานที่
instanceId = "root"
# ขอหัวข้อเฮดเดอร์
apiKeyHeaderKey = "x-api-key"
# URL จุดจบสำหรับวิธีการ 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)
# วิเคราะห์เส้นทางของวัตถุการดำเนินการเพื่อรับทรัพยากรอินสแตนซ์ในภายหลัง ดูส่วนการสำรวจเพื่อรับข้อมูลเพิ่มเติม
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 เพื่อค้นหา ID ตัวอย่างเฉพาะ:


instances = response.json()['response']['instances']
replicatedStorageId = ""
for i in instances:
if i['engineInstance']['Name'] == "ReplicatedStorage":
replicatedStorageId = i['engineInstance']['Id']
if replicatedStorageId:
# ตอนนี้คุณมี ID ตัวอย่างและสามารถรับหรืออัปเดตได้
else:
# The name wasn't found.

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

อินสแตนซ์

วิธีนี้จะคืน ตัวอย่างเดียว


import requests
# สร้างที่ https://create.roblox.com/ashboard/credentials
apiKey = "<API_KEY>"
# ค้นหาที่ https://create.roblox.com/ashboard/creations ในเมนูเหลื่อมของปุ่มประสบการณ์
universeId = "<UNIVERSE_ID>"
# ค้นหา ID ตำแหน่งเริ่มต้นที่ https://create.roblox.com/dashboard/creations ในเมนูเหลื่อมของปุ่มประสบการณ์
placeId = "<PLACE_ID>"
# ID เริ่มต้นสำหรับรากของโมเดลข้อมูลใดๆ สถานที่
instanceId = "<INSTANCE_ID>"
# ขอหัวข้อเฮดเดอร์
apiKeyHeaderKey = "x-api-key"
# URL จุดสิ้นสุดสำหรับวิธีรับตัวอย่างของ Get Instance
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 Instance Children คำตอบรวมถึงวัตถุ Operation อินสแตนซ์โพลเพื่อดูผลลัพธ์ สำหรับข้อมูลเพิ่มเติม

อัปเดตตัวอย่าง

หลังจากที่คุณได้รับ ID ตัวอย่างที่เหมาะสมแล้ว คุณสามารถอัปเดตได้ โหวตสำหรับผลลัพธ์ หลังจากทำคำขออัปเดตเบื้องต้น


import json
import requests
# สร้างที่ https://create.roblox.com/ashboard/credentials
apiKey = "<API_KEY>"
# ค้นหาที่ https://create.roblox.com/ashboard/creations ในเมนูเหลื่อมของปุ่มประสบการณ์
universeId = "<UNIVERSE_ID>"
# ค้นหา ID ตำแหน่งเริ่มต้นที่ https://create.roblox.com/dashboard/creations ในเมนูเหลื่อมของปุ่มประสบการณ์
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# ขอหัวข้อเฮดเดอร์
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# URL จุดสิ้นสุดสำหรับวิธีการ Update Instance
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 (รวมอยู่ในคำตอบเบื้องต้น) เพื่อสอบถามเมื่อทรัพยากรพร้อม

คุณสามารถใช้กลยุทธ์การโหวตที่หลากหลาย เช่น ใช้การถอยร่นทวีคูณหรือความล่าช้าคงที่ระหว่างคำขอได้ตัวอย่างต่อไปจะสำรวจทุกๆ ห้าวินาทีจนถึง 10 ครั้ง


import requests
import time
# สร้างที่ https://create.roblox.com/ashboard/credentials
apiKey = "<API_KEY>"
# ใช้เส้นทางการดำเนินการจากคำขอเริ่มต้นของคุณ
# ใช้รูปแบบ "จักรวาล/<UNIVERSE_ID>/สถานที่/<PLACE_ID>/ตัวอย่าง/<INSTANCE_ID>/การดำเนินการ/<OPERATION_ID>"
operationPath = "<OPERATION_PATH>"
# คงตัวโพลล์
numberOfRetries = 10
retryPollingCadence = 5
# ขอหัวข้อเฮดเดอร์
apiKeyHeaderKey = "x-api-key"
# URL จุดสิ้นสุดสำหรับการสำรวจการดำเนินการที่ยาวนาน
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 ที่อ่านข้อมูลจากแผ่น Google Sheet และอัปเดตสคริปต์ ReplicatedStorage > ItemList ในประสบการณ์ร้านยาเพื่อสุขภาพ

ตั้งค่าการสาธิต

  1. ไปที่หน้า การสาธิตร้านขายยา ค้นพบคลิกที่เมนูเหลือเกินแล้วแก้ไข ในสตูดิโอ สตูดิโอเปิดด้วยสำเนาของสถานที่

  2. คลิก ไฟล์บันทึกไปยัง Roblox และกรอกข้อมูลที่จำเป็นเพื่อบันทึกร้านค้ายาเป็นสถานที่เริ่มต้นสำหรับประสบการณ์ของคุณทดสอบประสบการณ์คุณควรเห็น UI สำหรับการสาธิตร้านยาทำหมายเหตุเกี่ยวกับชื่อ ค่าใช้จ่าย และสีของยาคุณจะเปลี่ยนพวกเขาในภายหลังโดยใช้ Open Cloud!

ตั้งค่าแผ่น

  1. ดาวน์โหลด ไฟล์แผ่นกระจายร้านยา
  2. ไปที่ Google Sheets และคลิก แผ่นงานว่างเปล่า 3. ในแผ่นที่ปรากฏให้คลิก ไฟล์ > นำเข้า และคลิกที่แท็บ อัปโหลด 4. ลากไฟล์แผ่นงานร้านขายยาเข้าสู่หน้าต่างอัปโหลด
  3. เลือก แทนการแพร่กระจายแผ่นงาน แล้ว นำเข้าข้อมูล 6. ในแท็บ AppScript ของแผ่นงาน คัดลอกโค้ดในเซลล์ A1
  4. คลิกที่เมนู การขยายเวลา>สคริปต์แอป และวางโค้ดลงในไฟล์ Code.gs จากนั้นบันทึกโครงการ
  5. กลับไปที่แผ่นงานแล้วเลือกแท็บ ร้านขายยาอัปเดต คลิกปุ่ม อัปเดตสคริปต์ คลิกเมนูเหลื่อมและเลือก กำหนดสคริปต์ 9. ในหน้าต่าง กำหนดสคริปต์ ใส่ UpdateScript และคลิก โอเค

สร้างคีย์ API

  1. ไปที่หน้า Creator Hub Open Cloud API Keys และคลิก สร้างคีย์ API

  2. กรอกแบบฟอร์มด้วยข้อมูลต่อไปนี้

    • ชื่อ : PotionShop
    • ระบบ API : เพิ่มระบบ API universal-place-instances เพิ่มประสบการณ์ร้านขายยาของคุณให้กับระบบสำหรับ การดำเนินการประสบการณ์ เพิ่มการเข้าถึงอ่านและเขียน
    • ที่อยู่ IP ที่ยอมรับ : เพิ่ม 0.0.0.0/0 เป็นที่อยู่ IP
    • การหมดอายุ : ไม่มีการหมดอายุ
    • คลิก บันทึกและสร้างกุญแจ แล้ว คัดลอกกุญแจไปยังคลิปบอร์ด
  3. วางคีย์ API ลงในเซลล์คีย์ API (D2) บนแท็บ Intro ของแผ่น Google Sheet ของคุณ

รับจักรวาลและรหัสสถานที่

  1. ไปที่หน้า Creator Hub Creations เลื่อนเหนือปุ่มประสบการณ์ของร้านค้ายา และคลิกที่เมนูเหลือเกิน
  2. เลือก คัดลอก ID จักรวาล และวางลงในเซลล์ ID จักรวาล (E2) ในแท็บ Intro ของแผ่น Google Sheet ของคุณ
  3. เลือก คัดลอก ID จุดเริ่มต้นของสถานที่ และวางลงในเซลล์ ID สถานที่ (F2) ในแท็บ Intro ของแผ่น Google Sheet ของคุณ

อัปเดตค่าสคริปต์

  1. ในแท็บ ร้านขายยาอัปเดต ของแผ่นกระดาษ เปลี่ยนค่าใดก็ได้ที่คุณต้องการและคลิกที่ปุ่ม อัปเดตสคริปต์ 2. หาก Google Sheets แจ้งให้คุณอนุญาต คลิก โอเค และอนุญาตให้บัญชีของคุณดำเนินการตามสคริปต์
  2. ในสตูดิโอ ทดสอบร้านยาเพื่อดูการเปลี่ยนแปลงที่สะท้อนออกมาจากหน้าต่าง สํารวจ คุณสามารถเปิดสคริปต์ ReplicatedStorage > ItemList เพื่อตรวจสอบการเปลี่ยนแปลงได้