Motor Açık Bulut API'leri, web'den Roblox deneyimlerinizdeki Instance nesneleri yönetmenizi sağlar.
Beta Sınırları
Bu API'ler şu anda beta sürümündedir ve şu sınırlamalara sahiptir:
Sadece Script, LocalScript ve ModuleScript nesnelerini okuyabilir ve güncelleyebilirsiniz.
Roblox Studio'da açık olarak açık olan kodları güncellemeyebilirsiniz.
Bir paket parçası olan skriptleri güncelleyemezsiniz.
Sadece API anahtar doğrulamasını kullanabilirsiniz. 宇宙-place-instances eklenmiş bir API sistemi olarak bir API anahtarı oluşturun.
Anahtarın erişimine izin vereceğiniz deneyimleri ve istediğiniz okuma ve yazma izin alanlarını belirtmelisiniz.
Erişmek istediğin deneyim için bir ikârlı oturumu aktifleştirmelisin.
Görüntülenen gibi istekler, bir Sunucu Güncellemesi için 200 KB'ye sınırlıdır.
Çocukları Listeleme
Bir özel instanın tüm çocuklarını belirlemek için bir instan ID'sini belirtin ve Liste İstek Çocuklarını Listele yöntemini çağırın.
import requests
# Başvurusu: https://create.roblox.com/dashboards/credentials'de oluştur
apiKey = "<API_KEY>"
# Bir deneyimin özellikleri menüsünde aşırı menüde bulun: https://create.roblox.com/dash/creations
universeId = "<UNIVERSE_ID>"
# Bir deneyimin tahtasının aşırı menüsünde bulunan https://create.roblox.com/dashboard/creations alanındaki başlangıç yeri ID'sini bulun
placeId = "<PLACE_ID>"
# Herhangi bir dünyaveri modelinin kökü için varsayılan ID
instanceId = "root"
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# List Children 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)
# Örnek Kaynağı'nın yolunu parçalara ayıklayın sonra alan kaynağı elde edin. Ayrıntılar için Sonuçlar bölümünü görün.
operationPath = response.json()['path']
Sadece çocukları listelemeyi değil, yanıt bir farklı bitiş noktasına sahip bir Operation nesneyi içerir. Bu bitiş noktasını oluştur to yanılsız olarak gerçek çocukların listesini alın. Daha tam bir kod örneği şu gibi 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)
# Enstans kaynağı için oylama için bir nesneyi parçalayın.
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Response:", response.status_code, response.text)
Son cevap bunun gibi 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": {}
}
},
...
]
}
}
Daha sonra JSON üzerinde tekrar iterebilirsiniz ve belirli bir instans ID'sini bulabilirsiniz:
instances = response.json()['response']['instances']replicatedStorageId = ""for i in instances:if i['engineInstance']['Name'] == "ReplicatedStorage":replicatedStorageId = i['engineInstance']['Id']if replicatedStorageId:# Artık bir istemci ID'sine sahipsin ve onu alabilir veya güncelleyebilirsin.else:# The name wasn't found.
Scriptlerin Details nesnesinde, kullanıcı yaz, kaynakve etkinleştirilip etkinleştirilmediği gibi bazı ek bilgiler bulunur.
Bir Instans Alınması
Bu yöntem Tek Bir Kopya döndürür.
import requests
# Başvurusu: https://create.roblox.com/dashboards/credentials'de oluştur
apiKey = "<API_KEY>"
# Bir deneyimin özellikleri menüsünde aşırı menüde bulun: https://create.roblox.com/dash/creations
universeId = "<UNIVERSE_ID>"
# Bir deneyimin tahtasının aşırı menüsünde bulunan https://create.roblox.com/dashboard/creations alanındaki başlangıç yeri ID'sini bulun
placeId = "<PLACE_ID>"
# Herhangi bir dünyaveri modelinin kökü için varsayılan ID
instanceId = "<INSTANCE_ID>"
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# GetInstance yönteminin sonuç 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)
# İşleme nesnenin yolunu yanıtından parçalayın. Ayrıntılar için Sonuçlar bölümünü görün.
operationPath = response.json()['path']
Liste İнstanz Children yöntemine benzer şekilde, yanıt bir Operation nesnemi içerir kişi durumiletmeniz gerekir. Ayrıntılar için Sonuçları Polling bakınız.
Instanları Güncelleme
Uygun bir instans ID'sini elde ettikten sonra güncelleyebilirsiniz. Sonuçlar için oy ver giriş aşamasındaki ilk güncelleme talepsonra.
import json
import requests
# Başvurusu: https://create.roblox.com/dashboards/credentials'de oluştur
apiKey = "<API_KEY>"
# Bir deneyimin özellikleri menüsünde aşırı menüde bulun: https://create.roblox.com/dash/creations
universeId = "<UNIVERSE_ID>"
# Bir deneyimin tahtasının aşırı menüsünde bulunan https://create.roblox.com/dashboard/creations alanındaki başlangıç yeri ID'sini 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 yönteminin Son Aşaması 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)
# İşleme nesnenin yolunu yanıtından parçalayın. Sonuçları yerine getirmek için oy kullanın
# güncelleme.
operationPath = response.json()['path']
Sonuçlar için Oylama
Tüm mevcut İн스턴스 yöntemleri, isteğinizle aynı kaynaktan yerine bir Operation nesnesi döndürür. Bu nesne, orijinal işlemin asenkron olarak yapılmasını sağlar. Kaynak hazır olduğunda kaynağın yolunu (aynı yanıt içinde dahil) kullanarak arayın.
Exponential backoff veya istekler arasındaki düzgecik gecikme gibi çeşitli anket stratejilerini kullanabilirsiniz. Aşağıdaki örnek her beş saniyede bir yapılır, yükseltilmiş olarak 10 kat kadar.
import requests
import time
# Başvurusu: https://create.roblox.com/dashboards/credentials'de oluştur
apiKey = "<API_KEY>"
# Başlangıç talepOperation yolunu kullanın
# Şu biçimi alır: "evrenler/<UNIVERSE_ID>/places/<PLACE_ID>/instances/< Instance_ID>/operasyonlar/<OPERATION_ID>"
operationPath = "<OPERATION_PATH>"
# Anket yapma konuları
numberOfRetries = 10
retryPollingCadence = 5
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Uzun süreli işletim anketi 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
Potion Shop Google Sheets iletişim gösterisi, bir deneyimin kodunu web'den güncellemene izin veren birkaç biletten oluşur. İşlevselliğin kodunu güncellemek için takip edilenadımları izleyin:
- Çeşitli iksirlerin ve fiyatlarını gösteren bir yerin kilidi açılmamış bir yer.
- Google Sheets'a ithal ettiğiniz bir .ods dosyası. Bu yayılma tablosu, deneyim içindeki özellikler için değerleri belirtmenizi ve güncellemenizi sağlar.
- Google Sheet'ten veri okuyan ve Potion Shop deneyimindeki ReplicatedStorage > ItemList'i güncelleme için kullanılan Google Apps kodu.
Demonstrasyon'u ayarlama
Çay Dükkanı Demosu sayfasına git. Aşırı menüyü gözden geçir, sonra Stüdyoda Düzenle . Studio, dünyabir kopyasıyla açılır.
Click Dosya → Roblox'a Kaydet and fill out the necessary information to save the Potion Shop Demo as the default place for your experience. Test the experience. You should see the UI for the Potion Shop Demo. Make a note of the name, cost, and renkler of the potions. You'll change them later using Open Cloud!
Sayfayı ayarlama
- İndir Potion Shop yayınlandığı sayfayı indirin.
- Google Sheets'a gidin ve Boş Spreadsheets 'ı tıklayın.
- Görünen sayfada, Dosya > İçe aktarma tıklayın ve Yükleme sekmesine tıklayın.
- Potion Shop yayınlayıcı dosyasını yükleme penceresine sürükle.
- Choose Yayınlayıcıyı değiştir and then Verileri İçe aktar .
- Yapraknın AppScript etabında, hücre A1'deki kodu kopyalayın.
- Uzantılar > Apps Script'i menüsünü tıklayın ve kodu Code.gs dosyasına yapıştırın. Sonra projeyi kaydedin.
- Yayınlayıcı içinde, Güncelleme İksir Dükkanı seçenek kartını seçin. Tüm aşırı yükleme menüsünü tıklayın ve Ekranın aşırı yükleme menüsünü göster seçenekini seçin.
- Komutu ayarla penceresinde, UpdateScript ı girin ve OK 'yı tıklayın.
Bir API Anahtarı Oluşturulması
Creator Hub Open Cloud API Keys sayfasına gidin ve API Key oluşturun.
Aşağıdaki bilgileri formla doldurun.
- İsim: : PotionShop
- API Sistemi : evren-place-instances API sistemini ekleyin. Potion Shop deneyiminizi sisteme ekleyin. Tecrübe Operasyonları için okuma ve yazma erişimi ekleyin.
- Kabul Edilen IP Adresleri : 0.0.0.0/0 bir IP Adresi olarak ekleyin
- Süre : Süre Yok
- Kaydet ve Anahtarı Oluştur'a tıklayın ve sonra Kopyalayı Klipboard'a.
Google Sheet'inizin "Giriş" birimindeki API anahtarınızı API Anahtarı hücre (D2)'e yapıştırın.
Evren ve Yer Kimliği Alınıyor
- Creator Hub Creations sayfasına gidin, Potion Shop'un deneyim tanesine fareyi getirin ve aşırı menüyü tıklayın.
- Select Evren ID'sini Kopyala and paste it into the Evren ID'sini cell (E2) on the Intro tab of your Google Sheet.
- Başlangıç Yeri Kimliğini Kopyala ve Yeri Kimliğini Yapıştır seçeneklerini Google Sheet'inizin Yeri kutusuna (F2) yapıştırın.
Script Değerlerini Güncelleme
- Sayfanın Güncelleme İksir Dükkanı tabsında, istediğiniz herhangi bir değeri değiştirin ve Güncelleme Skripti düğmesine tıklayın.
- Google Sheets'ın onay istediğini gösterirse, OK butonuna tıklayın ve hesabınızın kodu çalıştırmasına izin verin.
- Stüdyo'da, İksir Dükkanı'nı oynayarak yansıtılan herhangi bir değişikliği görebilirsiniz. Explorer pencereden, değişiklikleri incelemek için ReplicatedStorage > ItemListskriptini açabilirsiniz.