Skip to content

Anti-cheat

Anti-cheat

Tüm para ve stok kararları sunucuda alınır. İstemci pompayı çizer ve ne olduğunu bildirir; hiçbir şeyin ne kadara mal olacağını veya ne kadar eklendiğine asla kendisi karar vermez.

Sunucunun uyguladığı güvenlik önlemleri

  • Pompa oturumları. Bir pompa açıldığında sunucudan bir oturum token'ı istenir. Ödeme yapmak bu token'ı gerektirir ve faturalandırılan litreler, oturumun yapılandırılan akış hızında gerçekten ne kadar süre açık kaldığıyla sınırlıdır. Pompanın fiziksel olarak sağlayabileceğinden fazlasını iddia eden bir istemci, saatin izin verdiği miktara düşürülür.
  • Oturum zaman aşımı. Token'lar tek kullanımlıktır, onları açan oyuncuya bağlıdır ve PumpSessionTimeout süresi dolduktan sonra atılır. Süresi dolan bir oturum için hiçbir ücret alınmaz.
  • Mesafe kontrolleri. Satın alma, yakıt ikmali, şarj etme, akü değiştirme, bidon doldurma, stok siparişi verme ve her kontrol paneli eylemi, oyuncunun gerçekten o istasyonda olup olmadığını sunucuda yeniden kontrol eder; yaya konumu gecikmesi için DistanceSlack metre marjı bulunur.
  • Oran sınırlaması (Rate limiting). Her etkinlik ve geri çağrı (callback), PerSecond hızında dolan ve asla Burst değerini aşmayan, oyuncu başına düşen bir sepetten (bucket) bir token harcar. Takılı kalan bir tuş kombinasyonu çalışmaya devam eder; spam döngüsü ise neredeyse anında duvara çarpar.
  • Değer sınırlandırma (Value clamping). Fiyatlar, maaşlar, siparişler, para çekme ve yatırma işlemlerinin hepsi sunucu tarafında sınır ve tür denetimine tabi tutulur. MaxAmount üzerindeki hiçbir şey kesinlikle kabul edilmez ve fiyatlar Config.Refuel.PriceLimits içerisinde tutulur.
  • Her eylemde yetki kontrolü. Yetkili izinleri sunucu tarafında istek başına yeniden doğrulanır, arayüzden (UI) asla körü körüne güvenilmez. employees iznine sahip herhangi birini işe almak, işten çıkarmak ve düzenlemek yalnızca işletme sahibine (owner) özeldir; böylece bir çalışan kendini terfi ettiremez. Devir ve geri satma işlemleri yalnızca işletme sahibine özeldir ve istasyon adının tekrar yazılmasını gerektirir.
  • Stok ve banka sunucu durumudur. Bir satış yalnızca istasyonda gerçekten yeterli litre varsa ve müşterinin gerçekten parası varsa gerçekleşir; her iki taraf da aynı sunucu tarafı adımda hareket eder.
config.lua
Config.AntiCheat = {
    RateLimit = { Burst = 14, PerSecond = 6 },
    MaxLitresPerPay = 200.0,
    LitreGrace = 3.0,
    PumpSessionTimeout = 900,
    DistanceSlack = 15.0,
    MaxAmount = 100000000,
    MaxWage = 25000,
    JerryPourTimeout = 600,
}
Ayar Amaç
RateLimit Oyuncu başına etkinlik sepetinin patlama boyutu (Burst size) ve dolum hızı
MaxLitresPerPay Zamanlama ne derse desin, tek bir pompa veya şarj oturumu üzerindeki kesin üst sınır
LitreGrace Litre cinsinden zamanlama kontrolü toleransı. Gecikmeli bir tick'i kapsar
PumpSessionTimeout Bir oturumun geçerli kaldığı saniye süresi
DistanceSlack Bir istasyonun yarıçapına ek olarak izin verilen ekstra metre
MaxAmount Bir istemciden kabul edilen herhangi bir para değeri üzerindeki üst sınır
MaxWage Bir işletme sahibinin bir çalışanına verebileceği en yüksek maaş
JerryPourTimeout Artan kısmın artık geri talep edilememesinden önce, tamamlanmamış bir dökümün hatırlandığı saniye süresi

İnce Ayar

Varsayılan değerler normal bir sunucuya uygundur. Üzerinde oynamaya değer iki ayar şunlardır:

  • LitreGrace — kötü internet bağlantısına sahip oyuncular pompada mağdur ediliyorsa bu değeri bir veya iki litre artırın. Düşük tutun; bu ücretsiz yakıttır.
  • RateLimit.Burst — meşgul bir akaryakıt istasyonu eylemleri reddetmeye başlarsa bu değeri artırın. Daha sıkı bir denetim istiyorsanız düşürün.

MaxLitresPerPay veya DistanceSlack değerlerini çok fazla gevşetmek, bu kontrollerin var olma amacını ortadan kaldırır. Bunları yalnızca dürüst oyuncuların bariz bir şekilde engellendiği durumlarda değiştirin.