Rehbere geç

Dokümantasyon 9.6.24

Veritabanı ve bridge

Tosun bridge’i oyun sunucusunun mevcut oxmysql bağlantısını kullanır. Bu bağlantı için oyun veritabanı parolasını panele girmeniz veya MySQL’i internete açmanız gerekmez.

Desteklenen okumalar#

Bağlantı her sunucuda varsayılan olarak açıktır ve server.cfg satırı gerektirmez. Bir sunucuda durdurmak için Sunucular bölümünde sunucuyu açın ve Tosun Connect kartındaki “Bağlantıyı kapat” düğmesini kullanın; aynı karttan yeniden açabilirsiniz. server.cfg içinde set tosun_db_bridge_manual "1" varsa tosun_db_bridge_enabled ve tosun_db_bridge_money_write eskisi gibi server.cfg’den okunur; "1" verilmeyen kapalı kalır. Eski tam mirror bilerek açıldıysa (configs/anticheat_config.lua içinde ts.panelMirror.enabled = true), bridge o mirror çalışmaya devam etsin diye kapalı kalır. QBCore/Qbox için players ve player_vehicles, ESX için users ve owned_vehicles; yasaklama ve tespit kayıtları için ts_anticheat ve ac_detections okunabilir. Desteklenen işlemler oyuncu listesi, tek karakter ayrıntısı, o karakterin araçları, yasaklamalar ve anticheat kayıtlarıdır. Bu altı izinli tablo tüm framework verileri demek değildir; özel stash, işletme, ev ve banka tabloları otomatik keşfedilmez.

Sınırlı ve istek üzerine okuma#

Bridge boşta yaklaşık 10 saniyede bir HTTPS ile paneli kontrol eder; oyun veritabanını sorgulamaz. Liste sayfası en fazla 25 sonuç, karakter detayı tek sonuç getirir. Sonuç 65.536 baytla sınırlıdır; istenmiş şema bilgisi beş dakika önbelleğe alınır. Eksik veya uygun olmayan benzersiz/sahip indeksleri ve 64 satırı aşan indeks bilgisi doğrulanamazsa veri sorgusu çalıştırılmaz. unsupported_index kayıt olmadığı anlamına gelmez; bazı uygun birleşik indeksler araç sorgularında desteklenir.

Yanıt süresi SQL iptali değildir#

Varsayılan SQL yanıt bekleme süresi 5.000 ms’dir. query_timeout geldiğinde panel beklemeyi bitirmiştir; gerçek sorgu hâlâ çalışıyor olabilir. İlk gerçek callback gelene kadar SQL kapasitesi dolu kalır, yeni okuma query_busy döner. Geç gelen cevap önceki ekran sonucunu değiştirmez. Hiç callback gelmezse süre sınırı kapasiteyi otomatik boşaltmaz. Sunucu yöneticisi bağlantı ve veritabanı durumunu kontrol etmelidir; kaynağı yeniden başlatmak SQL’i iptal ettiğini kanıtlamaz. Yalnız sunucu sahibi isterse server.cfg içine aşağıdaki set satırını ekleyebilir. Değer 1.000–10.000 ms aralığına sınırlandırılır; geçersiz veya sonsuz sayı 5.000 ms olur. Bu ayar sorguyu hızlandırmaz ve yeni sorguları otomatik tekrar ettirmez.

set tosun_db_bridge_query_timeout_ms "5000"

Bakiye düzenlemeyi ayrı değerlendirin#

