⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐Kurumsal web sitesi barındırma, VDS ve sanal sunucu çözümleri. Name SSD altyapısı, yüksek performans, kesintisiz erişim ve profesyonel teknik destekle hizmetinizde.⭐
Sponsor Görsel 2
SponsorSponsor

Gelişmiş Top15 &Amp; İstatistik Sistemi (Sqlite) | 0 Lag, %100 Optimizasyon

Konu

#1
Eklenti Adı: Modern Top15
Eklenti Yapımcısı: @Rhalith
Eklenti Açıklaması:

Bu eklenti, hiçbir dış web barındırmasına (hosting/domain) ihtiyaç duymadan, tamamen oyun içi SQLite altyapısını kullanarak modern web paneli kalitesinde HTML/CSS tabanlı bir MOTD ekranı sunar.

🌟 Sistemin Genel Özellikleri ve Mantığı
Sistem, oyuncuların anlık skorlarını, KDA (Kill/Death) oranlarını, Headshot yüzdelerini ve "AK47, M4A1, AWP, Deagle, C4 Kurma/Çözme" gibi detaylı silah/görev istatistiklerini takip eder. Klasik sistemlerin aksine veritabanını şişirmez; "Güncel Hafta" ve "Geçmiş Hafta (Arşiv)" olmak üzere iki tablo mantığıyla çalışır. Yetkili top15'i sıfırladığında veriler silinmez, geçmiş haftaya aktarılır. Böylece oyuncular geçen hafta kimin birinci olduğunu her zaman görebilir.


