Motor örnekleri

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Motor Açık Bulut API'leri, Roblox deneyimlerinizde web'den Instance nesneleri yönetmenizi sağlar.

Beta sınırları

Bu API'ler şu anda beta aşamasında ve aşağıdaki kısıtlamalara sahipler:

  • Sadece Script , LocalScript ve ModuleScript nesnelerini okuyup güncelleyebilirsiniz.

  • Roblox Studio'da şu anda açık olan kodları güncellemezsiniz.

  • Bir paketin parçası olan kodları güncellemezsiniz.

  • Sadece API anahtar doğrulamasını kullanabilirsiniz. Bir API sistemi olarak evrensel yer örnekleri eklenen bir API anahtarı oluşturun.

    Anahtarın erişebileceği deneyimleri ve istenen okuma ve yazma izin alanlarını belirtmelisiniz.

  • Erişmek istediğiniz deneyim için etkinleştirilmiş bir işbirliği oturumuna sahip olmalısınız.

  • Güncelleme örneği gibi istek gövdeleri, 200 KB'ye sınırlıdır.

Çocukları listele

Belirli bir örneğin tüm çocuklarını listelemek için bir örnek kimliği belirtin ve List Institute Children yöntemini çağırın.


import requests
# https://create.roblox.com/dashboard/credentials adresinde oluştur
apiKey = "<API_KEY>"
# Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde bulun
universeId = "<UNIVERSE_ID>"
# Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde Başlangıç ​​Yeri Kimliği bulun
placeId = "<PLACE_ID>"
# Herhangi bir dünyaveri modelinin kökü için varsayılan kimlik
instanceId = "root"
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Liste Çocukları yöntemi için son nokta URL'si
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)
# Operasyon nesnesinin yolunu daha sonra İstemci kaynağı almak için analiz edin. Sonuçlar için Araştırma bölümüne daha fazla bilgi göz atın.
operationPath = response.json()['path']

Sadece çocukları listelemek yerine, yanıt farklı bir uç noktaya sahip bir Operation nesne içerir.Bu uç noktayı asenkronik olarak çocukların gerçek listesini almak için oylayın çocukların gerçek listesini almak için asenkronik olarak oylayınDaha kapsamlı bir kod örneği şöyle görünür:


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)
# İstemci kaynağı için anket yapmak için Operasyon nesnesinin yolunu analiz edin.
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Response:", response.status_code, response.text)

Son yanıt böyle görünebilir:


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

Ardından belirli bir örnek kimliği bulmak için JSON üzerinde döngü yapabilirsiniz:


instances = response.json()['response']['instances']
replicatedStorageId = ""
for i in instances:
if i['engineInstance']['Name'] == "ReplicatedStorage":
replicatedStorageId = i['engineInstance']['Id']
if replicatedStorageId:
# Artık bir örnek kimliğiniz var ve alabilir veya güncelleyebilirsiniz.
else:
# The name wasn't found.

Scriptler, senaryo yaz, kaynakve etkinleştirilip etkinleştirilmediği gibi Details nesne içinde bazı ek bilgiler içerir.

Bir örnek durum

Bu yöntem tek bir İstisna döndürür.


import requests
# https://create.roblox.com/dashboard/credentials adresinde oluştur
apiKey = "<API_KEY>"
# Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde bulun
universeId = "<UNIVERSE_ID>"
# Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde Başlangıç ​​Yeri Kimliği bulun
placeId = "<PLACE_ID>"
# Herhangi bir dünyaveri modelinin kökü için varsayılan kimlik
instanceId = "<INSTANCE_ID>"
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Alma İstemi yöntemi için son nokta URL'si
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)
# Operasyon nesnesinin yolunu yanıttan parçalayın. Sonuçlar için anket bölümüne daha fazla bilgi göz atın.
operationPath = response.json()['path']

Liste İstisna Çocukları yöntemi gibi, yanıt gerçek durumalmak için oyladığınız bir Operation nesne içerir.Daha fazla bilgi için Sonuçlar için anket görün.

Güncelleme örnekleri

Uygun örnek kimliğini aldıktan sonra, güncelleyebilirsiniz. Sonuçlar için oy verin ilk güncelleme talepyapıldıktan sonra.


import json
import requests
# https://create.roblox.com/dashboard/credentials adresinde oluştur
apiKey = "<API_KEY>"
# Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde bulun
universeId = "<UNIVERSE_ID>"
# Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde Başlangıç ​​Yeri Kimliği bulun
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# Güncelleme İstemi için Son Nokta URL'si
updateInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
# JSON anahtarları
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)
# Operasyon nesnesinin yolunu yanıttan parçalayın. Sonuçların yapılması için oy verin
# güncelleme.
operationPath = response.json()['path']

Sonuçlar için anket

Tüm mevcut İstemci yöntemleri, talep ettiğiniz kaynak yerine bir Operation nesne döndürür.Bu nesne, asenkron olarak orijinal işlemi yapmanıza izin verir.Kaynak hazır olduğunda oylamak için Operation nesnenin yolunu (başlangıç ​​yanıtına dahil edilmiştir) kullanın.

Exponential geri çekme veya istekler arasında sabit bir gecikme kullanarak çeşitli anket stratejilerini kullanabilirsiniz.Aşağıdaki örnek her beş saniye, 10 kez kadar süreyle anket yapar.