Çevrimiçi bakiye düzenleme (çevrimiçi bir karakterin nakit veya banka toplamını panelden ayarlama) varsayılan olarak açıktır. Yalnız admin veya owner rolündeki panel kullanıcıları (ekonomi yetkisi) kullanabilir. Karakter çevrimiçi olmalı ve beklenen mevcut bakiye tutmalıdır; tutmazsa stale_balance döner ve hiçbir şey değişmez. Panel göndermeden önce onay özeti gösterir ve her istek denetim kaydına yazılır. İşlem toplamı ayarlar, üzerine eklemez; çevrimdışı SQL yazmaya geçmez. unknown_outcome veya bağlantı belirsizliğinde işlem otomatik tekrarlanmaz. Yeni yazmadan önce oyundaki bakiyeyi ve işlem kayıtlarını kontrol edin; tekrar denemeyi zorlamak için belirsiz işlem KVP kayıtlarını silmeyin. Bir sunucuda okumaları ve bakiye düzenlemeyi durdurmak için Tosun Connect kartındaki “Bağlantıyı kapat” düğmesini kullanın. Okumalar açık kalıp yalnız bakiye düzenleme kapansın istiyorsanız manuel modu kullanın: set tosun_db_bridge_manual "1" ve set tosun_db_bridge_enabled "1" ekleyin, set tosun_db_bridge_money_write "1" eklemeyin.

Mevcut oyun sunucusu üzerinden bağlanın#

Köprü, FiveM sunucunuzda çalışan mevcut oxmysql bağlantısını kullanır. Panel desteklenen işleri HTTPS kuyruğuyla gönderir; oyun sunucusu işlemi kendi ortamında çalıştırıp seçilmiş sonucu döndürür. MySQL parolasını web sitesine kopyalamanız veya MySQL portunu internete açmanız gerekmez.

  1. Bağlantı, Sunucular bölümündeki her sunucu için varsayılan olarak açıktır; tosun-ac 9.6.14 ve sonraki sürümlerde ayrıca etkinleştirmeniz gerekmez. Bir sunucuda kapatmak için Sunucular → sunucu → Tosun Connect kartı → Bağlantıyı kapat adımlarını izleyin. Eski tam aynalama configs/anticheat_config.lua içinde ts.panelMirror.enabled = true ile bilerek açılmışsa köprü otomatik olarak kapalı kalır; böylece eski aynalama çalışmaya devam eder.
  2. tosun-ac 9.6.14 ve sonraki sürümlerde bağlantı için server.cfg içine satır eklemeniz gerekmez; yalnız doğru lisansla set tosun_ac_license satırı kalsın. Eski tosun_db_bridge_enabled ve tosun_db_bridge_money_write satırları bu sürümlerde dikkate alınmaz, silebilirsiniz; eski paketi çalıştıran sunucuda yeni paket kurulana kadar bu satırlar gerekir. Çevrimiçi bakiye düzenleme de varsayılan olarak açıktır ve yalnız yönetici (admin) veya sahip (owner) rolündeki panel kullanıcıları kullanabilir.
  3. admin.tosundev.com adresine dışarı HTTPS erişimine izin verin. Sunucu konsolunda durumu kontrol edip panelden küçük bir oyuncu listesi isteyin.
# Sunucu konsolunda çalıştırın:
tosunac_db_status

Yalnız lisansla topluluk sitesi#

Topluluk siteniz oyun verilerini aynı Tosun Connect bağlantısıyla okur. Sunucu için panelde oyun veritabanı ayarı girilmediyse site için MySQL kullanıcısı, GRANT veya açık 3306 portu gerekmez: Oyuncular, Banlar, Anticheat tespitleri ve Loglar sayfaları verilerini açıldıklarında oyun sunucusundan alır.

Bu modda siteden arama, filtreleme, ban kaldırma, ban ekleme, para ve envanter düzenleme yapılamaz. Ban kaldırmak için oyunda /ts unban <banID>, sunucu konsolunda ts unban <banID> kullanın. Her sayfa yeni bir istektir ve yaklaşık 10 saniye içinde yanıtlanır; oyun sunucusu kapalıysa veya bağlantı Tosun Connect kartından kapatıldıysa sayfa boş liste yerine bunu belirtir.