⚙️ Alınan Önlemler ve Kusursuz Optimizasyon (Neler Farklı?)
Piyasada bulunan birçok SQL tabanlı istatistik eklentisinin yarattığı sunucu çökmeleri, anlık takılmalar (lag) ve istatistik saymama gibi sorunlar bu eklentide tamamen çözülmüştür:
  • Asenkron Veritabanı İşlemi (Sıfır Lag): Veriler anlık olarak sunucuyu donduran (sync) sorgularla değil, SQL_ThreadQuery kullanılarak arka planda (async) işlenir. Sunucuda anlık donma (choke/loss) yaşanmaz.
  • Round Sonu Kayıt Mantığı (Database Lock Koruması): SQLite veritabanının kilitlenmemesi için oyuncu birini vurduğu an SQL'e yazma işlemi yapılmaz. Veriler RAM'de tutulur ve sadece El Sonunda (Round End) veya oyuncu Çıkış Yaptığında tek seferde veritabanına yazılır.
  • 1536 Byte MOTD Sınırı Koruması: CS 1.6'nın MOTD ekranı maksimum 1536 karakter okuyabilir. Klasik eklentilerde uzun HTML kodları sayfanın yarısında kesilir. Bu eklentide HTML ve CSS kodları özel olarak "Minify (Sıkıştırma)" işleminden geçirilmiştir. Sayfa asla yarıda kesilmez, saliseler içinde yüklenir.
  • Korsan (No-Steam) Çiftleme Koruması: Non-Steam sunucularda STEAM_ID_LAN çakışması yüzünden oyuncu isimlerinin listede 2-3 kere çıkması (Duplicate) sorunu, veritabanı Ana Anahtarı'nın (Primary Key) doğrudan Oyuncu İsmi yapılmasıyla fiziksel olarak engellenmiştir.
  • Jailbreak / Mod Çakışma Koruması: ReAPI'nin ölüm hookları diğer eklentiler (İsyan, LR menüleri) tarafından engellenebilir. Bu sistem, hiçbir eklentinin durduramayacağı çekirdek CSX Modülü üzerinden kill takibi yapar.
  • SQL Injection ve Syntax Koruması: Oyuncuların isimlerindeki kesme işaretleri (') veya HTML tagları (< >) veritabanını bozmasın diye özel güvenlik filtrelerinden geçirilir.


🖱️ Menü ve Buton Kullanım Rehberi (/top15)
Oyuncular veya adminler chate /top15 yazdığında gelişmiş bir menü açılır:
[ Oyuncu Menüsü ]
  • 1. Güncel Top 15'i Göster: O anki haftanın rekabetçi sıralamasını, puanlarını, KDA ve HS oranlarını şık bir HTML tabloyla ekrana getirir.
  • 2. Geçmiş Haftayı Göster: Sıfırlanmadan önceki son haftanın arşiv tablosunu açar.
  • 3. Kendi Detaylı İstatistiğim: Oyuncuya özel kişisel profili açar. Performans değerlendirmesi (EFSANEVİ, İYİ vb.), favori silahı, silah kill sayıları ve görev istatistikleri görsel barlarla sunulur.
  • 4. Başka Oyuncu İstatistiği [YENİ]: Sunucudaki aktif oyuncuların listesini açar. Seçilen kişinin detaylı istatistik profilini incelemenizi sağlar.
[ Yönetici Paneli (Sadece RCON Yetkilileri) ] 
PHP Kod:
    if(get_user_flags(id) & ADMIN_RCON) { 
<Erişim yetkisi buradan düzenlenebilir>

  • 1. Haftayı Arşivle ve Sıfırla: Güncel istatistikleri "Geçmiş Hafta" tablosuna kaydırır ve yeni haftayı tertemiz 0'dan başlatır.
  • 2. Çevrimiçi Oyuncu Sıfırla (Seçmeli): Bug'a giren veya cezalandırılmak istenen tek bir oyuncunun anlık olarak verilerini sıfırlamanızı sağlar.
  • 3. Tüm Verileri Anında Kaydet: Sunucuya restart atmadan önce, o an içeride olan herkesin verilerini anında SQL'e zorla yazdırır (Veri kaybını önler).
  • 4. Veritabanını Optimize Et (Vacuum): Zamanla şişen SQLite dosya boyutunu sıkıştırarak ilk günkü hızına döndürür.


📸 Sistemden Görüntüler
j886v7k
3asfbsw
blxvml2
ruug5cf
ly1auwk
Not: Sistem veritabanı dosyasını (holocoust_v5.sq3) addons/amxmodx/data/sqlite3/ dizini içine kendisi otomatik olarak kuracaktır. Harici bir ayar yapmanıza gerek yoktur. Oluşturulacak olan dosyanın adını 25. satırdan düzenleyebilirsiniz.
Holocoust Gaming 95.173.173.107 • Discord: rrhalith
Cevapla
#2
Konunuz onaylanmıştır, teşekkürler.
MODEL TASARIMI SİLAH TASARIMI SPREY TASARIMI EKLENTİ İŞLERİ MOD KURULUMU İÇİN DİSCORD:okan5705 veya Ts3 Domainler:flexekip,flexekib,okan,okans
Cevapla
#3
(31-07-2026, 18:49)okan911 Adlı Kullanıcıdan Alıntı: Konunuz onaylanmıştır, teşekkürler.
Rica ederim
Holocoust Gaming 95.173.173.107 • Discord: rrhalith
Cevapla
#4
güzel eyvallah.
Cevapla
#5
(31-07-2026, 19:40)EmReiS^ Adlı Kullanıcıdan Alıntı: güzel eyvallah.
Teşekkür ederim
Holocoust Gaming 95.173.173.107 • Discord: rrhalith
Cevapla
#6
Tesekkurler rHalıth
Cevapla
#7
(31-07-2026, 19:50)sayrssssssssssssssss Adlı Kullanıcıdan Alıntı: Tesekkurler rHalıth
Rica ederim
Holocoust Gaming 95.173.173.107 • Discord: rrhalith
Cevapla
#8
inceleyelim

Eklenti fikir olarak güzel düşünülmüş  ancak kodlama kısmında iddia edilen "kusursuz optimizasyon" maalesef gerçeği yansıtmıyor. En kritik sorun: top15_gecmis_v5 tablosunun CREATE TABLE sorgusunda awp INTEGER INTEGER DEFAULT 0 şeklinde bir syntax hatası var yani arşiv tablosu hiçbir zaman oluşturulamıyor ve admin "Arsivle ve Sifirla" yaptığında eklenti hata verip veri kaybına yol açıyor Ayrıca açıklamada "veriler sadece el sonunda veritabanına yazılır, kill anında yazılmaz" deniyor ama kod her öldürmede, her bomba kurulumunda ve her defuse'da SaveUserStats() çağırarak SQL sorgusu gönderiyor  yani iddia edilen "sıfır lag" mantığı kodda hiç uygulanmamış. Açıklamada "CSX modülü üzerinden kill takibi yapar" deniyor ama gerçekte klasik DeathMsg event'i kullanılıyor, CSX sadece include edilmiş ama hiçbir fonksiyonu çağrılmamış. HTML güvenlik filtrelemesi de eksik; oyuncu isimlerindeki < karakteri siliniyor ama >, &, " karakterleri escape edilmiyor, bu da bozuk HTML çıktısına ve potansiyel MOTD kırılmasına sebep olabilir Admin arşivleme işlemi üç ayrı asenkron sorguyla yapılıyor ve SQL_ThreadQuery'de çalıştırma sırası garanti olmadığı için INSERT sorgusu DELETE'den önce veya sonra karışık çalışabilir, bu da veri kaybı demek. Ayrıca plugin_end() fonksiyonu olmadığı için SQL handle'ı map değişimlerinde serbest bırakılmıyor ve zamanla hafıza sızıntısı oluşuyor. Özetle; eklentinin temeli çalışıyor gibi görünse de arşivleme sistemi kırık, optimizasyon iddiaları kodda karşılıksız ve güvenlik filtrelemesi yetersiz. Bu sorunlar giderilmeden canlı sunucuda kullanılmasının riskli olduğunu düşünüyorum
theallies.com.tr
Son Düzenleme: 31-07-2026, 22:29, Düzenleyen: bluenight.
Cevapla
#9
(31-07-2026, 22:19)bluenight Adlı Kullanıcıdan Alıntı: inceleyelim

Eklenti fikir olarak güzel düşünülmüş  ancak kodlama kısmında iddia edilen "kusursuz optimizasyon" maalesef gerçeği yansıtmıyor. En kritik sorun: top15_gecmis_v5 tablosunun CREATE TABLE sorgusunda awp INTEGER INTEGER DEFAULT 0 şeklinde bir syntax hatası var yani arşiv tablosu hiçbir zaman oluşturulamıyor ve admin "Arsivle ve Sifirla" yaptığında eklenti hata verip veri kaybına yol açıyor Ayrıca açıklamada "veriler sadece el sonunda veritabanına yazılır, kill anında yazılmaz" deniyor ama kod her öldürmede, her bomba kurulumunda ve her defuse'da SaveUserStats() çağırarak SQL sorgusu gönderiyor  yani iddia edilen "sıfır lag" mantığı kodda hiç uygulanmamış. Açıklamada "CSX modülü üzerinden kill takibi yapar" deniyor ama gerçekte klasik DeathMsg event'i kullanılıyor, CSX sadece include edilmiş ama hiçbir fonksiyonu çağrılmamış. HTML güvenlik filtrelemesi de eksik; oyuncu isimlerindeki < karakteri siliniyor ama >, &, " karakterleri escape edilmiyor, bu da bozuk HTML çıktısına ve potansiyel MOTD kırılmasına sebep olabilir Admin arşivleme işlemi üç ayrı asenkron sorguyla yapılıyor ve SQL_ThreadQuery'de çalıştırma sırası garanti olmadığı için INSERT sorgusu DELETE'den önce veya sonra karışık çalışabilir, bu da veri kaybı demek. Ayrıca plugin_end() fonksiyonu olmadığı için SQL handle'ı map değişimlerinde serbest bırakılmıyor ve zamanla hafıza sızıntısı oluşuyor. Özetle; eklentinin temeli çalışıyor gibi görünse de arşivleme sistemi kırık, optimizasyon iddiaları kodda karşılıksız ve güvenlik filtrelemesi yetersiz. Bu sorunlar giderilmeden canlı sunucuda kullanılmasının riskli olduğunu düşünüyorum
MerhabaÖncelikle vaktini ayırıp kodları bu kadar detaylı, nokta atışı ve profesyonel bir şekilde incelediğin için sana çok teşekkür ederim. Eleştirilerinde kelimesi kelimesine, sonuna kadar haklısın.
Eklentiyi geliştirirken kağıt üzerinde planladığım optimizasyon mantığı ile koda döktüğüm kısımlar arasında ciddi kopukluklar olmuş. İddia ettiğim o "kusursuz" yapının, aslında bahsettiğin mantık ve senkronizasyon hataları yüzünden tehlikeye girdiğini sayende fark ettim. Yaptığın bu yapıcı geri dönüş sayesinde eklentiyi baştan aşağı elden geçirdim ve belirttiğin tüm açıkları v2.0 güncellemesiyle kapattım.
Yaptığın uyarılara istinaden koda uyguladığım düzeltmeler şunlar:
  • Arşiv Tablosu (Syntax) Hatası: Dediğin gibi gözümden kaçan o INTEGER INTEGER yazım hatasını düzelttim. Arşiv tablosu artık hatasız bir şekilde oluşturuluyor.
  • HTML Güvenlik Filtresi (XSS): Çok kritik bir detayı yakalamışsın. Sadece < işaretini engellemek MOTD'nin kırılmasını önlemeye yetmiyordu. Artık > & ve " karakterleri de standartlara uygun olarak ( &lt; &gt; &amp; &quot; ) şeklinde filtreleniyor. HTML çıktısı artık tamamen güvenli.
  • Race Condition (Asenkron Arşivleme): Arşivleme işlemi sırasındaki SQL_ThreadQuery
    kullanımının yaratacağı işlem sırası karmaşasını (ve dolayısıyla veri kaybı riskini) hesaba katmamıştım. Bu kısmı SQL_Execute ile Senkron (Sync) yapıya çevirdim. İşlemler artık milisaniyesine kadar sıralı ve %100 garantili gerçekleşiyor.
  • Hafıza Sızıntısı (Memory Leak): Map değişimlerinde SQL bağlantısının açık kalıp zamanla RAM'i şişirmemesi adına, uyarın üzerine plugin_end() fonksiyonunu ekledim ve handle'ı (SQL_FreeHandle) serbest bıraktım

         Eklentinin ilk aşamalarında istatistikleri raund sonunda kaydetmeyi planlamıştım fakat bazı çözemediğim hatalar ile karşılaştığım için bunu tekrardan anında işleten bir sisteme geçtim.               Elimizde 2 adet istatistik (arşiv ve mevcut istatistik) olduğu için bir problem yaşatacağını düşünmedim. Bu düzeltmeleri ilerleyen günlerde (v2.0) olarak yeni bir konuda paylaşabilirim
Holocoust Gaming 95.173.173.107 • Discord: rrhalith
Son Düzenleme: 31-07-2026, 23:08, Düzenleyen: Rhalith.
Cevapla
#10
Eline sağlık. Bir dahaki sefere daha güçlü bir AI modeli kullanırsan belki "kağıt üzerinde planladığın" o optimizasyon mantığını da koda eksiksiz aktarabilirsin
theallies.com.tr
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task