Instansi Mesin

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

API Cloud Engine memungkinkan Anda untuk menangani Instance objek dalam pengalaman Roblox Anda dari web.

Ketentuan Beta

API ini saat ini dalam beta dan memiliki batasan berikut:

  • Anda hanya dapat membaca dan menyetel ulang Script, LocalScript, dan ModuleScript objek.

  • Anda tidak dapat menyetujui skrip yang saat ini terbuka di Roblox Studio.

  • Anda tidak dapat menyetujui skrip yang merupakan bagian dari paket.

  • Anda hanya dapat menggunakan autentikasi kunci API. Buat kunci API dengan tambahkan tempat-alamat-universe sebagai sistem API.

    Anda harus menyebutkan pengalaman yang ingin Anda kunci untuk memiliki akses ke serta skala izin baca dan tulis yang diinginkan.

  • Anda harus memiliki sesi kolaboratif yang aktif untuk pengalaman yang ingin Anda akses.

  • Permintaan tubuh, seperti untuk UpdateInstance , dibatasi untuk 200 KB.

Daftar Anak-Anak

Daftar semua anak dari instansi tertentu dengan menentukan ID instansi dan memanggil metode Daftar Anak Instansi.


import requests
# Hasilkan di https://translate.roblox.com/dasher/credentials
apiKey = "<API_KEY>"
# Temukan di https://create.roblox.com/dashboards/creations di menu rebahan pengalaman
universeId = "<UNIVERSE_ID>"
# Temukan ID Tempat Mulai di https://create.roblox.com/dashboard/creations di menu rebahan pengalaman
placeId = "<PLACE_ID>"
# ID default untuk akar model data mana tempat
instanceId = "root"
# Permintaan kepala
apiKeyHeaderKey = "x-api-key"
# URL akhir untuk metode Daftar Anak
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)
# Peteliti jalan objek Operasi untuk mendapatkan Aplikasi instans nanti. Lihat bagian Polling for Results untuk lebih banyak informasi.
operationPath = response.json()['path']

Alih-alih hanya menuliskan anak-anak, jawaban mencakup objek Operation dengan端口 yang berbeda. Polling端口 ini untuk mengambil daftar anak yang sebenarnya. Sebuah contoh kode yang lebih lengkap terlihat seperti ini:


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)
# Petimbangkan jalan objek Operasi untuk digunakan dalam polling untuk sumber daya instans.
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Response:", response.status_code, response.text)

Tanggapan terakhir mungkin terlihat seperti ini:


{
"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": {}
}
},
...
]
}
}

Anda kemudian dapat mengulangi atas JSON untuk menemukan ID instans tertentu:


instances = response.json()['response']['instances']
replicatedStorageId = ""
for i in instances:
if i['engineInstance']['Name'] == "ReplicatedStorage":
replicatedStorageId = i['engineInstance']['Id']
if replicatedStorageId:
# Sekarang Anda memiliki ID instans dan dapat mengambil atau menyetel ulang.
else:
# The name wasn't found.

Skrip berisi beberapa informasi tambahan dalam objek Details, seperti jenis skrip, sumber, dan apakah mereka diaktifkan.

Mendapatkan Instansi

Metode ini mengembalikan satu Instansi .


import requests
# Hasilkan di https://translate.roblox.com/dasher/credentials
apiKey = "<API_KEY>"
# Temukan di https://create.roblox.com/dashboards/creations di menu rebahan pengalaman
universeId = "<UNIVERSE_ID>"
# Temukan ID Tempat Mulai di https://create.roblox.com/dashboard/creations di menu rebahan pengalaman
placeId = "<PLACE_ID>"
# ID default untuk akar model data mana tempat
instanceId = "<INSTANCE_ID>"
# Permintaan kepala
apiKeyHeaderKey = "x-api-key"
# URL akhir untuk metode Dapatkan Instansi
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)
# Petimbangkan jalan objek Operasi dari respons. Lihat bagian Polling for Results untuk lebih banyak informasi.
operationPath = response.json()['path']

Sama seperti metode List Instancia Anak-Anak, respons termasuk objek Operation yang Anda polling untuk mengambil kejadianaktual. Lihat Polling for Results untuk lebih banyak informasi.

Memperbarui Instans

Setelah Anda mendapatkan ID instansi yang sesuai, Anda dapat menyimpannya. Poll for results setelah membuat permintaan update pertama.


import json
import requests
# Hasilkan di https://translate.roblox.com/dasher/credentials
apiKey = "<API_KEY>"
# Temukan di https://create.roblox.com/dashboards/creations di menu rebahan pengalaman
universeId = "<UNIVERSE_ID>"
# Temukan ID Tempat Mulai di https://create.roblox.com/dashboard/creations di menu rebahan pengalaman
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# Permintaan kepala
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# URL akhir untuk metode Instans Update
updateInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
# Kunci 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)
# Parahkan jalan objek Operasi dari respons. Polling untuk hasil untuk dilakukan
# update.
operationPath = response.json()['path']