Ad, meslek, bakiye, envanter ve araç modeli için oyun sunucusunda tosun-ac 9.6.17 veya üstü gerekir. Eski paketlerde bazı MySQL/MariaDB sunucuları yalnız karakter kimliğini döndürür.

Doğrudan oyun veritabanı bağlantısı isteğe bağlıdır. Yalnız sitede arama ve düzenleme istiyorsanız ekleyin: yalnız Tosun panel sunucusunun IP adresinden bağlanabilen bir veritabanı kullanıcısı oluşturun (adresi destekten teyit edebilirsiniz), oyun veritabanında SELECT, INSERT, UPDATE ve DELETE yetkisi verin, 3306 portunu yalnız bu adrese açın ve bilgileri Sunucular bölümünde sunucunun veritabanı ayarlarına (Doğrudan MySQL · Gelişmiş) girin. Panel bu bilgileri yalnız bağlantı testi başarılı olursa kaydeder. Bu bilgiler girilmedikçe yalnız lisanslı kurulum kullanılır.

  • Oyuncular: her sayfada 25 karakter; karakter kimliği, ad ve meslek. Ekip nakit ve bankayı da görür.
  • Ekip (moderatör ve üstü) bir karaktere tıklayarak çevrimiçi durumu, bakiyeleri ve envanteri görebilir, o karakterin araçlarını yükleyebilir.
  • Banlar ve anticheat tespitleri: her sayfada 25 kayıt, salt okunur. Tespitler en eskiden yeniye, banlar ban kimliği sırasıyla listelenir.
  • Panodaki oyuncu, ban ve tespit toplamları “—” gösterir: bağlantıda sayım işlemi yoktur, bu yüzden tahmini bir sayı gösterilmez.

Hangi verilerin geldiğini öğrenin#

Bağlantı varsayılan olarak açıktır; set tosun_ac_license dışında bağlantı için server.cfg içine satır eklemeniz gerekmez. QBCore/Qbox için players ve player_vehicles, ESX için users ve owned_vehicles; yasaklama ve tespit kayıtları için ts_anticheat ve ac_detections okunabilir. Desteklenen işlemler oyuncu listesi, tek karakter ayrıntısı, o karakterin araçları, yasaklamalar ve anticheat kayıtlarıdır. Bu altı izinli tablo tüm framework verileri demek değildir; özel stash, işletme, ev ve banka tabloları otomatik keşfedilmez.

Envanter sonucu yalnız seçilmiş eşya alanlarını içerir. Saklanan envanter verisi sınırlandırılır ve en fazla 100 kayıt gezilir. Tüm özel tablolar, stash depoları veya rastgele eşya metadata alanları kopyalanmaz. Kesilmiş envanter, kısmi sonuç demektir; görünmeyen eşyaların bulunmadığı anlamına gelmez. Tam inceleme için oyunun desteklenen envanter araçlarını kullanın.

Yük oluşturmadan durumu değerlendirin#

Bridge boşta yaklaşık 10 saniyede bir HTTPS ile paneli kontrol eder; oyun veritabanını sorgulamaz. Liste sayfası en fazla 25 sonuç, karakter detayı tek sonuç getirir. Sonuç 65.536 baytla sınırlıdır; istenmiş şema bilgisi beş dakika önbelleğe alınır. Eksik veya uygun olmayan benzersiz/sahip indeksleri ve 64 satırı aşan indeks bilgisi doğrulanamazsa veri sorgusu çalıştırılmaz. unsupported_index kayıt olmadığı anlamına gelmez; bazı uygun birleşik indeksler araç sorgularında desteklenir.

  • oxmysql_unavailable: başlatma sırasını ve mevcut bağlantıyı kontrol edin.
  • unsupported_framework veya schema_unavailable: gerçek framework, tablo ve sütun uyumluluğunu inceleyin.
  • unsupported_index: koşullar doğrulanamadı; sorgu çalışmadı. Eksik, uygunsuz veya taşmış indeks bilgisini veritabanı yöneticisine inceletin; üretim indekslerini körlemesine değiştirmeyin.
  • request_expired veya eski bağlantı durumu: yeni okuma istemeden bağlantıyı ve isteğin yaşını kontrol edin.

