> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.nodx.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Özel paket uyarlama

> Otomatik algılanmayan FiveM paketlerini Panel'e güvenli biçimde bağlama

Sunucunda özel geliştirilmiş veya Panel'in otomatik algılamadığı bir paket varsa **Özel entegrasyon** oluşturarak paketi Panel'e bağlayabilirsin.

## Başlamadan önce gerekli bilgiler

| Bilgi                        | Örnek                         |
| ---------------------------- | ----------------------------- |
| Resource adı                 | `custom-housing`              |
| Kategori                     | Housing                       |
| Kullanılacak Panel işlemleri | Listele, düzenle, sil         |
| Paket erişim yöntemi         | Export, event veya veritabanı |
| Beklenen parametreler        | Oyuncu ID, kayıt ID, payload  |
| Dönen veri biçimi            | Liste veya obje               |

## Uyarlama yöntemi

<Steps>
  <Step title="Panel kategorisini seç">
    Paketin hangi Panel sayfasını besleyeceğini belirle.
  </Step>

  <Step title="Doğru capability'yi seç">
    Capability'yi elle uydurmak yerine kategori için önerilen listeden seç.
  </Step>

  <Step title="Önce okuma action'ını ekle">
    Listeleme veya detay görüntüleme işlemini bağla ve test et.
  </Step>

  <Step title="Yazma desteğini ayrı ekle">
    Oluşturma, düzenleme ve silme işlemlerini ayrı capability olarak tanımla.
  </Step>

  <Step title="Oyun içinde doğrula">
    Panel cevabıyla yetinme; değişikliğin paket ve oyun içinde uygulandığını kontrol et.
  </Step>
</Steps>

## Kategoriye göre doğru capability seçimi

| İhtiyaç                     | Doğru örnek         | Yanlış örnek  |
| --------------------------- | ------------------- | ------------- |
| Evleri listele              | `housing.list`      | `houses.list` |
| Marketleri listele          | `shops.list`        | `shop.list`   |
| Kapıları listele            | `doorlock.list`     | `doors.list`  |
| Araç anahtarlarını listele  | `vehiclekeys.list`  | `keys.list`   |
| Karakter mesleğini değiştir | `character.job.set` | `job.set`     |

## Tam CRUD desteği

CRUD; oluşturma, okuma, düzenleme ve silme işlemlerinin tamamını ifade eder. Bir resource'un algılanması veya listeleme yapabilmesi tam CRUD desteği olduğu anlamına gelmez.

| Seviye      | Hazır işlemler                | Panel davranışı                                   |
| ----------- | ----------------------------- | ------------------------------------------------- |
| Salt okunur | Yalnızca list/get             | Kayıtlar görünür, değiştirilemez                  |
| Kısmi yazma | List ve update                | Kayıtlar düzenlenir, oluşturulamaz veya silinemez |
| Tam CRUD    | List/get/create/update/delete | Panel'den tam yönetim yapılabilir                 |

### Örnek tam housing mapping'i

```json theme={null}
{
  "housing.list": {
    "type": "export",
    "side": "server",
    "resource": "custom-housing",
    "name": "GetPanelHouses"
  },
  "housing.create": {
    "type": "export",
    "side": "server",
    "resource": "custom-housing",
    "name": "CreatePanelHouse",
    "args": ["payload"]
  },
  "housing.update": {
    "type": "export",
    "side": "server",
    "resource": "custom-housing",
    "name": "UpdatePanelHouse",
    "args": ["payload.id", "payload"]
  },
  "housing.delete": {
    "type": "export",
    "side": "server",
    "resource": "custom-housing",
    "name": "DeletePanelHouse",
    "args": ["payload.id"]
  }
}
```

## Paket güncellemesi sonrası

Paket geliştiricisi export, event, tablo veya alan adını değiştirebilir. Her paket güncellemesinden sonra:

* Resource'un algılandığını kontrol et.
* Okuma action'larını yeniden test et.
* Test sunucusunda bir yazma işlemi uygula.
* Oyun içi durumla veritabanının aynı kaldığını doğrula.
* Hata varsa entegrasyonu geçici olarak salt okunur kullan.

## Sorun giderme

| Hata                          | Anlamı                                | Çözüm                                                   |
| ----------------------------- | ------------------------------------- | ------------------------------------------------------- |
| Resource tespit edilemedi     | Ad yanlış veya resource çalışmıyor    | `ensure` adını ve resource durumunu kontrol et          |
| `capability_not_synced`       | Plugin capability'yi henüz bildirmedi | Health check çalıştır ve plugin bağlantısını kontrol et |
| Export bulunamadı             | Export adı veya tarafı yanlış         | Paket dokümanını ve server/client seçimini kontrol et   |
| Test başarılı, sayfa boş      | Sonuç yolu veya veri biçimi yanlış    | Dönen liste alanını kontrol et                          |
| Panel değişti, oyun değişmedi | Yalnızca veritabanı güncellendi       | Paketin export veya event yöntemini kullan              |

<Tip>
  Özel uyarlamada önce tek bir okuma capability'sini kusursuz çalıştır. Sonra yazma işlemlerini birer birer ekle.
</Tip>
