Skip to content

Anti-cheat

Anti-cheat

Setiap keputusan uang dan stok dibuat di server. Klien hanya menggambar pompa dan melaporkan apa yang terjadi; klien tidak pernah memutuskan berapa harga sesuatu atau berapa banyak yang dimasukkan.

Apa yang ditegakkan oleh server

  • Sesi pompa. Membuka pompa meminta token sesi ke server. Pembayaran memerlukan token tersebut, dan liter yang ditagih dibatasi oleh seberapa lama sesi tersebut benar-benar terbuka pada laju aliran yang dikonfigurasi. Klien yang mengklaim lebih dari yang secara fisik dapat dikeluarkan oleh pompa akan dipangkas ke batas yang diizinkan oleh waktu.
  • Kedaluwarsa sesi. Token bersifat sekali pakai, terikat pada pemain yang membukanya, dan dibuang setelah PumpSessionTimeout. Sesi yang kedaluwarsa tidak menagih apa pun.
  • Pemeriksaan jarak. Membeli, mengisi bahan bakar, mengisi daya, menukar baterai, mengisi jerigen, memesan stok, dan setiap tindakan dasbor divalidasi ulang di server bahwa pemain benar-benar berada di SPBU tersebut, dengan margin toleransi DistanceSlack meter untuk latensi posisi ped.
  • Pembatasan laju (Rate limiting). Setiap event dan callback memotong token dari wadah per-pemain yang terisi ulang sebesar PerSecond dan tidak pernah menumpuk melebihi Burst. Keybind yang macet tetap berfungsi; spam loop akan langsung diblokir seketika.
  • Pembatasan nilai (Value clamping). Harga, gaji, pesanan, penarikan, dan setoran semuanya diperiksa batas dan tipenya di sisi server. Nilai apa pun di atas MaxAmount sama sekali tidak akan diterima, dan harga dijaga di dalam Config.Refuel.PriceLimits.
  • Pemeriksaan izin pada setiap tindakan. Izin staf diverifikasi ulang di sisi server untuk setiap permintaan, tidak pernah mempercayai data dari UI. Merekrut, memecat, dan mengedit siapa pun yang memegang izin employees hanya dapat dilakukan oleh pemilik, sehingga seorang karyawan tidak dapat mempromosikan diri mereka sendiri. Transfer dan penjualan kembali hanya khusus untuk pemilik dan mengharuskan nama SPBU diketik ulang.
  • Stok dan bank adalah status server. Penjualan hanya terjadi jika SPBU benar-benar memiliki stok liter dan pelanggan benar-benar memiliki uang; kedua belah pihak bergerak dalam langkah sisi server yang sama.
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,
}
Setting Purpose
RateLimit Ukuran burst dan laju pengisian ulang wadah event per-pemain
MaxLitresPerPay Batas maksimum mutlak untuk satu sesi pompa atau pengisi daya, apa pun kata waktunya
LitreGrace Toleransi pada pemeriksaan waktu, dalam satuan liter. Menutupi tick yang mengalami lag
PumpSessionTimeout Detik sebuah sesi tetap valid
DistanceSlack Meter ekstra yang diizinkan di luar radius sebuah SPBU
MaxAmount Batas atas untuk nilai uang apa pun yang diterima dari klien
MaxWage Gaji tertinggi yang dapat diberikan oleh pemilik kepada seorang karyawan
JerryPourTimeout Detik sebuah penuangan yang belum selesai akan diingat sebelum sisa bahan bakar tidak dapat diklaim kembali

Pengaturan (Tuning)

Pengaturan bawaan sudah cocok untuk server normal. Dua hal yang layak disesuaikan:

  • LitreGrace — naikkan satu atau dua liter jika pemain dengan koneksi buruk dirugikan di pompa. Tetap jaga agar tetap kecil; itu adalah bahan bakar gratis.
  • RateLimit.Burst — naikkan jika area depan SPBU yang benar-benar sibuk mulai menolak tindakan. Turunkan jika Anda menginginkan pengawasan yang lebih ketat.

Melonggarkan MaxLitresPerPay atau DistanceSlack secara berlebihan akan menghilangkan fungsi pembatasan yang menjadi tujuan pemeriksaan tersebut dibuat. Ubah hanya jika pemain jujur secara nyata terhalang oleh sistem.