Bakiye değişikliklerini bilinçli yapın#

Çevrimiçi bakiye düzenleme varsayılan olarak açıktır. Yönetici (admin) veya sahip (owner) rolündeki panel kullanıcıları (ekonomi yetkisi), onay özetini gördükten sonra desteklenen çevrimiçi bir karakterin nakit veya banka toplamını ayarlayabilir. İşlem bakiyeyi kesin bir son değere ayarlar; her tekrarda aynı tutarı eklemez. Değişiklik öncesinde beklenen mevcut bakiye karşılaştırılır; eşleşmezse stale_balance döner ve hiçbir şey değişmez. Her istek denetim kaydına yazılır.

Çevrimdışı SQL güncellemesine geri dönüş yapılmaz. Belirsiz işlem kaydı otomatik tekrarı engellemek için saklanır. Sadece inceleme yapan personele yönetici veya sahip rolü vermeyin. Bir sunucuda bakiye düzenlemeyi durdurmak için o sunucunun Tosun Connect kartında Bağlantıyı kapat düğmesini kullanın (okumalar da durur) ya da set tosun_db_bridge_manual "1" ile manuel moda geçin; bu modda tosun_db_bridge_enabled ve tosun_db_bridge_money_write server.cfg’den okunur ve "1" yapılmadıkça kapalı kalır.

  1. Karakteri ve hesap bakiyesini okuyun, hedef son tutarı doğrulayın ve işlemi bir kez yapın.
  2. stale_balance gelirse tekrar okuyup değerlendirin; arada oyuncu para kazanmış veya harcamış olabilir.
  3. unknown_outcome gelirse durun; canlı bakiye ve işlem kayıtlarını karşılaştırın. İlk işlemin sonucunu bilmeden yeni yazma göndermeyin.

Kayıtlı listeyi canlı karakter ayrıntısından ayırın#

Oyuncu listesi kayıtlı karakter satırlarından gelir; sürekli canlı veri akışı değildir. Karakter ayrıntısı açıldığında desteklenen çevrimiçi framework’ün bakiyeleri kayıtlı değerlerin yerine kullanılabilir; uygunsa o oyuncunun güncel ox_inventory öğeleri okunur. Hatırladığınız oturum numarası yerine kalıcı character_id ile seçim yapın. Panelde sıfırları yorumlamadan veya listeyi tam kabul etmeden önce okunamayan bakiye göstergelerine ve eksik envanter uyarısına bakın. Geliştiriciler bunun karşılığı olan balance_available ve inventory_truncated işaretlerini inceleyebilir. Okunamayan alan veya kısmi envanter, paranın ya da eşyanın kaybolduğunu kanıtlamaz. Araç sonuçları seçilmiş kayıtlı alanları gösterir; aracın o anda doğmuş olduğunu veya etkin bir garaj oturumuna ait bulunduğunu göstermez.

  1. Bilinen tek karakterin ayrıntısını saatini kaydederek oyunla karşılaştırın; çevrimiçi durumu ve seçilen hesap da aynı olsun.
  2. Veri uyuşmuyorsa işlem yapmadan önce karakter kimliğini, sonucun liste mi ayrıntı mı olduğunu ve kullanılabilirlik işaretlerini kontrol edin.
  3. Yeniden bağlanma veya karakter değiştirme sonrasında önceki karakterin sonucunu kullanmak yerine yeni ayrıntı isteyin.

Veritabanı dökümü yerine sayfalı inceleme yapın#