import requests
import time
# https://create.roblox.com/dashboard/credentials adresinde oluştur
apiKey = "<API_KEY>"
# İlk talepOperasyon yolunu kullanın
# Şeklini alır "evrenler/<UNIVERSE_ID>/yerler/<PLACE_ID>/instanslar/<INSTANCE_ID>/operasyonlar/<OPERATION_ID>"
operationPath = "<OPERATION_PATH>"
# Oylama sabitleri
numberOfRetries = 10
retryPollingCadence = 5
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Uzun süre çalışan işlem anketlemesi için son nokta URL'si
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
# JSON anahtarları
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)

İksir Dükkanı demosu

İksir Dükkanı Google Tablo Demosu, deneyimin kodunu web'den güncellemenizi gösterir. Demo takip edilenoluşur:

  • Çeşitli iksirleri ve fiyatlarını gösteren mizli bir UI ile açılmayan bir yer.
  • Google Tabloolarına aktardığınız bir .ods dosya. Bu tablo, deneyim içindeki özellikler için değerleri belirlemenizi ve güncellemenizi sağlar.
  • Google Sheet'ten verileri okuyan ve Potion Shop deneyiminde Yeniden Yazılan Depolama > ItemList scriptini güncelleyen bir Google Apps kodu.

Demoyu kurun

  1. İksir Dükkanı Demosuna git Keşfet sayfasına gidin.Aşırı yük menüsüne tıklayın, ardından Stüdyoda düzenle .Stüdyo, dünyabir kopyasıyla açılır.

  2. Tıklayın DosyaRoblox'a kaydet ve İksir Dükkanı Demosunu deneyiminizin varsayılan yeri olarak kaydetmek için gerekli bilgileri doldurun.Deneyimi test edin.İksir Dükkanı Demosu için UI'yi görmelisiniz.İksirlerin adı, maliyeti ve renklerinin notunu alın.Onları daha sonra Open Cloud kullanarak değiştireceksiniz!

Tabloyu ayarla

  1. İndirin İksir Dükkanı tablosu dosyası.
  2. Google Sayfalarına gidin ve Boş Yayın Tablosu 'a tıklayın.
  3. Görünen tabloda, Dosya > İçe aktarma seçeneğine tıklayın ve Yükleme sekmesine tıklayın.
  4. İksir Dükkanı tablosu dosyasını yükleme penceresine sürükle.
  5. Yayın tablosunu değiştir ve ardından Verileri ithal et seçin.
  6. Tablonun AppScript sekmesinde, hücre A1'deki kodu kopyalayın.
  7. Genişletmeler > Apps Kodu menüsüne tıklayın ve kodu dosyasına yapıştırın. Ardından projeyi kaydedin.
  8. Yayın tablosuna geri dönün ve Güncelleme İksir Dükkanı sekmesini seçin. Güncelleme Kodu düğmesine tıklayın, aşırı yük menüsüne tıklayın ve Kodu atayın seçin.
  9. Komut dosyası atama penceresinde, UpdateScript ve Tamamla tıklayın.

Bir API anahtarı oluştur

  1. Yaratıcı Merkez Açık Bulut API Anahtarlarına git sayfasına gidin ve API Anahtarı Oluştur 'a tıklayın

  2. Aşağıdaki bilgilerle formu doldurun.

    • İsim : İksirDükkanı
    • API Sistemi : evren-yer-örnekleri API sistemini ekleyin.İksir Dükkanı deneyiminizi sisteme ekleyin.For Deneyim Operasyonları için, okuma ve yazma erişimi ekleyin.
    • Kabul Edilen IP Adresleri : 0.0.0.0/0 IP Adresi Ekle
    • Süresi doldu : Süresi dolmadı
    • Tıklayın Kaydet ve Anahtar Oluştur ve ardından Klipboard'a Anahtar Kopyala .
  3. Google Sheet'in Intro sekmesinde API anahtarını API anahtarı hücresine yapıştırın (D2).

Evreni ve yer ID'sini al

  1. Yaratıcı Merkez Yaratımları sayfasına gidin, İksir Dükkanı deneyim arayüzünün üzerine gezinin ve aşırı menüye tıklayın.
  2. Seç Evren ID'sini kopyala ve Google Sheet'in Intro sekmesindeki Evren ID'si hücresine yapıştırın (E2).
  3. Başlangıç ​​Yeri Kimliğini Kopyala seçin ve bunu Google Sheet'in Intro sekmesindeki Yer Kimliğine Yapıştır hücresine yapıştırın (F2).

Senaryo değerlerini güncelle

  1. Tablonun Güncelleme İksir Dükkanı sekmesinde, istediğiniz değerleri değiştirin ve Güncelleme Kodu düğmesine tıklayın.
  2. Google Sheets sizi yetkilendirmeye yönlendirirse, TAMAM 'a tıklayın ve hesabınızın senaryoyu çalıştırmasına izin verin.
  3. Stüdyoda, yansıtılan herhangi bir değişikliği görmek için İksir Dükkanını test et. Gezgin penceresinden, değişiklikleri incelemek için Yeniden Yazılan Depolama > ItemList scriptini de açabilirsiniz.