# Karayel v0.5 — alan salvosu ve doğrulanmış iade

## Admin panelinde kullanım

**NPC Yönetimi:** Boss yeteneği alanında `barrage` seç. Salvo yarıçapı 50–600, uyarı süresi 1500–10000 ms arasında ayarlanır. Yetenek gücü, NPC temel hasarının yüzdesidir. Örnek: 1500 temel hasar, 100 güç, 220 yarıçap, 2500 ms uyarı, 12000 ms aralık. Öfke HP eşiği ve hasar çarpanı bu saldırıya da uygulanır. Mevcut NPC ayarları değiştirilmez; özelliği istediğin NPC'de aç.

Salvo başlangıcındaki konum işaretlenir. Oyuncu uyarı bitmeden alandan çıkabilir. Sunucu patlama anındaki konum, harita, liman, çevrimiçi durum ve kalkanı doğrular. Boss ölünce bekleyen salvo iptal edilir. Bekleyen saldırı kayıtla birlikte kalıcıdır. Animasyonlu uyarı, gemiler ve deniz aynı Canvas çiziminde gösterilir.

**Elmas & ödemeler:** Canlı PayTR siparişinde “PayTR iade talebi” görünür. Tam paket iadesi desteklenir; kısmi iade desteklenmez. Sipariş elmasları harcanmışsa işlem reddedilir. Elmaslar dış servise istek gönderilmeden ayrılır. Aynı sipariş tekrar gönderilemez.

- `unknown`: yanıt belirsiz / henüz alınmadı; otomatik yeniden gönderme yok.
- `accepted`: sağlayıcı talebi kabul etti; tamamlanma sorgulanmalı.
- `completed`: aynı referans ve tutar için tamamlanmış iade doğrulandı.
- `failed`: açık sağlayıcı reddi; ayrılan elmaslar bir kez geri verildi. Aynı sipariş için bu sürümde ikinci talep açılamaz; sağlayıcı kaydı incelenmelidir.

“Sağlayıcıdan sorgula” para iadesi göndermez; durum sorgular. Referans/tutar/test modu/para birimi uyuşmazsa kayıt tamamlandı sayılmaz. Sorguda kayıt bulunmaması, ilk isteğin başarısız olduğunu kanıtlamaz; elmas ayrımı korunur. Banka havalesinde “Banka iadesini kaydet” yalnızca yöneticinin bankada yaptığı iadeyi kaydeder; banka transferi yapmaz. PayTR siparişleri bu manuel yoldan işlenemez. İade hareketleri İşlem Kayıtları'na ve kalıcı tablolara yazılır.

PayTR işyeri anahtarları `config/paytr.php` içinde kalır. Yeni satış kapalı olsa bile mevcut ödemelerin iade sorgusu çalışabilir. Gerçek işyerinde test edilmedi; yerel testler sahte taşıma yanıtlarıyla imzayı, kalıcı işlemleri ve hata durumlarını doğrular. Resmî sözleşme: https://dev.paytr.com/iade-api ve https://dev.paytr.com/durum-sorgu .

## Verileri koruyarak güncelleme

1. Uygulama dosyalarının ve MySQL/SQLite veritabanının tutarlı yedeğini al; kısa bakım penceresi kullan.
2. `app/` ve `public/` kodlarını güncelle. Eski `config/config.php`, `config/paytr.php`, `config/realtime.php`, `storage/` ve veritabanını koru. Kurucuyu tekrar çalıştırma.
3. Yeni `payment_refunds` tablosu ödeme yönetimi açıldığında `CREATE TABLE IF NOT EXISTS` ile eklenir. Eski tablo/kullanıcı/sipariş silinmez. Veritabanı kullanıcısının tablo oluşturma yetkisi olmalıdır.
4. Eski istemci önbelleğini yenile; admin ekranından yeni NPC alanlarını kontrol et.
5. Geri dönüş gerekiyorsa, bekleyen iadeleri önce uzlaştır. Eski kod sürümü PayTR manuel iade açığını taşıdığı için bekleyen iade varken eski ödeme ekranını kullanma; yedeği körlemesine geri yüklemek bakiye/para iadesi tutarsızlığı yaratabilir.

## Doğrulama

31 TypeScript motor testi; PHP içerik testleri; izole SQLite/PHP HTTP üyelik, satın alma, admin, PayTR bildirim, iade, WebSocket ve parola sıfırlama testleri geçti. Alan salvosu çizimi masaüstü tarayıcıda incelendi. Gerçek telefon FPS ve MySQL eşzamanlılık testi yapılmadı.

NPC hedefleri her alt adımda tüm dünyadan değil, aynı haritadaki çevrimiçi oyunculardan seçilir. `php tests/benchmark.php` dış servise bağlanmayan tekrar edilebilir bellek içi ölçümdür. Bu ortamda 20/100/300 oyuncu, 20 harita, 60 adım için p95 sırasıyla 2,10 / 4,50 / 6,96 ms ölçüldü. JSON kodlama dahil; HTTP, DB kilidi, ağ, WebSocket yayın yükü ve tarayıcı FPS hariçtir. Bu sayılar desteklenen eşzamanlı oyuncu kapasitesi değildir.

## Hâlâ tamamlanmamış

Bağımsız harita süreçleri ve veritabanı parçalama; üretim MySQL/yük ve gerçek cihaz testleri; sürükle-bırak parçalı gemi görsel editörü; kapsamlı çok evreli boss senaryoları; ters ibraz ve kısmi iade; gerçek PayTR işyeri doğrulaması. Kategori başına 200 tanım sınırı sürer. Bu sürüm bütün MMORPG brifinin tamamlandığı anlamına gelmez.