Panel kuyruğu sunucu başına en fazla üç bekleyen veya alınmış istek ve dakikada on iki yeni istek kabul eder. İşin ömrü 120 saniyedir; sonuçlar geçicidir; istek sona erdikten beş dakika sonra temizlenmeye uygun olur, garantili bir silinme saati yoktur. Bu sınırlar otomatik bütün veritabanını toplamak için değil, hedefli yönetim içindir. Panelde sonraki sayfa denetimlerini kullanın; geliştiriciler has_more ve next_cursor alanlarını yalnız aynı işlem ve karakter için izlemelidir. Boş sonraki sayfa ile başarısız sorgu farklı durumlardır. Gerekli tekil anahtarlar ve araç sahibi indeksleri denetlenir; uyumsuz yapı güvenli biçimde durabilir. Uygulamaya etkisini ve sorgu planını değerlendirmeden, yalnız hatayı susturmak için üretim sütunlarını yeniden adlandırmayın veya indeks eklemeyin.

  1. Panelde bir seferde bir sayfa okuyun. Özel entegrasyonda cursor’u işlemiyle tutun; yalnız has_more doğruysa devam edin.
  2. queue_full veya rate_limited sonucunda aynı ekranları tekrar tekrar açmak yerine sürmekte olan işlerin bitmesini bekleyin.
  3. unsupported_index için veritabanı sorumlusundan önce bir kopyada değerlendirme isteyin; şema bilgisi beş dakika önbellekte kalabilir.

Belirsiz işlemleri silmeden erişimi duraklatın#

Yalnız inceleme için personele gereken okuma yetkilerini verin; bakiyeyi yalnız yönetici ve sahip rolleri düzenleyebilir. Bir sunucunun bağlantısını durdurmak için Sunucular → sunucu → Tosun Connect kartında Bağlantıyı kapat düğmesine basın; o sunucu için tüm okumalar ve bakiye düzenlemeleri durur, bağlantı aynı karttan yeniden açılabilir. Okumaları açık tutup bakiye düzenlemeyi kapatmak isterseniz manuel modu kullanın: server.cfg içine set tosun_db_bridge_manual "1" ve set tosun_db_bridge_enabled "1" satırlarını ekleyin, tosun_db_bridge_money_write satırını eklemeyin ya da "0" bırakın. Manuel modda bu iki değer server.cfg’den okunur ve "1" yapılmadıkça kapalı kalır; bu yüzden set tosun_db_bridge_enabled "1" olmadan manuel mod okumaları da durdurur. Panel kapatıldığında bekleyen veya alınmış işler başarısız işaretlenir; alınmış para yazması unknown_outcome olur çünkü etkisi daha önce gerçekleşmiş olabilir. Bu yüzden oyun tarafındaki işlem günlüğü silinebilir bir önbellek değildir. Yeni denemeyi zorlamak için KVP kayıtlarını silmek, tekrar işlemi önleyen kanıtı kaldırabilir. Yakalanan oyuncu verilerine erişimi de değerlendirin: köprü, herkese açık paylaşılan ekran görüntüsünü ya da destek kaydını özel hâle getirmez.

  1. Planlı kapatmadan önce okumaların bitmesini bekleyin; çözümlenmemiş para sonucunu canlı bakiye ve denetim kayıtlarıyla araştırın.
  2. Kapatınca panel durumunu ve tosunac_db_status çıktısını doğrulayın; yeni kuyruklu incelemeyi başarılı kabul etmeyin.
  3. Bağlantıyı karttan yeniden açtığınızda tek okumayla başlayın; izinler, yetenekler ve önceki belirsiz işlemler incelenene kadar bakiye düzenlemeyin.
# Server console / Sunucu konsolu:
tosunac_db_status

Şema uyumluluğunu oyuncu verisi değiştirmeden inceleyin#

schema_unavailable veya unsupported_index alırsanız önce oyunun kullandığı veritabanının gerçekten seçili olduğunu doğrulayın. Aşağıdaki örnek yalnız tablo sütunlarının adlarını ve türlerini okur; karakter bakiyesi, envanter veya araç kaydı değiştirmez. Bu kontrol zorunlu bir kurulum adımı değildir. Şema hatasını araştıran yetkili veritabanı sorumlusu, mevcut özel veritabanı aracında çalıştırabilir. SQL metnini panel köprüsüne göndermeyin; köprü yalnız tanımlı işlemleri kabul eder.

