Skip to main content
Bu rehber, özel entegrasyon eklerken bütün kategorilerde kullanacağın ortak kuralları anlatır.

Capability ve action mapping farkı

Capability, Panel’in bildiği sabit işlem adıdır. Action mapping ise bu işlemin senin resource’unda nasıl gerçekleştirileceğini söyler.
Panel isteğiCapability örneğiResource içindeki karşılığı
Marketleri listeleshops.listBir export veya SQL sorgusu
Oyuncuyu diriltems.reviveBir server/client event
Kapıyı aç veya kilitledoorlock.toggleExport veya event
Personel rütbesini değiştirmanagement.grade.setExport, event veya desteklenen framework işlemi
Capability adını resource’un kendi terminolojisine göre değiştirme. Örneğin paket “houses” kelimesini kullansa bile Panel’in Ev Yönetimi sayfası housing.list ister.

Erişim seviyeleri

SeviyeAnlamıÖrnek
OkumaVeri getirir, oyun durumunu değiştirmezshops.list
YazmaOyun veya veritabanı durumunu değiştirircharacter.job.set
KritikPara silme, ev devretme veya kayıt silme gibi yüksek riskli işlemdirbanking.money.remove
Önce okuma capability’sini çalıştır. Listeleme başarısızken oluşturma, düzenleme veya silme işlemlerini aktif etme.

Action türleri

TürNe zaman kullanılır?Öneri
ExportPaket dışarıya hazır bir fonksiyon sunuyorsaOkuma ve doğrulama işlemlerinde tercih et
EventPaket işlemleri event ile yapıyorsaÖzellikle oyuncuya uygulanan aksiyonlarda kullan
SQLVeri yalnızca veritabanında bulunuyorsaÖncelikle okuma için kullan
CustomStandart yöntemler pakete yetmiyorsaDestek ekibiyle birlikte doğrula

Temel mapping alanları

AlanAçıklama
typeexport, event veya sql
sideİşlemin server veya client tarafında çalışacağını belirtir
resourceserver.cfg içindeki resource adı
nameÇağrılacak export veya event adı
argsİşleme gönderilecek değerlerin sırası
querySQL action için kullanılacak sorgu
result_pathDönen cevabın hangi alanından veri okunacağını belirtir

Export örneği

{
  "shops.list": {
    "type": "export",
    "side": "server",
    "resource": "my-shops",
    "name": "GetPanelShops"
  }
}

Event örneği

{
  "notify.send": {
    "type": "event",
    "side": "server",
    "resource": "my-notify",
    "name": "my-notify:server:send",
    "args": ["player_id", "payload.message", "payload.type"]
  }
}

SQL okuma örneği

{
  "doorlock.list": {
    "type": "sql",
    "query": "SELECT id, name, locked, job FROM doorlocks ORDER BY id ASC",
    "result_path": "doors"
  }
}
SQL action’larında önce salt okunur sorgular kullan. Yazma sorguları paket önbelleğini atlayabilir ve oyun içi durumla veritabanını farklı hale getirebilir.

Liste cevabı nasıl olmalı?

Liste capability’leri boş olsa bile geçerli bir liste döndürmelidir. Bir paketin cevap alanı farklıysa Sonuç yolu alanını kullan.
{
  "ok": true,
  "items": [
    {
      "id": "example-1",
      "label": "Örnek kayıt"
    }
  ]
}
Bu cevapta liste items alanındaysa sonuç yolu items olarak ayarlanır.

Test sonucunu okuma

AdımBaşarılı sonuç neyi gösterir?
Resource bulunduResource başlatılmış ve adı doğru
Capability eşleştiPanel sayfası doğru işlem adını çağırabilir
Action bulunduExport, event veya SQL ayarı kullanılabilir
Cevap alındıİşlem zaman aşımına uğramadan döndü
Veri biçimi geçerliPanel cevabı okuyabilir
capability_not_synced görürsen plugin’in son bağlantısını kontrol et, health check çalıştır ve entegrasyonu tekrar test et.

Canlıya almadan önce kontrol listesi

  • Doğru sunucu seçili.
  • Resource adı ensure adıyla birebir aynı.
  • Okuma action’ları veri döndürüyor.
  • Boş listeler hata yerine boş liste olarak dönüyor.
  • Yazma işlemi oyun içinde de doğrulandı.
  • Silme ve para işlemleri yalnızca yetkili rollere açık.
  • Paket restartlandıktan sonra tekrar test edildi.