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
PumpSessionTimeoutsü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
DistanceSlackmetre marjı bulunur. - Oran sınırlaması (Rate limiting). Her etkinlik ve geri çağrı (callback),
PerSecondhızında dolan ve aslaBurstdeğ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 fiyatlarConfig.Refuel.PriceLimitsiç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.
employeesiznine 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.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.