QBCore/Qbox oyuncu okumalarında players tablosunun citizenid, money, job ve charinfo sütunları; ESX okumalarında users tablosunun identifier, accounts ve job sütunları gerekir. Tablonun bulunması tek başına yeterli değildir. Karakter anahtarı desteklenen türde olmalı ve tek sütunlu, tam uzunlukta benzersiz indeksle eşleşmelidir.

Araç okumaları ayrıca sahip ve araç anahtarına uygun indeks düzenini denetler. Bu kontrolün amacı yoğun sorguları zorlamamaktır. Özel bir garajın farklı tablo adını, tabloyu yeniden adlandırarak düzeltmeye çalışmayın; önce framework ve garaj geliştiricisinin uyumluluk değerlendirmesini alın.

  • Hata kodunu, framework sürümünü ve etkilenen okuma türünü not edin.
  • Sütun ve indeks yapısını karşılaştırın; oyuncu satırlarını destek talebine eklemeyin.
  • Gerekli değişikliği önce test kopyasında değerlendirin. Köprü şema önbelleği nedeniyle yeni yapıyı hemen görmeyebilir.
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
  AND TABLE_NAME IN ('players', 'users', 'player_vehicles', 'owned_vehicles')
ORDER BY TABLE_NAME, ORDINAL_POSITION
LIMIT 128;

Karakter görünüyor ama araç sonucu boşsa#

Örneğin oyuncu listesinden bir karakter seçtiniz, ayrıntısı açılıyor fakat araç listesi boş geliyor. Önce tamamlanmış başarılı sonuç ile başarısız işi ayırın. Başarılı boş liste, o okumanın eşleşen kayıt döndürmediğini ifade eder; oyuncunun hiçbir sistemde aracı olmadığına dair genel bir sonuç değildir. query_failed, schema_unavailable veya unsupported_index ise boş liste olarak kabul edilmemelidir.

Seçimin aynı kalıcı character_id üzerinden yapıldığını doğrulayın. Oyuncunun yeniden bağlanınca değişebilen oturum numarası, karakter anahtarı yerine kullanılamaz. QBCore/Qbox araç sahibini player_vehicles.citizenid ile, ESX owned_vehicles.owner ile eşleştirir. Özel garaj başka bir tablo veya sahip biçimi kullanıyorsa standart köprü o kaydı otomatik keşfetmez.

Birden fazla karakterli hesapta yanlış karakteri seçmek benzer bir belirti oluşturabilir. Bilinen tek aracın oyun tarafındaki kayıt bağlamını yetkili garaj sorumlusuna doğrulatın. Bu sırada köprü üzerinden bakiye yazmak, aracı yeniden oluşturmak veya kaynak tabloyu temizlemek tanı için gerekli değildir.

  • Sunucu kimliği, karakterin maskelenmiş referansı, işlem zamanı ve iş durumunu kaydedin.
  • Sonraki sayfa varsa aynı karakter bağlamıyla devam edin; cursor başka karaktere taşınmamalı.
  • Destek kaydında başarılı boş sonuç mu yoksa tam hata kodu mu aldığınızı belirtin; kişisel oyuncu verilerini çıkarın.

Sayı, metin ve eksik alanı birbirinden ayırın#

Köprü, ham veritabanı satırını aynen göstermez; desteklenen alanları belirli tür ve uzunluklarda normalleştirir. Karakter para verisi JSON içindeki sayılardan okunur. Örneğin 1200 ile tırnak içindeki "1200" aynı saklama türü değildir; özel script para alanını metne çevirdiyse bakiye okunamıyor işareti oluşabilir. Bakiye okunamadığında panel — gösterir; bu işaret sıfır bakiye anlamına gelmez. Envanterin seçilmiş alanları ad, etiket, adet, slot ve kaliteyken özel metadata, stash içeriği veya işletme kasası bu sonuçların kapsamına girmez.