Menghitung untuk Hasil

Semua metode Instansi saat ini mengembalikan objek Operation alih-alih sumber daya yang Anda minta. Objek ini memungkinkan Anda untuk mengeksekusi operasi asli secara asinkron. Gunakan jalan objek Operation (termasuk dalam respons awal) untuk menyelidiki ketika sumber daya siap.

Anda dapat menggunakan berbagai strategi pemungutan suara, seperti menggunakan backoff eksponensial atau ketinggalan tetap di antara permintaan. Berikut adalah contoh polling setiap lima detik, hingga 10 kali.


import requests
import time
# Hasilkan di https://translate.roblox.com/dasher/credentials
apiKey = "<API_KEY>"
# Gunakan jalan Operasi dari permintaan awal Anda
# Mengambil bentuk "universes/<UNIVERSE_ID>/places/<PLACE_ID>/instances/< Instance_ID>/operasi/<
operationPath = "<OPERATION_PATH>"
# Mengumpulkan konstan
numberOfRetries = 10
retryPollingCadence = 5
# Permintaan kepala
apiKeyHeaderKey = "x-api-key"
# URL akhir untuk polling operasi berjalan panjang
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
# Kunci 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)

Toko Ramuan Demo

Google Sheets Demo Menunjukkan Anda untuk menyetujui naskah pengalaman dari web. Demo ini terdiri dari mengikuti:

  • Tempat yang tidak terkunci dengan UI miring yang menunjukkan berbagai ramuan dan harganya.
  • Sebuah file .ods yang Anda impor ke Google Sheets. Spreadsheets ini memungkinkan Anda untuk menentukan dan menyetel nilai untuk proporsi dalam pengalaman.
  • Kode untuk Google Apps Script yang membaca data dari Google Sheet dan menyetujui ReplicatedStorage > ItemList script di Pengalaman Potion Shop.

Mengatur Demo

  1. Pergi ke halaman Toko Ramuan Demo . Temukan menu berlebihan, dan kemudian Edit di Studio . Studio terbuka dengan salinan tempat.

  2. Klik FileSimpan ke Roblox dan isi informasi yang diperlukan untuk menyimpan Potion Shop Demo sebagai tempat default untuk pengalaman Anda. Tes UI untuk Potion Shop Demo. Anda akan melihat UI untuk Potion Shop Demo. Gunakan catatan nama, biaya, dan warna potion. Anda akan mengubahnya nanti menggunakan Open Cloud!

Mengatur halaman

  1. Unduh file spreadsheets Potion Shop.
  2. Pergi ke Google Sheets dan klik Spreadsheets Kosong .
  3. Di halaman yang muncul, klik File > Import , dan klik tab Upload .
  4. Seret file spreadsheets Toko Ramuan ke jendela pengunggah.
  5. Pilih Ganti spreadsheets dan kemudian Impor data .
  6. Di tab AppScript dari halaman, salin kode ke sel A1.
  7. Klik menu Ekstensi > Apps Script dan salin kode ke file Code.gs. Kemudian simpan proyek.
  8. Kembali di spreadsheets, pilih tab Toko Ramuan Pembaruan. Klik tombol Update Skrip, klik menu overlay, dan pilih Assign Script.
  9. Di jendela Assign script , masukkan UpdateScript dan klik OK .

Membuat Kunci API

  1. Pergi ke halaman Creator Hub Open Cloud API Keys dan klik Buat Kunci API .

  2. Isi formulir dengan informasi berikut.

    • Nama : PotionShop
    • Sistem API : Tambahkan sistem tempat-instans-alam-semua-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau-berbagai-atau
    • Alamat IP yang Diterima : Tambahkan 0.0.0.0/0 sebagai Alamat IP
    • Kadaluarsa : Tidak ada Kadaluarsa
    • Klik Simpan & Hasilkan Kunci dan kemudian Salinan Kunci ke Clipboard .
  3. Tempastekan kunci API ke sel API Key (D2) di tab Intro Google Sheet Anda.

Mendapatkan ID Alam Semesta dan Tempat

  1. Pergi ke halaman Karya Pencipta Hub, geser pada ubin pengalaman Toko Ramuan, dan klik tombol menu tumpukan.
  2. Pilih Salin ID Alam Semesta dan tempel ke sel Alam Semesta ID (E2) di tab Intro di Google Sheet Anda.
  3. Pilih Salin ID Tempat Mulai dan tempel ke sel Tempat ID (F2) di tab Intro di Google Sheet Anda.

Meng更新脚本值

  1. Di tab Toko Ramuan Pembaruan halaman, modifikasi nilai apa pun yang Anda suka dan klik tombol Update Skrip .
  2. Jika Google Sheets meminta Anda untuk ber授权, klik OK dan izinkan akun Anda untuk mengeksekuskan skrip.
  3. Di Studio, mainkan toko ramuan untuk melihat perubahan yang tercermin. Dari jendela Explorer , Anda juga dapat membuka script ReplicatedStorage > ItemList untuk memeriksa perubahan.