Entegrasyonlar sayfası, sunucundaki script paketlerini NODX FiveM Web Panel’e bağlamanı sağlar.
Panel şu mantıkla çalışır:
| Katman | Görevi |
|---|
| Entegrasyon | Hangi script veya paketin kullanılacağını belirtir |
| Capability | O paketin panelden hangi işlemleri desteklediğini gösterir |
| Action | Paneldeki butonun sunucuda hangi işlemi çağıracağını belirler |
| Test | Ayarın gerçekten çalışıp çalışmadığını doğrular |
Otomatik algılama
Panel bazı sistemleri otomatik algılayabilir. Örneğin:
| Sistem türü | Örnek paketler |
|---|
| Ambulans | ars_ambulancejob |
| Banka | tgiann-bank |
| Parking | tgiann-realparking |
| Police alert | tgiann-policealert |
| Market | Shop scriptleri |
| Kapı kilidi | Doorlock scriptleri |
Paket adları birebir önemlidir. Örneğin ars-ambulancejob yerine sunucunda ars_ambulancejob varsa entegrasyon adı buna göre ayarlanmalıdır.
Entegrasyon ekleme
Entegrasyon sayfasını aç
Panelden Entegrasyonlar alanına gir.
Sistem türünü seç
Market, kapı kilidi, banka, garaj, ambulans veya polis gibi türlerden birini seç.
Paket adını kontrol et
Sunucunda çalışan resource adıyla paneldeki adın aynı olduğundan emin ol.
Action ayarlarını doldur
Paneldeki işlem hangi export, event veya sorgu ile çalışacaksa onu seç.
Test et
Test et butonuna bas ve detaylı sonucu incele.
Aktif et
Test başarılıysa entegrasyonu aktif hale getir.
Action türleri
| Tür | Ne zaman kullanılır? |
|---|
| Export | Script dışarıya hazır fonksiyon veriyorsa |
| Event | Script belirli event ile işlem yapıyorsa |
| Database | Veri doğrudan veritabanından okunacaksa |
| Custom | Paket özel davranış istiyorsa |
Örnek: Market listesi
Market entegrasyonunda panelin mağazaları okuyabilmesi için market listesini döndüren bir action gerekir.
Örnek alanlar:
| Alan | Örnek |
|---|
| Entegrasyon | nodx-shops-setup |
| Action | GetPanelShops |
| Sonuç yolu | shops.list |
| Otomatik algıla | Açık |
| Aktif | Açık |
Marketler hâlâ boş görünüyorsa Test et sonucunda hangi adımın takıldığını kontrol et.
Örnek: Kapı kilidi
Kapı kilidi entegrasyonu, panelin kapı listesini okuyabilmesini ve destekleniyorsa kapı durumunu değiştirebilmesini sağlar.
| İhtiyaç | Açıklama |
|---|
| Kapı listesi | Panelde kapıları göstermek için |
| Kapı ID | Kilit açma veya kapama işlemi için |
| Durum bilgisi | Kilitli, açık veya yetkili job bilgisi |
| Yetki kontrolü | Her staff üyesinin kapı değiştirmemesi için |
Özel paketlerde garanti çalışma nasıl sağlanır?
Her sunucu aynı paketi kullanmadığı için panelde ayarlanabilir mapping önemlidir.
Sağlam bir entegrasyon için:
- Resource adını doğru yaz.
- Export veya event adını paketin dokümanına göre gir.
- Sonuç yolunu doğru ayarla.
- Test sonucunu başarılı görmeden entegrasyonu aktif etme.
- Paket güncellenirse tekrar test et.
- Aynı iş için birden fazla entegrasyon aktifse çakışma olmadığını kontrol et.
Bir entegrasyonun panelde görünmesi, o paketin tüm aksiyonlarının çalışacağı anlamına gelmez. Her action ayrı test edilmelidir.
Desteklenen paketler genişletilebilir mi?
Evet. Yeni bir paket için genelde şu bilgiler yeterlidir:
| Bilgi | Örnek |
|---|
| Resource adı | custom-garage |
| Okuma yöntemi | Export veya database |
| Yazma yöntemi | Event veya export |
| Dönüş formatı | Liste, obje veya tablo |
| Yetki ihtiyacı | Kimler kullanabilir? |
Bu bilgilerle panelde yeni capability ve action mapping tanımlanabilir.
Tam Action Mapping Örnekleri
Panelde Action Mapping, capability adı ile sunucuda çalışacak işlemi eşleştirir. Capability panelin çağırdığı komut adıdır; action ise bu komutun sunucuda export, event veya SQL ile nasıl çalışacağını anlatır.
Resource adı, server.cfg içindeki ensure adıyla birebir aynı olmalıdır. Örneğin ensure nodx-shops-setup yazıyorsa resource alanı nodx-shops-setup olmalıdır.
Capability Adı Birebir Panel Komutu Olmalı
Custom integration eklerken capability adını paketin kendi isimlendirmesine göre değil, panelin beklediği komut adına göre yazmalısın.
Örneğin ev paketin kendi içinde houses diyebilir ama paneldeki Ev Sistemi sayfası housing.* capability’lerini bekler. Bu yüzden houses.list yerine housing.list kullanılmalıdır.
| Panel bölümü | Doğru capability örneği | Sık yapılan yanlış |
|---|
| Dükkanlar | shops.list | shop.list, stores.list |
| Ev Sistemi | housing.list | houses.list, house.list |
| Kapı Kilitleri | doorlock.list | doors.list, door.list |
| Araç Anahtarları | vehiclekeys.list | vehkeys.list, keys.list |
| Garaj / Araçlar | vehicle.owned.list | garage.list, vehicles.list |
| Envanter | inventory.read | items.read, inventory.list |
Kartın yeşil görünmesi resource’un tanındığını gösterir. Sayfanın gerçekten veri çekmesi için action mapping içindeki capability adı da panelin beklediği adla aynı olmalıdır.
Örnek: Market Listesini Export İle Okuma
Bu örnek, paneldeki Dükkanlar sayfasını doldurmak için kullanılır.
| Alan | Değer |
|---|
| Capability | shops.list |
| Type | export |
| Side | server |
| Resource | nodx-shops-setup |
| Name | GetPanelShops |
{
"shops.list": {
"type": "export",
"side": "server",
"resource": "nodx-shops-setup",
"name": "GetPanelShops"
}
}
Bu mapping şunu söyler: Panel shops.list istediğinde, sunucuda nodx-shops-setup resource’u içindeki GetPanelShops server export’u çağrılır.
Örnek: Oyuncuya Event İle Bildirim Gönderme
Event kullanan paketlerde action tipi event seçilir.
{
"notify.send": {
"type": "event",
"side": "server",
"resource": "my-notify",
"name": "my-notify:server:send",
"args": ["player_id", "payload.message", "payload.type"]
}
}
| Args değeri | Anlamı |
|---|
player_id | Panelde seçilen oyuncu ID’si |
payload.message | Panelden gelen mesaj |
payload.type | Bildirim tipi |
Örnek: Kapı Listesini SQL İle Okuma
Bazı paketler export vermez; veriyi veritabanından okumak gerekir. Bu durumda type sql olur.
{
"doorlock.list": {
"type": "sql",
"query": "SELECT id, name, locked, job FROM doorlocks ORDER BY id ASC",
"result_path": "doors"
}
}
Bu örnek, sorgudan dönen kapı listesini panelin doors alanı olarak okumasını sağlar.
Alanlar Ne İşe Yarar?
| Alan | Zorunlu mu? | Açıklama |
|---|
type | Evet | export, event veya sql olur |
side | Export/event için önerilir | server veya client tarafını belirtir |
resource | Export/event için evet | server.cfg içindeki ensure adı |
name | Export/event için evet | Çağrılacak export veya event adı |
args | İhtiyaca göre | Event/export’a gidecek parametre sırası |
query | SQL için evet | Çalıştırılacak okuma sorgusu |
result_path | İhtiyaca göre | Dönen sonucun panelde hangi alandan okunacağı |
Kaydettikten Sonra Test Et
Mapping’i kaydettikten sonra entegrasyon kartındaki Test et butonunu kullan. Test sonucu şunları kontrol eder:
| Test | Ne kontrol edilir? |
|---|
| Resource durumu | Resource sunucuda başlatılmış mı? |
| Export veya event adı | Girilen ad gerçekten var mı? |
| Capability eşleşmesi | Paneldeki capability ile action mapping aynı mı? |
| SQL sorgusu | Sorgu çalışıyor ve veri döndürüyor mu? |
Önce tek capability ile başla. Örneğin sadece shops.list çalışıyorsa entegrasyonu aktif et, sonra diğer action’ları ekle.