Araç yakıtı, motoru ve durumu gibi seçilmiş değerler metin olarak dönebilir; yalnız biçimden matematiksel karşılaştırma üretmeyin. Karakter anahtarının char/varchar şema uzunluğu en fazla 96’dır; aktarılan metin anahtarı ayrıca 96 baytla sınırlıdır, çok baytlı karakterlerde bu sınırlar farklıdır; int, bigint ve mediumint de desteklenir. Özel ikili anahtar biçimini standart kabul etmeyin. Uzun metinler ve envanter kesilebilir; görünmeyen bilgi silinmiş sayılmaz. Eksik alan örneğinde önce gerçek kaynak biçimini geliştiriciye doğrulatın. Tip dönüşümü gerekiyorsa köprüyü zorlamak yerine oyunun kendi veri sözleşmesini test ortamında değerlendirin; üretim verisini yalnız ekranı doldurmak için değiştirmeyin.

Bakiye yazmasını somut bir kabul örneğiyle kapatın#

Yalnız yetkili, onaylı bir düzeltmede örnek olarak çevrimiçi karakterin nakdini 1200’den 1250’ye çıkarmak istediğinizi düşünün. Hedef son tutar 1250’dir; 50 yazmak elli eklemek değil, son bakiyeyi elliye ayarlamaktır. Banka hesabını yanlışlıkla seçmediğinizi ve kalıcı karakter kimliğini son canlı ayrıntıyla eşleştirdiğinizi kontrol edin. Onay özeti karakteri, hesabı ve mevcut tutardan yeni toplam tutara geçişi gösterir. Tutar alanı, negatif olmayan tam son değer içindir; özel para birimleri veya işletme bakiyesi bu işlemin yerine kullanılamaz.

İş kuyruğa alınınca kabul kaydını kapatmayın. Tamamlanan sonucun aynı karakter ve hesap için before=1200, after=1250 olduğunu doğrulayın; ardından olağan bir karakter okumasıyla güncel durumu kontrol edin. Oyuncu bu arada harcama yaptıysa yeni okuma farklı olabilir; tamamlanmış sonucu otomatik tekrar gerekçesi saymayın. stale_balance eski varsayımı, unknown_outcome ise doğrulanamayan etkiyi araştırmayı gerektirir. İşlem kimliği, saat ve temizlenmiş sonuç özeti inceleme için yeterlidir. Sonuç belirsizken yeni bir yazma göndermeyin; kesinleşmiş amaç ve mevcut bakiye yeniden değerlendirilmeden düzeltmeye devam etmeyin.

Yanıt süresi SQL iptali değildir#

Varsayılan SQL yanıt bekleme süresi 5.000 ms’dir. query_timeout geldiğinde panel beklemeyi bitirmiştir; gerçek sorgu hâlâ çalışıyor olabilir. İlk gerçek callback gelene kadar SQL kapasitesi dolu kalır, yeni okuma query_busy döner. Geç gelen cevap önceki ekran sonucunu değiştirmez. Hiç callback gelmezse süre sınırı kapasiteyi otomatik boşaltmaz. Sunucu yöneticisi bağlantı ve veritabanı durumunu kontrol etmelidir; kaynağı yeniden başlatmak SQL’i iptal ettiğini kanıtlamaz.

Yalnız sunucu sahibi isterse server.cfg içine aşağıdaki set satırını ekleyebilir. Değer 1.000–10.000 ms aralığına sınırlandırılır; geçersiz veya sonsuz sayı 5.000 ms olur. Bu ayar sorguyu hızlandırmaz ve yeni sorguları otomatik tekrar ettirmez.

Çevrimiçi bakiye düzenleme, yönetici (admin) veya sahip (owner) rolündeki panel kullanıcıları (ekonomi yetkisi) için varsayılan olarak açıktır; manuel modda (set tosun_db_bridge_manual "1") tosun_db_bridge_money_write "1" yapılmadıkça kapalı kalır. Desteklenen çevrimiçi karakter ve paneldeki onay gerekir. İşlem yalnız nakit veya banka toplamını, beklenen mevcut bakiye kontrolüyle değiştirir; çevrimdışı SQL yazma yapılmaz. unknown_outcome veya bağlantı belirsizliğinde işlem otomatik tekrarlanmaz. Yeni yazmadan önce canlı bakiye ve işlem kayıtlarını inceleyin; tekrar denemeyi zorlamak için belirsiz işlem KVP kayıtlarını silmeyin.

set tosun_db_bridge_query_timeout_ms "5000"

Tek SQL dosyası ve iki farklı veritabanı#

Yeni ZIP içindeki tek içe aktarma noktası tosun-ac/INSTALL.sql dosyasıdır. Aynı tabloları ikinci bir eski SQL dosyasıyla tekrar kurmayın. Bu dosya oxmysql üzerinden FiveM sunucunuzun kullandığı oyun veritabanına aittir; kiraladığınız web sitesinin hesap ve tema veritabanına rastgele aktarılmaz. Eski tablolar eksik sütunlarla kaldıysa yeni kurulum dosyası önce gerekli sütunları onarır, sonra varsayılanları ekler; mevcut ban ve özel ayarları korur.

  1. Önce doğru oyun veritabanının yedeğini alın; bağlantının kullandığı veritabanı adını kontrol edin.
  2. HeidiSQL/phpMyAdmin içe aktarma ekranında yalnız INSTALL.sql dosyasını çalıştırın; konsolda mysql komutu kullanıyorsanız hedef veritabanını açıkça belirtin.
  3. tosunac_db_check gerçek sorgu kontrolünü, tosunac_db_status köprünün durumunu gösterir. Köprü varsayılan olarak açıktır ve server.cfg satırı gerektirmez. Manuel modda (set tosun_db_bridge_manual "1") tosun_db_bridge_enabled "1" yoksa veya configs/anticheat_config.lua içinde eski tam yansıtma (ts.panelMirror.enabled = true) bilerek açıksa enabled=false beklenen durumdur. Lisansın girilmesi MySQL bağlantısı oluşturmaz.
  4. Panel bağlantısı (Tosun Connect) ve çevrimiçi bakiye düzenleme varsayılan olarak açıktır. server.cfg dosyasına tosun_db_bridge_enabled veya tosun_db_bridge_money_write satırı eklemeyin; eski satırlar 9.6.14 ve sonraki paketlerde yok sayılır ve silinebilir (daha eski paketler, güncel paket kurulana kadar bu satırlara ihtiyaç duyar). Bakiyeyi yalnız admin veya owner rolündeki panel kullanıcıları ayarlar: karakter çevrimiçi olmalı, beklenen bakiye tutmalı (tutmazsa stale_balance döner ve hiçbir şey değişmez), panel göndermeden önce onay özeti gösterir, her istek denetim kaydına yazılır ve belirsiz sonuç otomatik tekrarlanmaz; önce oyundaki bakiyeyi kontrol edin. İşlem toplamı ayarlar, üzerine ekleme yapmaz. Bağlantıyı bir sunucuda tamamen kapatmak için (tüm panel okumaları ve bakiye düzenlemeleri durur) Panel → Sunucular → sunucu → Tosun Connect kartı → Bağlantıyı kapat yolunu kullanın; aynı karttan yeniden açabilirsiniz. Oyun DB parolasını web siteye veya oyunculara göndermeyin.
mysql -u YOUR_DB_USER -p YOUR_GAME_DATABASE < tosun-ac/INSTALL.sql

# txAdmin console:
tosunac_db_check
tosunac_db_status