Rehbere geç

Dokümantasyon 9.6.24

Export referansı

Tosun AC 9.6.15'in herkese açık tüm export'ları: parametreler, dönüş değerleri, yan etkiler ve çağıran resource'un güvenilir olması gerekip gerekmediği. Görev odaklı bir anlatım için entegrasyon rehberiyle başlayın.

Bir export'u çağırma#

Sunucu export'larını resource'unuzun sunucu scriptlerinden, istemci export'larını da istemci scriptlerinden çağırın. Resource adı tire içerdiği için her zaman köşeli parantez biçimini kullanın: exports['tosun-ac']. exports.tosun-ac biçimi geçerli Lua değildir.

  • Sunucu id'lerini sayı olarak verin. Birkaç export id'yi doğrudan tablo anahtarı olarak kullanır.
  • Bazı export'lar senkron bir veritabanı sorgusu çalıştırır ve yield eder. Bunları bir thread'den veya event handler'dan çağırın: getBans, getBanInfo, GetDetections, isAdmin ve diğer yetkili kontrolleri, IsExemptFromPunish, ForensicLinksOf ve refreshPanelWhitelist. scanAllResources ve scanSingleResource da yield eder.
  • Resource'unuzu reddeden korumalı bir export, normalde nil döndürse bile false döndürür.
  • Bazı export'lar yalnızca ilgili özellik açıkken vardır (bkz. Özelliğe bağlı export'lar). Kayıtlı olmayan bir export'u çağırmak hata fırlatır; bu yüzden bu çağrıları pcall içine alın.
  • Birkaç export fxmanifest.lua içindeki export listelerinde yoktur (örneğin MarkTeleport, punish ve AllowWeapon). Bu listeler yalnızca bilgi amaçlıdır; export'lar çalışır.
  • Aşağıdaki tablolarda çağıran resource'un güvenilir olması gerekiyorsa son sütunda Evet yazar. Bkz. Güvenilen resource'lar.
-- kendi resource'unuzdaki sunucu scripti
local status = exports['tosun-ac']:GetIntegrationStatus()
if not status.trusted then
    print(status.hint) -- server.cfg'ye eklenecek satır
end

-- AC'ye ışınlanmayı bildir, sonra oyuncuyu taşı
exports['tosun-ac']:MarkTeleport(src, 8000)
SetEntityCoords(GetPlayerPed(src), x, y, z)

-- kendi resource'unuzdaki istemci scripti
exports['tosun-ac']:SetExempt(true, 60000, 'my_menu')

Güvenilen resource'lar#

Güven sütununda Evet ile işaretli export'lar muafiyetleri, yetkili haklarını, banları, oyuncu canını, silahları veya envanteri, karantinayı, resource'ları ve imzaları ya da tüm sunucuyu değiştirir. Yalnızca güvenilen bir resource'tan gelen çağrıları kabul ederler. Reddedilen bir çağrı hiçbir şey yapmaz ve false döndürür.

Çağıran şu durumlarda güvenilirdir: sunucu konsolu, tosun-ac'nin kendisi, config'teki ts.ExportCallerWhitelist içinde listelenen bir resource veya tosun_ac_trusted_resources convar'ında listelenen bir resource. Varsayılan config listesi qbx_core, qb-core, es_extended, ox_inventory ve ox_lib'dir.

Convar'ı tercih edin. server.cfg içinde durur ve AC güncellemelerinden etkilenmez; config dosyasındaki düzenlemeler ise AC'yi güncellediğinizde kaybolabilir. Adları virgül veya boşlukla ayırın. Güven listesi 10 saniye önbellekte tutulur; bu yüzden çalışma sırasında yapılan bir değişiklik 10 saniye içinde geçerli olur.

Her resource ve export çifti için ilk retten sonra AC, sunucu konsoluna eklenmesi gereken tam server.cfg satırını içeren bir uyarı yazar ve panel loglarına bir satır ekler. Panel log satırı her zaman Türkçedir.

Denetim modu: ts.EnforceExportCallerWhitelist = false iken güvenilmeyen çağrılar çalışır ve her resource ve export çifti sunucu konsoluna bir kez yazılır (panel log satırı yoktur). Varsayılan değer true'dur. Denetim modunu yalnızca kurulum sırasında, hangi scriptin neyi çağırdığını görmek için kullanın.

Uygulama modunu, güvenilen resource'ları kaynaklarıyla (config veya convar) ve son 20 reddedilen çağrıyı yazdırmak için sunucu konsolunda tosunac_integration çalıştırın. Bir scriptten GetIntegrationStatus() çağırın.

Güven ayrıca MarkTeleport bütçesini kaldırır: güvenilen resource'lar oyuncu başına süre sınırı olmadan ışınlanma işaretleyebilir.

Tosun AC kendi iç işleyişi için (panel köprüsü, imzalama, tarama, lisanslama, toplu yazma) dahili export'lar ve net event'ler de kaydeder. Bunlar bu referansın parçası değildir ve desteklenen bir API değildir. Bazıları güven kontrolüyle veya dahili bir çağıran kontrolüyle korunur. Bunları çağırmayın.

# server.cfg
set tosun_ac_trusted_resources "my-housing,my-clothing"

Entegrasyon ve muafiyetler#

Scriptlerinizdeki meşru işlemleri AC'ye bildiren ve bir oyuncunun muaf olup olmadığını okuyan sunucu export'ları.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
MarkTeleportsrc; ms? (varsayılan 8000, 1000 ile ts.Integration.markTeleportMaxMs arasına sınırlanır, varsayılan 15000); reason? (log etiketi)verildiyse veya zaten kapsanıyorsa true; oyuncu geçersiz veya çevrimdışıysa ya da bütçe yetmiyorsa falseYumuşak muafiyet. Bir oyuncuyu taşımadan hemen önce çağırın. Sunucu hareket kontrollerini, godmode/invisible/noclip/focus kontrollerini ve oyuncunun kendi istemci kontrollerini gevşetir. Silah, para, hasar, event kötüye kullanımı, enjeksiyon ve çökertme cezaları yine uygulanır. Çıkışta temizlenir.Hayır. Güvenilmeyen resource'lar oyuncu başına 10 dakikada 180000 ms'lik ortak bir bütçeyi paylaşır (ts.Integration.markTeleportBudgetMs). Sığmayan bir istek tamamen reddedilir.
IsMovementExemptsrcbooleanBir MarkTeleport veya DetectionExempt.serverEvents yumuşak penceresi aktifken true.Hayır
GetIntegrationStatusyok (çağıran otomatik algılanır){ version, resource, trusted, trustedVia ('config', 'convar', 'self' veya nil), enforcing, hint }Resource'unuza güvenilir olup olmadığını ve nasıl güvenildiğini söyler. Güvenilir değilse hint, server.cfg'ye eklenecek satırdır. enforcing = false denetim modu demektir.Hayır
SetPlayerExemptsrc; state (true verir, false kaldırır); durationMs? (varsayılan 30000, en fazla 300000); reason?true; güvenilmiyorsa veya src sayı değilse falseTam muafiyet: sunucu cezasına karşı dokunulmazlık ve istemci muafiyet bayrağı. İstemci kontrollerinin çoğu atlanır; yine de istemci ban yoluna ulaşan tespitler [exempt] etiketli LOG girdilerine düşürülür. whitelistPlayer, PausePlayerDetections ve BypassDetection ile tek bir zamanlayıcıyı paylaşır; bu yüzden yeni bir izin eskisini kısaltabilir ve state = false hepsini iptal eder. Çıkışta temizlenir.Evet
SetExempt (server)src; durationMs? (varsayılan 30000, en fazla 300000); reason?SetPlayerExempt ile aynıSetPlayerExempt(src, true, durationMs, reason) için takma ad. Aynı adlı istemci export'u farklı argümanlar alır.Evet
BypassDetectionsrc; detectionKey (zorunlu, ama değeri yok sayılır); durationMs? (varsayılan 5000, 500 ile 60000 arası)true; güvenilmiyorsa, src eksik veya 0 ise ya da key nil ise falseEski ad. SetPlayerExempt ile aynı tam muafiyeti verir; kendini tek bir tespitle sınırlamaz. Anahtar olarak boş bir tablo true döndürür ama hiçbir şey vermez.Evet
PausePlayerDetectionssrc; durationMs? (varsayılan 15000, en fazla 300000)true; güvenilmiyorsa veya src sayı değilse falseTek bir oyuncu için sunucu cezasına karşı dokunulmazlık ve istemci duraklatma bayrağı.Evet
PauseAllDetectionsdurationMs? (varsayılan 10000, en fazla 300000)true; güvenilmiyorsa falseŞu an çevrimiçi olan tüm oyuncular için istemci tespitlerini duraklatır. Sunucu tarafı muafiyet yoktur. Sonradan giren oyuncular duraklatılmaz. Herhangi bir sıklık sınırı yoktur.Evet
AllowWeaponsrc; weapon? ('WEAPON_PISTOL' gibi bir ad, hash, '*' veya tüm silahlar için nil); ms? (varsayılan 600000, 1000 ile 3600000 arası)true; güvenilmiyorsa, oyuncu geçersiz veya çevrimdışıysa ya da bir sayı NaN/inf ise falseOyuncunun envanterinde olmayan bir silahı tutmasına ve kullanmasına izin verir. Yalnızca silah-envanter kontrolünü (tutulan silah ve hasar) gevşetir. Çıkışta temizlenir.Evet
IsExemptFromPunishsrcboolean (true = cezalandırma)Denetim modüllerinin kullandığı merkezi kural. Yetkililer (ts.AdminBypassDetections false değilken), aktif muafiyetler, çalışma zamanı ve panel whitelist'i ve korunan oyuncular için true. Son kural yüzünden yetkililer AdminBypassDetections = false iken bile burada muaf kalır. ts.Debug açıkken her zaman false. Veritabanını sorgulayabilir.Hayır
IsPlayerProtectedsrcbooleanYetkililer, admin durumu veya aktif bir muafiyet için true. ts.AdminBypassDetections ve ts.Debug'ı yok sayar. Çalışma zamanı veya panel whitelist'ini içermez; tam kural için IsExemptFromPunish kullanın. Veritabanını sorgulayabilir.Hayır

Muafiyet seçimi#

Scriptinizi kapsayan en dar muafiyeti kullanın. Birkaç muafiyet aynı istemci muafiyet bayrağını paylaşır, bu yüzden biri diğerini bitirebilir: alan adıyla çağrılan ClearArea, SetPlayerExempt, MarkTeleport ve BypassDetection'ın da ayarladığı bayrağı sıfırlar.

ExportSunucu cezasına karşı dokunulmazlıkİstemci kontrolleriSüreGüvenilen resource gerekli mi?
MarkTeleportYalnızca hareket ve görünürlük kontrolleriMuaf (pencere yalnızca uzatılır, kısaltılmaz)Varsayılan 8 sn, en az 1 sn; çağrı başına en fazla ts.Integration.markTeleportMaxMs (varsayılan 15 sn)Hayır (bütçeli)
SetPlayerExempt, SetExempt (server)EvetMuafVarsayılan 30 sn, en fazla 300 snEvet
BypassDetectionEvetMuafVarsayılan 5 sn, 0,5 ile 60 sn arasıEvet
PausePlayerDetectionsEvetDuraklatılmışVarsayılan 15 sn, en fazla 300 snEvet
PauseAllDetectionsHayırŞu an çevrimiçi olan oyuncular için duraklatılmışVarsayılan 10 sn, en fazla 300 snEvet
whitelistPlayerEvetİstemci bayrağı yokVarsayılan 3600 sn, -1 = çıkışa kadarEvet
AddWhitelistEvet, kimliğe göreİstemci bayrağı yokYeniden başlatmaya kadar veya durationSecEvet
WhitelistAreaHayırMuafVarsayılan 30 snEvet
AllowWeaponYalnızca silah-envanter kontrolüDeğişmezVarsayılan 600 sn, en fazla 3600 snEvet
Client SetExempt, PauseDetectionsHayırO istemcide muaf veya duraklatılmışVarsayılan 30 sn veya 10 sn, en fazla 300 snHayır (herhangi bir istemci resource'u)

Yetkililer ve izinler#

AC'nin kimi yetkili saydığını okuyun ve değiştirin. Yetkili kontrolleri veritabanını sorgulayabilir; bu yüzden bunları bir thread'den veya event handler'dan çağırın.

isAdmin şu durumlarda true döndürür: elle verilmiş bir addAdmin izni; txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadmin, command.ts, command.ban, command.kick, tosun.admin, ts.admin ACE'leri ve ts.AdminBypassAces içindeki herhangi biri; group.admin, group.superadmin, group.moderator ve group.god principal'ları; ts.txAdminAuth açıkken command.kick/ban/resources/restart; admins.lua, ts.AdminMenu.allowedIds ve ts.AdminBypassIdentifiers içindeki kimlikler; ve veritabanındaki panel izinleri. builtin.everyone'a da verilmiş bir ACE sayılmaz.

isAdmin ve addAdmin kaynak kodda iki kez kaydedilir. anticheat_server.lua içindeki sürümler en son yüklenir ve çalışan onlardır; bu referans onları anlatır.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
isAdminsrc (sayı verin)booleanYukarıda listelenen kaynaklardan admin durumu. Veritabanı sonuçları olumluysa 5 sn, olumsuzsa 30 sn önbellekte tutulur. ts.AdminBypassDetections'a bakmaz.Hayır
isStaffPlayersrcbooleanBan yollarının kullandığı yetkili kontrolü. isAdmin ile aynı kaynaklar, ayrıca ts.txAdminAuth = false değilse txAdmin komut ACE'leri (command.kick/ban/resources/restart/screenshot/unban).Hayır
isAdminMenuAllowedsrcbooleanOyuncunun yetkili menüsünü açıp açamayacağı. Menü kapalıyken false. Yalnızca txAdmin'e ait ACE'ler (txadmin, tx.admin), ts.AdminBypassAces ve ts.AdminBypassIdentifiers sayılmaz. Önbelleğe alınmaz: her çağrıda bir veritabanı sorgusu.Hayır
getAdminTypesrc'tx', 'config' veya falseYanıltıcı etiket: her olumlu admin yolu aynı bayrağı ayarlar, bu yüzden yetkililer neredeyse her zaman 'tx' alır ve 'tx' txAdmin anlamına gelmez. Bunun yerine isAdmin kullanın.Hayır
addAdminsrc (sayı verin)nil; reddedilirse falseÇalışma zamanında yetkili izni: ceza dokunulmazlığı ve yetkili menüsü erişimi. Veritabanına kaydedilmez. Çıkışta temizlenmez: removeAdmin'e veya yeniden başlatmaya kadar o sunucu id'sine bağlı kalır.Evet
removeAdminsrcnil; reddedilirse falseElle verilen izni ve önbellekteki durumu kaldırır. ACE, txAdmin, admins.lua ve panel izinleri geri alınmaz ve bir sonraki kontrolde yine sayılır.Evet

Oyuncu whitelist'i ve alanlar#

Sunucu id'si whitelist'i, kimlik whitelist'i ve adlandırılmış alanlar. Çalışma zamanı listeleri yalnızca bellekte tutulur ve yeniden başlatmada kaybolur; panel whitelist'i ayrıdır.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
whitelistPlayersrc (sayı verin); durationSec? (varsayılan 3600; -1 = çıkışa kadar)nil; reddedilirse falseSunucu id'sine göre sunucu cezasına karşı dokunulmazlık. İstemci bayrağı yok. Çıkışta temizlenir. SetPlayerExempt, PausePlayerDetections ve BypassDetection bunun üzerine yazar.Evet
removeWhitelistsrcnil; reddedilirse falsewhitelistPlayer'ı bitirir. Ayrıca SetPlayerExempt, PausePlayerDetections veya BypassDetection kaynaklı sunucu dokunulmazlığını da bitirir.Evet
AddWhitelisttarget (sunucu id'si veya kimlik string'i); durationSec? (nil veya 0 = yeniden başlatmaya kadar)true; boşsa veya reddedilirse falseKimlikleri bellekteki whitelist'e ekler (veritabanına kaydedilmez). Bir sunucu id'si o oyuncunun tüm kimliklerini ekler. Kimlikler küçük harfe çevrilir ve license:, license2:, discord:, steam: veya fivem: öneki kaldırılır. Yalnızca rakamdan oluşan bir değer sunucu id'si olarak okunur; bu yüzden Discord id'lerini discord: önekiyle verin.Evet
RemoveWhitelisttarget (sunucu id'si veya kimlik)true; boşsa veya reddedilirse falseÇalışma zamanı whitelist girdilerini kaldırır. Panel whitelist tablosuna dokunulmaz.Evet
IsWhitelistedsrcbooleanHerhangi bir kimlik çalışma zamanı whitelist'inde veya önbellekteki panel whitelist'indeyse true. whitelistPlayer veya SetPlayerExempt'i içermez. ts.Debug açıkken her zaman false.Hayır
refreshPanelWhitelistyoknilPanel whitelist'ini hemen yeniden yükler (senkron sorgu). Ayrıca başlangıçtan 12 sn sonra ve her 60 sn'de bir yeniden yüklenir.Hayır
WhitelistAreasrc; areaName (boş olmamalı); durationSec? (varsayılan 30)true; geçersizse veya reddedilirse falseAdlandırılmış bir alan kaydeder ve istemci muafiyet bayrağını ayarlar. Yalnızca istemci tarafı rahatlama sağlar: hiçbir sunucu modülü alanı okumaz, bu yüzden sunucu cezasına karşı dokunulmazlık yoktur.Evet
ClearAreasrc; areaName? ('' veya nil = tüm alanlar)true; src 0 ise veya reddedilirse falseAlanı kaldırır. Bir adla çağrılırsa istemci muafiyet bayrağını da sıfırlar; bu da diğer istemci muafiyetlerini bitirir. Boş adla bayrak olduğu gibi bırakılır.Evet
IsInAreasrc; areaName? (boş = herhangi bir alan)booleanBir adla çağrılırsa süre dolumunu kontrol eder. Boş adla, süresi dolmuşlar dahil herhangi bir girdi için true döndürür.Hayır

Cezalar ve banlar#

Oyuncuları AC hattı üzerinden cezalandırın, çevrimdışı oyuncuları banlayın ve banları okuyun. Buradaki tüm yazma export'ları güven gerektirir.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
punishsrc (çevrimiçi); reason; image? (ekran görüntüsü URL'si veya verisi); configKey?; punishment? ('BAN', 'KICK' veya 'LOG')nil; reddedilirse falseTam AC ceza hattını çalıştırır. Muaf oyuncular atlanır. Bkz. punish() cezayı nasıl seçer.Evet
bansrc (çevrimiçi); reasonnil; reddedilirse false'Banned via Export' config anahtarı ve ts.punishType cezasıyla aynı hat. Her zaman kalıcı değildir: süre ts.BanDurations['default'] değeridir (0 = kalıcı) ve sunucu sahibi ts.punishType'ı KICK veya LOG yaptıysa bunun yerine atar veya loglar. Muaf oyuncular sessizce atlanır.Evet
BanPlayerExtsrc (çevrimiçi); reason? (varsayılan 'Banned by script')gönderildiyse true; güvenilmiyorsa veya çevrimdışıysa falseban() ile aynı.Evet
KickPlayersrc (çevrimiçi); reason? (varsayılan 'Kicked by script')true; güvenilmiyorsa veya çevrimdışıysa false'[Tosun AC] ' ve sebepten oluşan mesajla düz kick. Muafiyet kontrolü yoktur: yetkililer ve whitelist'tekiler de atılır. Hiçbir şey loglanmaz.Evet
offlineBandata { playername, license, steam, discord, ip, HWID, HWID2 - HWID5 } (öneksiz kimlikler); reasonnil; reddedilirse falseÇevrimdışı bir oyuncu için kalıcı ban satırı. Eksik kimlikler, bağlantıda asla eşleşmeyen yer tutucular olarak saklanır. data.playername ve reason'ı her zaman ayarlayın: bunlar olmadan ekleme STRICT sql_mode altında başarısız olur ve çağırana bildirilmez. Konsola bir satır yazar. data = nil Lua hatası fırlatır.Evet
offlineBanByLicenselicense (öneksiz hex veya 'license:...'); reason? (varsayılan 'Sebep yok'); actor? (varsayılan 'panel'); name?; citizenid?true, banID ('O' + 8 hex); false, 'license required'; reddedilirse falseKalıcı license banı ve ac_offline_bans içinde bir geçmiş satırı. Veritabanı yazmaları bitmeden döner; bu yüzden veritabanı hataları bildirilmez. Çevrimiçi olan oyuncuyu atmaz. String olmayan bir license Lua hatası fırlatır.Evet
unbanbanIDher zaman nilAsenkron: ban varsa siler, yetkili menüsü webhook'una bir Discord logu gönderir ve ts_anticheat:playerUnbanned sunucu event'ini tetikler. ac_offline_bans geçmiş satırları korunur.Evet
getBanslimit? (varsayılan 100, üst sınır yok); offset? (varsayılan 0)ban satırları, en yeniden eskiyeIP, license, Steam, Discord ve HWID sütunları dahil tam satırlar. Senkron sorgu.Hayır
getBanInfobanIDtam ban satırı veya nilSenkron sorgu.Hayır

punish() cezayı nasıl seçer#

punish(), ban() ve BanPlayerExt() tek bir hattı paylaşır. İzlediği sıra şudur.

  1. ts.AdminBypassDetections false değilse yetkililer atlanır. Aktif muafiyeti olan veya çalışma zamanı ya da panel whitelist'inde olan oyuncular atlanır. ts.Debug bu atlamaları kapatır. Atlanan çağrılar hiçbir şey yapmaz ve hiçbir şey loglamaz.
  2. Oyuncu çevrimiçi olmalıdır. Değilse sunucu konsoluna bir hata yazılır ve hiçbir şey olmaz.
  3. Ceza: geçerli bir punishment argümanı önceliklidir. Yoksa sırasıyla ts.DetectionPunishments[configKey], onun takma adı, tespit anahtarı, ts.punishType ve son olarak BAN.
  4. Her sonuç ts_anticheat:playerBanned sunucu event'ini tetikler, ts.chatMessages açıksa bir sohbet mesajı gönderir, bir bulut ihlali ekler ve AC logunu ve canlı logu yazar.
  5. LOG: ekran görüntüsü logunu Discord'a gönderir.
  6. KICK: ts.AdminBypassDetections'tan bağımsız olarak yetkiliyi yeniden kontrol eder; bu yüzden yetkililer asla atılmaz. Ardından ekran görüntüsü logunu gönderir ve oyuncuyu sunucudan atar.
  7. BAN: banı, saat cinsinden ts.BanDurations'tan alınan süreyle (configKey, takma ad, tespit anahtarı, önek, sonra default; 0 = kalıcı) ve 'anticheat:' artı anahtardan oluşan bannedBy ile ekler. ts_anticheat:banCommitted'i tetikler, paneli bilgilendirir ve oyuncuyu sunucudan atar (3 sn sonra yeniden denenir).
exports['tosun-ac']:punish(src, 'Money exploit', nil, 'my_shop_exploit', 'BAN')

Tek bir oyuncunun moderasyonu#

Tek bir oyuncu üzerinde işlem yapın. Güven sütununu dikkatle okuyun: bunların birkaçında güven kontrolü yoktur.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
freezePlayersrc (çevrimiçi); freeze (boolean)true; çevrimdışıysa falseOyuncuyu dondurur veya çözer ve oyuncunun dilinde bir sohbet bildirimi gönderir. Donuk bayrağı çıkışta temizlenmez.Hayır
isPlayerFrozensrcbooleanmassFreeze'i değil, yalnızca freezePlayer'ı yansıtır.Hayır
slayPlayersrc (çevrimiçi)true; çevrimdışıysa falseOyuncuyu kendi istemcisinde öldürür ve bir bildirim gösterir.Hayır
warnPlayersrc (çevrimiçi); reason?; actor? (varsayılan 'console')true; çevrimdışıysa falseOyuncuya sohbet uyarısı ve ac_player_warnings içinde bir satır.Hayır
mutePlayersrc (çevrimiçi); durationSec? (sayı; nil veya 0 = kalıcı); reason?; actor? (varsayılan 'system')true; çevrimdışıysa falseOyuncunun eski tip chatMessage event'lerini engeller ve ac_player_mutes içine bir satır kaydeder. Süreli susturmalar süre dolduktan sonra 15 sn içinde biter. Kalıcı bir susturma çıkışta temizlenmez ve unmutePlayer'a veya yeniden başlatmaya kadar aynı sunucu id'sini alan bir sonraki oyuncuya geçer. Oyuncuya giden sohbet bildirimleri koda gömülü Türkçedir.Hayır
unmutePlayersrctrue; src nil ise falseSusturmayı kaldırır ve oyuncu çevrimiçiyse bilgilendirir (koda gömülü Türkçe sohbet bildirimi).Hayır
isPlayerMutedsrcbooleanSalt okunur.Hayır
setPlayerHealthsrc (çevrimiçi); hp? (varsayılan 100, 0 ile 200 arası)true; çevrimdışıysa veya reddedilirse falseİstemcide canı ayarlar ve maksimum canı 200 yapar.Evet
setPlayerArmorsrc (çevrimiçi); armor? (varsayılan 0, 0 ile 100 arası)true; çevrimdışıysa veya reddedilirse falseİstemcide zırhı ayarlar.Evet
giveWeaponsrc (çevrimiçi); weapon? (varsayılan 'WEAPON_PISTOL'); ammo? (varsayılan 60)true; çevrimdışıysa veya reddedilirse falseBaşlatılmışsa ox_inventory'yi; yoksa QB envanterini (yalnızca 'qb' veya 'qbox' framework'ü, 'qbcore' değil); yoksa ESX addWeapon'ı; yoksa native verme yöntemini kullanır. Envanter eşyayı reddetse bile true döndürür. AllowWeapon'ı çağırmaz; bu yüzden native yolla verilen bir silah silah-envanter kontrolü tarafından işaretlenebilir (varsayılan işlem log).Evet
stripWeaponssrc (çevrimiçi)true; çevrimdışıysa veya reddedilirse falsePed'deki tüm silahları kaldırır. Envanter eşyalarına dokunulmaz.Evet
clearInventorysrc (çevrimiçi)true; çevrimdışıysa veya reddedilirse falseEnvanteri ox_inventory ile temizler. ox_inventory yoksa yalnızca bir bildirim gösterir ve hiçbir şey temizlemez, ama yine de true döndürür.Evet
spectatePlayeradminSrc; targetSrctrue; bir argüman nil ise veya hedefin ped'i yoksa falseGerçek bir izleme değildir: adminSrc'yi hedefin yanına ışınlar. Her çağrı ayrıca adminSrc'ye bütçesiz 15 sn'lik bir hareket muafiyeti verir.Hayır

Sunucu geneli işlemler#

Tüm oyuncuları veya her yeni bağlantıyı etkileyen işlemler.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
lockdownStatusyokactive (boolean), reason (string)Salt okunur.Hayır
setLockdownstate (boolean); reason (açarken bir string verin)nil; reddedilirse falseAktifken her yeni bağlantı bir LOCKDOWN mesajı ve sebeple reddedilir. Yetkili istisnası yoktur. Yalnızca çalışma zamanında geçerlidir. Sohbete bir satır duyurur. state true ile ve sebep olmadan çağırmak lockdown'ı ayarlar, ardından Lua hatası fırlatır.Evet
emergencyLockdownreason? (lockdown sebebi varsayılan olarak 'Acil durum')atılan oyuncu sayısı; reddedilirse falseLockdown'ı açar ve yetkili olmayan tüm oyuncuları oyuncunun dilinde bir mesajla atar.Evet
massFreezestate (boolean)oyuncu sayısı; reddedilirse falseYetkililer dahil tüm oyuncuları dondurur veya çözer ve sohbete bir satır duyurur. Sohbet satırı koda gömülü Türkçedir.Evet
healAllyokiyileştirme gönderilen oyuncu sayısı; reddedilirse falsePed'i olan her oyuncunun canını maksimuma, zırhını 100'e ayarlar.Evet
setSpeedLimitkmh (0 kapatır)uygulanan sınır; reddedilirse falseŞu an çevrimiçi olan oyuncular için araç hızını sınırlar. Sonradan giren oyunculara sınır uygulanmaz.Evet
applyWeatherWithFrameworkweather (doğrulanmaz)true, denenen yöntemlerin listesiSırasıyla qb-weather, Renewed-Weathersync, cd_easytime, ardından wd_weather, weathersync, vSync ve qb-weathersync'i dener; hiçbiri yoksa her istemciye yayınlar. Yalnızca yetkili menüsü açıkken vardır.Hayır
applyTimeWithFrameworkhour; minute (sınırlanmaz)true, denenen yöntemlerin listesiSaat için aynı yedek zinciri. Yalnızca yetkili menüsü açıkken vardır.Hayır

Karantina ve veri koruması#

Şüpheli bir oyuncuyu izole edin ve kendi net event'lerinizi çökertme verilerine ve spam'e karşı koruyun.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
quarantinesrc (çevrimiçi); reason? (varsayılan 'supheli davranis'); seconds? (varsayılan 300, 30 ile 1800 arası)true (zaten karantinadaysa da); muaf veya geçersiz oyuncular, bucket hatası ya da güvenilmeyen çağıran için falseOyuncuyu izole bir routing bucket'a taşır (varsayılan 9001 - 9500, sıkı entity kilidi, popülasyon yok). Bir QUARANTINE tespiti loglar ve notifyPlayer = false değilse oyuncuya bir sohbet bildirimi gönderir. Bildirim koda gömülü Türkçedir. Süre dolunca otomatik serbest bırakılır.Evet
releaseQuarantinesrcserbest bırakıldıysa true; karantinada değilse veya reddedilirse falseAsıl routing bucket'ı geri yükler, loglar ve oyuncuyu bilgilendirir (notifyPlayer = false değilse koda gömülü Türkçe sohbet bildirimi).Evet
isQuarantinedsrcbooleanSalt okunur.Hayır
quarantineListyok{ id, name, reason, remaining }[] (remaining saniye cinsinden)Salt okunur.Hayır
crashGuardInspectvalue (herhangi bir veri)güvenliyse nil; değilse Türkçe bir sorun açıklamasıNaN/Inf sayıları, geçersiz vektörleri, 32768 karakteri aşan string'leri, 8'den derin iç içeliği, 2000'den fazla öğeyi, toplamda yaklaşık 64 KB'ı, 512 karakteri aşan anahtarları, desteklenmeyen türleri ve özyinelemeyi kontrol eder. Yan etkisi yoktur.Hayır
crashGuardRejectsrc (çevrimiçi); payloadveri hatalıysa true (düşürün); temizse veya src geçersizse falseAynı kontrol, ayrıca oyuncuya bir ihlal puanı. 60 sn içinde 3 ihlal ts.crashGuard.action'ı uygular: 'kick' (varsayılan), 'ban' veya başka bir değer = yalnızca konsol ve log. Muaf oyuncular atlanır.Hayır
RateLimitsrc; key? (varsayılan 'default'); max? (varsayılan 10, en az 1); windowMs? (varsayılan 10000, en az 100)true = izinli; false = sınır aşıldıOyuncu ve anahtar başına sabit pencereli sayaç. Anahtarlar tüm resource'lar arasında ortaktır; bu yüzden başına resource adınızı ekleyin. src 0 veya geçersizse her zaman true döner. Çıkışta temizlenir.Hayır
RegisterNetEvent('myres:buy', function(data)
    local src = source
    if not exports['tosun-ac']:RateLimit(src, 'myres:buy', 5, 10000) then return end
    if exports['tosun-ac']:crashGuardReject(src, data) then return end
    -- satın almayı işle
end)

Oyuncular ve tespitler#

Oyuncuları, kimlikleri, oyuncuya göre banları, tehdit puanlarını ve bağlantılı hesapları sorgulayın. Bazı sonuçlar IP adresleri gibi kişisel veriler içerir.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
GetPlayerInfosrc (çevrimiçi){ id, name, ping, license, discord, steam, citizenid, isAdmin, coords, endpoint } veya nilÖneksiz kimlikler (license yoksa license2 kullanılır). endpoint oyuncunun IP'sidir. citizenid yalnızca 'qb', 'qbcore' veya 'esx' framework'ünde doldurulur; 'qbox'ta boştur. isAdmin veritabanını sorgulayabilir.Hayır
GetNearbyPlayerssrc; radius? (varsayılan 30.0){ id, name, distance }[]Sunucu tarafı ped konumuna göre (OneSync) src'nin yakınındaki oyuncular, src hariç.Hayır
getOnlinePlayersyok{ id, name, ping, license, discord, steam, isAdmin }[]Burada kimlikler öneklerini korur (license:..., discord:..., steam:...). isAdmin her oyuncu için veritabanını sorgulayabilir.Hayır
GetDetectionssrc (çevrimiçi); limit? (varsayılan 25){ banID, reason, banDate, banUntil }[] veya {}Tarihsel ad: tespitleri değil, oyuncunun license'ıyla eşleşen BAN satırlarını döndürür.Hayır
GetCloudThreatScoresrc0 - 100Görüntüleme puanı: oturum ihlali başına 8 (en fazla 40, yalnızca en sonuncusu 10 dakikadan yeniyken), kaçırılan her shield check-in için 10 (en fazla 30) ve native-guard tehdit puanı başına 12 (en fazla 30). ts.cloudBridge.enabled = false iken 0.Hayır
NoteCloudViolationsrc; reason?; punishment? ('LOG', 'KICK' veya 'BAN')nilOyuncunun puanına bir ihlal ekler; ts.cloudBridge.enabled = false iken hiçbir şey yapmaz. Her KICK veya BAN notu intel puanına 25 ekler (en fazla 100, sonuncusu 10 dakikadan yeniyken); 50 veya üzerinde license panelin sunucular arası tehdit veritabanına bildirilir (panel URL'si ve token gerekir). Sonraki girişler yalnızca ts.cloudBridge.threatIntelAction = 'kick' iken engellenir (varsayılan 'log'). AC bunu zaten her ceza için çağırır.Hayır
ForensicLinksOflicense (öneksiz hex, license: öneki olmadan)bağlantılı license'lar (string listesi); bilinmiyorsa {}Steam, Discord veya HWID değerlerini paylaşan yan hesapları (IP yalnızca ts.forensics.linkByIp = true iken) ts.forensics.maxHops adıma kadar (varsayılan 3, en fazla 5) bulur. Engelleyici sorgular. Forensics kapalıyken de çalışır, ama o durumda yeni bağlantı kaydedilmez.Hayır
checkIpReputationip{ vpn, proxy, hosting, country, org, expiresAt } veya nilYalnızca önbellekten okur. Yalnızca ts.v12.ipCheckCacheHours (24) içinde bağlantı sırasında kontrol edilmiş IP'ler için veri döndürür. Canlı sorgu yapmaz.Hayır
webBridgeFindByLicenselicense (string, license: önekli veya öneksiz)çevrimiçi sunucu id'si veya nilÇevrimiçi bir oyuncuyu bulur. Pratikte herhangi bir kimlikle tam eşleşir, örneğin license2:... veya discord:....Hayır
webBridgeFindByCitizencid (QB citizenid veya ESX identifier)çevrimiçi sunucu id'si veya nilYalnızca 'qb', 'qbcore' ve 'esx' framework'ünde çalışır; 'qbox'ta nil döndürür.Hayır

Bildirimler ve dil#

Telefon bildirimleri gönderin ve AC çeviri tablolarını kullanın. phoneNotify ve phoneNotifyAdmins yalnızca ts.AdminMenu.enable açıkken vardır.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
phoneNotifysrc (çevrimiçi); title; body; opts? { icon, color, app }true; çevrimdışıysa falseİlk başlatılmış telefona gönderir: qb-phone, qs-smartphone, lb-phone, yseries, gks_phone, npwd veya roadphone; hiçbiri yoksa sohbete. Telefon bir kez algılanır; bu yüzden sonradan başlatılan bir telefon yeniden başlatmaya kadar yok sayılır.Hayır
phoneNotifyAdminstitle; body; opts?nilÇevrimiçi her yetkiliye phoneNotify. Her oyuncu için veritabanını sorgulayabilir.Hayır
getPlayerLocalesrcdil kodu; varsayılan ts.Locale ('tr')Salt okunur. Yalnızca sunucu tarafı.Hayır
setPlayerLocalesrc; lang (locales dosyası olan 2 veya 3 küçük harf)ayarlandıysa true; değilse falseOyuncunun sunucu tarafı dilini ayarlar. ts_setlang komutundan farklı olarak dili istemciye senkronlamaz. Çıkışta temizlenir.Hayır
translatekey; ... ({0}, {1} için değerler veya {name} için tek bir tablo)çevrilmiş string; İngilizce yedek; yoksa anahtarın kendisits.Locale'i kullanır. Sonda, locale dosyası olan 2 veya 3 harfli bir kod dili seçer. %s kullanan şablonlar biçimlendirilmeden döner; bunları kendiniz biçimlendirin.Hayır
translateForPlayersrc; key; ...oyuncunun dilinde stringtranslate gibidir, oyuncunun dilini kullanır. Sonda dil kodu verilmez.Hayır

Ekran görüntüleri#

Panel için oyuncu ekran görüntüleri isteyin. AC'nin log yazan export'ları dahilidir ve burada listelenmemiştir.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
v6ScreenWatchRequestserverId (çevrimiçi); mode? (varsayılan 'once'); requestedBy? (varsayılan 'panel'); panelUrl?; forceBase64?istek id'si; veya nil, 'invalid_id'; veya nil, 'offline'Bir ekran görüntüsünü kuyruğa alır ve istemciden onu yükleme başına bir token ile panele yüklemesini ister. panelUrl https olmalı ve ts_public_panel_url veya ts.webPanelURL ile eşleşmelidir; aksi halde istemciden istenmez. Bekleyen istekler 30 sn sonra süresi dolar ve 90 sn sonra kaldırılır.Hayır
v6ScreenWatchPollridbeklerken { pending = true }; değilse status ('done', 'failed' veya 'expired') ve url içeren girdi; veya nil, 'not_found'Salt okunur.Hayır
v6ScreenWatchLatestserverIden son istek girdisi veya nilSalt okunur.Hayır
RequestShieldScreenshotsrc (çevrimiçi)true; çevrimdışıysa falseİstemci shield'ından bir ekran görüntüsü ister (istek 60 sn geçerli). İmzalı bir yanıt panele gönderilir ve ts_anticheat:shield:screenshot_saved(src, b64) sunucu event'ini tetikler.Hayır
screenCapturesrc (çevrimiçi); requestedBy? (varsayılan 'panel')true; çevrimdışıysa falseEski. screenshot-basic resource'unu ve setr ile ayarlanmış ts_screen_upload convar'ını gerektirir (varsayılan http://localhost/api/screen_upload.php). AC sonucu saklamaz. Bunun yerine v6ScreenWatchRequest veya RequestShieldScreenshot kullanın.Hayır

Durum ve tanılama#

Gösterge panelleri ve sağlık kontrolleri için AC durumunu okuyun.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
GetStatusyok{ version, online, detections, debug, framework }version, fxmanifest'teki resource sürümüdür. detections yalnızca eski, imzasız bir istemci kanalından gelen raporları sayar ve imzalama açıkken (varsayılan) 0'a yakın kalır; bir tespit veya ban sayısı değildir. uptime alanı yoktur.Hayır
getConfig (server)configType? ('webhooks' veya başka bir değer)config'in temizlenmiş kopyası; 'webhooks' için güvenilen çağıranlara Webhooks tablosu, diğerlerine {}Kopyadan fonksiyonlar, secret, password, token veya webhook içeren anahtarlar, key ile biten anahtarlar (hotkey ile biten adlar ve tek başına key adı hariç) ve 6 seviyeden derin her şey çıkarılır. 5 sn önbellekte tutulur.Yalnızca 'webhooks' için
licenseStatusyok{ checked, ok, reason, serverId, licenseSet }Lisans kilidi durumu. ts.licenseLock.enabled true değilse reason 'disabled', başlangıçtan 1,5 sn sonraki ilk kontrolden önce 'not_checked' olur.Hayır
GetServerAuthorityStatusyok{ enabled, checks = { [id] = { available, enabled, action } } }Bu sunucu build'inin hangi sunucu otoritesi kontrollerini desteklediğini ve nasıl ayarlandıklarını gösterir. Id'ler: superJump, damageMod, meleeMod, defenseMod, weapon, godmode, invisible, noclip, focus.Hayır
getRuntimeStatsyok{ uptime_sec, connect_buckets, subnet_buckets, license_tracking }Bağlantı sıkılaştırma sayaçları.Hayır
getBatchStatsyok{ log_pending, detection_pending, webhook_pending }5 sn'lik toplu yazıcının kuyruk boyutları.Hayır
getCleanupStatsyok{ runs, last_run_at, last_summary, cleaned }Salt okunur.Hayır
runCleanupyokistatistik tablosu; reddedilirse falseSaklama temizliğini hemen çalıştırır: eskimiş çevrimiçi oyuncu satırları, eski tespitler, yetkili logları, panel denetimi, IP itibarı, komut ve ekran görüntüsü kuyrukları, giriş denemeleri ve süresi dolmuş oturumlar (sınırlar ts.v12 keep ayarlarından). Silmeler asenkrondur; bu yüzden dönen istatistikler bu çalıştırmayı henüz içermez.Evet

Resource guard#

Onaylı resource temel çizgisini okuyun ve değiştirin. Bu export'ların hepsi resource guard kapalıyken bile kaydedilir.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
getBaselineyok{ [resource] = { manifest_hash, deep_hash } }Onaylı temel çizgi.Hayır
getResourcesyok{ [resource] = true }Bilinen resource'lar.Hayır
getSuspiciousyok{ [resource] = { reason, state, hash, manifest, at } }Değişmiş veya şüpheli olarak işaretlenen resource'lar.Hayır
getStatsyok{ lastScan, violations, driftedResources }Guard sayaçları.Hayır
rescanResourcesyoktam guard durumu (ready, resources, hashes, suspicious, drift_count, violation_count, last_scan ve diğerleri)Resource anlık görüntüsünü senkron olarak yeniden oluşturur.Hayır
approveResourceresourceName; approvedBy? (varsayılan 'web_panel')true; false, 'resource_missing'; reddedilirse falseMevcut manifest hash'ini temel çizgiye ekler, şüpheli ve engelli bayraklarını temizler, veritabanına kaydeder ve tüm istemcileri günceller.Evet
blockResourceresourceName; reason? (varsayılan 'Manuel blok')true; reddedilirse falseResource'u engelli olarak işaretler, temel çizgiden çıkarır, veritabanına kaydeder ve başlatılmışsa durdurur.Evet
tsAutoSetupyoktrue (zaten bir kurulum çalışıyorsa da); reddedilirse falsetosunac_setup konsol komutuyla aynı: framework'ü algılar, backdoor taramasını (120 sn zaman aşımı) ve imza taramasını çalıştırır, yalnızca backdoor ve imza sonuçları eksiksiz, temiz ve değişmemiş olan başlatılmış resource'ları onaylar, ardından event taramasını çalıştırır. Backdoor guard kapalı veya meşgulse hiçbir şeyi onaylamadan iptal eder.Evet

İmza, backdoor ve event taramaları#

Taramaları çalıştırın ve imzaları, hatalı pozitif istisnalarını ve escrow atlamalarını yönetin. Taramalar zaman alabilir; bunları bir thread'den çalıştırın.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
scanAllResourcesyok{ total, scanned, infected, clean, errors, cached, skipped }; veya nil, 'already_scanning'Tüm resource'ların imza taraması. Yield eder. Enfekte listesini sıfırlar. ts.ResourceGuard.autoBlockInfected açıkken enfekte resource'ları engeller.Hayır
scanSingleResourcenameinfected (boolean), reasonreason şunlardan biridir: self, escrow_signature_skip, whitelisted, snapshot_unavailable, incomplete, clean, cached_clean, infected, cached_infected, blocked. Yield edebilir.Hayır
getInfectedFilesyokenfekte dosya haritasıSon taramanın sonucu.Hayır
addCheatSignaturepattern (resource adı kalıbı); signatureName?; severity? (varsayılan 'critical')true; boşsa veya reddedilirse falseKalıbı bellekte ve veritabanında ekler. severity: info (düşük), warning (orta), low, medium, high veya critical; bilinmeyen değerler high olur.Evet
invalidateSignatureCacheyoktrueKalıp önbelleğini ve kaydedilmiş tarama sonuçlarını temizler; böylece bir sonraki tarama her resource'u yeniden okur.Hayır
reloadSignatureExceptionsyoktrueİstisna ve escrow atlama önbelleklerini ve kaydedilmiş tarama sonuçlarını geçersiz kılar. Bir sonraki kullanımda yeniden yüklenirler.Hayır
reloadSignatureScanCachesyoktrueKalıpları, whitelist'i, istisnaları ve escrow atlamalarını veritabanından hemen yeniden yükler.Hayır
addSignatureEscrowSkipresourceName; note?true; boşsa, MySQL yoksa veya reddedilirse falseO resource için tüm imza taramasını atlar (escrow'lu kod için).Evet
removeSignatureEscrowSkipidOrName (satır id'si veya resource adı)true; geçersizse, MySQL yoksa veya reddedilirse falseEscrow atlamasını kaldırır.Evet
addSignatureExceptionresourceName; filePath? ('' = tüm dosyalar); signatureName; note?true; alanlar eksikse, MySQL yoksa veya reddedilirse falseO resource'taki bir imza isabetini hatalı pozitif olarak işaretler.Evet
removeSignatureExceptionid (number)true; sayısal değilse, MySQL yoksa veya reddedilirse falseİstisnayı siler.Evet
tsScanBackdoorscallback?(report), report = { complete, resources, finished_at, trigger }başlatıldıysa true; bir tarama çalışıyorsa falseBackdoor taramasını bir thread'de çalıştırır. Bulgular veritabanına ve panele gider. ts.BackdoorGuard.autoQuarantine açıkken kritik isabetler resource'u durdurur.Hayır
tsScanEventsyokbaşlatıldıysa true; bir tarama çalışıyorsa falseTüm resource'lardaki event ve trigger'ların statik bir envanterini oluşturur ve panele gönderir.Hayır

Honeypot event'leri#

Event adlarını tuzağa dönüştürün veya serbest bırakın. İkisi de ac_protected_events'e yazar ve veritabanından yeniden yükler.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
fakeTriggerTrapeventName; type ('client' veya 'server')gönderildiyse true; güvenilmiyorsa veya type geçersizse falseEvent'i bir honeypot yapar (active = 1). Tam etki için AC'yi yeniden başlatın (ensure tosun-ac).Evet
fakeTriggerWhitelisteventNamegönderildiyse true (hiçbir şey yapmayan boş ad için de); güvenilmiyorsa falseO event için honeypot'u devre dışı bırakır (active = 0). Zaten kayıtlı handler'lar için AC'nin yeniden başlatılması gerekebilir; konsol bunu belirtir.Evet

Özelliğe bağlı export'lar#

Bu export'lar yalnızca ilgili özellik açıkken kaydedilir. Özellik kapalıysa onları çağırmak hata fırlatır.

Export'larYalnızca şu durumda kaydedilir
quarantine, releaseQuarantine, isQuarantined, quarantineListts.quarantine.enabled false değilse
crashGuardInspect, crashGuardRejectts.crashGuard.enabled false değilse
runCleanup, getCleanupStatsts.v12.enableAutoCleanup false değilse
tsScanBackdoorsts.BackdoorGuard.enabled false değilse
tsScanEventsts.EventScanner.enabled false değilse
applyWeatherWithFramework, applyTimeWithFrameworkyetkili menüsü açıksa (ts.AdminMenu mevcut ve ne enable ne de enabled false)
phoneNotify, phoneNotifyAdminsts.AdminMenu.enable açıksa

İstemci tarafı export'lar#

Bunları istemci scriptlerinden çağırın. Herhangi bir istemci resource'u bunları çağırabilir; güven kontrolü yoktur. Yalnızca o istemcideki kontrolleri etkiler ve sunucu denetimini asla değiştirmezler.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
SetExempt (client)state (boolean); durationMs? (varsayılan 30000, en fazla 300000); reason? (anahtar, varsayılan 'unknown')nilBu reason altında yerel bir muafiyet ekler veya kaldırır. Aynı reason için yeni bir izin bitiş zamanının yerine geçer. Aktifken istemci kontrollerinin çoğu atlanır; yine de istemci ban yoluna ulaşan tespitler [exempt] etiketli LOG girdilerine düşürülür. state = false yalnızca o reason'ı kaldırır.Hayır
PauseDetectionsdurationMs? (varsayılan 10000, en fazla 300000)nilYerel istemci kontrollerini duraklatır. Her çağrı bitiş zamanının yerine geçer; bu yüzden PauseDetections(0) duraklatmayı bitirir ve daha kısa bir değer onu kısaltır.Hayır
IsPlayerAdminyokbooleanYerel yetkili bayrağı; istemcinin yazabildiği bir state bag'den değil, sunucunun doğruladığı admin durumundan her 2 sn'de yenilenir.Hayır
IsExemptyokbooleanOyuncu yetkiliyse, bir sunucu muafiyeti veya duraklatması aktifse, PauseDetections aktifse ya da herhangi bir SetExempt reason'ı aktifse true.Hayır
GetExemptionsyok{ [reason] = remainingMs }Yalnızca SetExempt reason'larını ve tsAcExempt state bag'ini listeler. PauseDetections'ı, sunucu muafiyetlerini veya yetkili durumunu göstermez; tam yanıt için IsExempt kullanın.Hayır
SetSpawnedstate (boolean)niltrue oyuncuyu spawn olmuş olarak işaretler. false hareket ve görsel kontrolleri duraklatır, örneğin karakter seçiminde; en fazla 5 dakikada bir dikkate alınır ve kontroller yaklaşık 30 sn normal görünür hareketten sonra devam eder.Hayır
getConfig (client)yokistemci config tablosuİstemcilere yalnızca istemci için güvenli ayarlar senkronlanır.Hayır
-- karakter seçimi
exports['tosun-ac']:SetSpawned(false)
-- ... oyuncu bir karakter seçer ...
exports['tosun-ac']:SetSpawned(true)

JavaScript export'ları#

Tosun AC, resource taraması ve lisans doğrulaması için sunucuda birkaç JavaScript export'u kaydeder. Bunlar dahilidir, güvenilen resource kontrolüyle sarılmamıştır ve desteklenen bir API değildir. Bunları çağırmayın. Herkese açık JavaScript export'u yoktur.

Bridge dosyaları: kurulum#

tosun-ac/bridge içindeki isteğe bağlı bridge dosyaları, resource'unuza kısa yardımcılar içeren global bir TosunAC tablosu verir. Export'ları pcall içinde çağırırlar; böylece AC durdurulduğunda scriptiniz çalışmaya devam eder. AC, çağıran olarak sizin resource'unuzu görür.

  1. Bridge'i resource'unuzun fxmanifest.lua dosyasına ekleyin: server_script '@tosun-ac/bridge/tosun_ac_server.lua' ve gerekirse client_script '@tosun-ac/bridge/tosun_ac_client.lua'.
  2. AC klasörünün adı farklıysa server.cfg'ye setr tosun_ac_resource "folder-name" ekleyin. setr kullanın: istemci bridge'i bu convar'ı istemcide okur.
  3. İsteğe bağlı: set tosun_ac_bridge_server_ms (varsayılan 60000), set tosun_ac_bridge_cooldown_ms (varsayılan 750, 0 kapatır) ve setr tosun_ac_bridge_client_ms (varsayılan 60000).
  4. Tam sunucu muafiyetleri için resource'unuzu tosun_ac_trusted_resources'a ekleyin. Güven olmadan TosunAC.PlayerExempt yumuşak muafiyete düşer ve sunucu konsoluna bir kerelik bir ipucu yazar (ipucu metni Türkçedir).
-- sizin resource'unuzun fxmanifest.lua dosyası
server_script '@tosun-ac/bridge/tosun_ac_server.lua'
client_script '@tosun-ac/bridge/tosun_ac_client.lua'

# server.cfg
setr tosun_ac_resource "tosun-ac"
set tosun_ac_trusted_resources "my-resource"

-- sunucu scripti
local ok, mode = TosunAC.PlayerExempt(src, 'long', 'clothing')
-- mode 'full' (güvenilir) veya 'soft' (yalnızca hareket, en fazla 15 sn) olur

Bridge: sunucu yardımcıları#

Resource'unuzun içindeki bridge/tosun_ac_server.lua tarafından tanımlanır. Hazır ayarlar: SHORT 30000, MEDIUM 60000, LONG 120000, XL 180000 ms (TosunAC.Presets). TosunAC.Version '1.2'dir.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
TosunAC.MarkTeleportplayerId (1 veya daha büyük); durationMs? (varsayılan 8000)yalnızca export true döndürdüyse trueMarkTeleport'u 'bridge:teleport' reason'ıyla çağırır.Hayır (resource'unuz güvenilir değilse oyuncu başına MarkTeleport bütçesi uygulanır)
TosunAC.PlayerExemptplayerId; durationMs (500 ile 300000 arası), hazır ayar adı veya nil (= tosun_ac_bridge_server_ms); tag? (varsayılan resource adınız)true, 'full'; true, 'soft'; veya falseSetPlayerExempt'i dener. Reddedilirse en fazla 15 sn için MarkTeleport'a düşer. Oyuncu başına bir bekleme süresi (varsayılan 750 ms, PlayerExemptPreset ile ortak) tek bir false döndürür. Denetim modunda listede olmayan resource'lar için bile sonuç 'full' olur.Yalnızca 'full' için
TosunAC.PlayerExemptPresetplayerId; presetName? (varsayılan 'MEDIUM', büyük/küçük harf duyarsız); tag?PlayerExempt ile aynıHazır ayar süresiyle PlayerExempt. Bilinmeyen adlar MEDIUM kullanır. tosun_ac_bridge_server_ms'i yok sayar.Yalnızca 'full' için
TosunAC.PlayerExemptOffplayerId; tag? (AC tarafından kullanılmaz)kabul edildiyse trueSetPlayerExempt(playerId, false) çağırır. Güvenilmeyen resource'lar false alır ve yumuşak pencere bitirilmez.Evet
TosunAC.IsTrustedyokbooleanGetIntegrationStatus().trusted. Korumalı çağrıların yine geçtiği denetim modunda bile listede olmayan resource'lar için false döndürür.Hayır
TosunAC.IsAvailableyokbooleanAC resource'u başlatılmışken true.Hayır

Bridge: istemci yardımcıları#

Resource'unuzun içindeki bridge/tosun_ac_client.lua tarafından tanımlanır. SetExempt istemci export'unu sarar; bu yüzden yalnızca istemci tarafı rahatlama sağlar.

ExportParametrelerDönüşNe yaparGüvenilen resource gerekli mi?
TosunAC.ExemptdurationMs (500 ile 300000 arası), hazır ayar adı veya nil (= tosun_ac_bridge_client_ms); tag? (varsayılan resource adınız)nilİstemci SetExempt'ini 'bridge:' artı tag anahtarıyla çağırır.Hayır
TosunAC.ExemptOfftag? (Exempt'te kullanılan tag ile eşleşmeli)nilO muafiyeti kaldırır.Hayır
TosunAC.ExemptPresetname? (varsayılan 'MEDIUM')nilHazır ayar süresi ve varsayılan tag ile Exempt. tag parametresi yoktur.Hayır
TosunAC.RunWithExemptdurationMs; tag; fntrue ve fn'nin sonuçları; false, err; veya fn bir fonksiyon değilse falseMuaf tutar, fn'yi pcall içinde çalıştırır, ardından ExemptOff(tag) çağırır.Hayır
TosunAC.RunWithExemptPresetpresetName; fnRunWithExempt ile aynıHazır ayar süresi ve varsayılan tag ile RunWithExempt.Hayır
TosunAC.IsAvailableyokbooleanAC resource'u başlatılmışken true.Hayır
tosun-ac:bridge:clientExempt (net event)durationMs?; tag?hiçbir şeyİstemci bridge'ini içeren her resource'un içinde kaydedilir. Bir sunucu scripti, o istemcide TosunAC.Exempt çalıştırmak için bunu TriggerClientEvent ile gönderebilir. Birden fazla resource bridge'i içeriyorsa her biri kendi muafiyetini uygular. tosun-ac içindeki hiçbir şey bunu göndermez.Hayır (sunucu scriptleri veya TriggerEvent ile yerel istemci scriptleri)

Her resource'un çağırabileceği export'lar#

Bu export'larda güven kontrolü yoktur ve yan etkileri vardır. Her sunucu resource'u bunları çağırabilir. Yalnızca güvendiğiniz resource'ları çalıştırın; herhangi bir sunucu resource'unun FiveM native'leri üzerinden zaten oyuncu atabildiğini veya istemci event'leri tetikleyebildiğini unutmayın.

  • MarkTeleport: oyuncu başına bütçeyle sınırlı hareket muafiyeti.
  • spectatePlayer: bir oyuncuyu ışınlar ve her çağrıda bütçesiz 15 sn'lik bir hareket muafiyeti verir.
  • NoteCloudViolation: bir oyuncunun tehdit puanını artırır ve license'ı sunucular arası tehdit veritabanına bildirebilir.
  • warnPlayer ve mutePlayer: uyarı ve susturma kayıtları yazar.
  • freezePlayer ve slayPlayer: doğrudan bir oyuncu üzerinde işlem yapar.
  • crashGuardReject: kick veya ban'a yol açabilen ihlal puanları ekler.
  • screenCapture, v6ScreenWatchRequest ve RequestShieldScreenshot: ekran görüntüsü ister.
  • rescanResources, scanAllResources, scanSingleResource, tsScanBackdoors ve tsScanEvents: tarama başlatır. Otomatik engelleme veya otomatik karantina açıkken scanAllResources resource engelleyebilir, tsScanBackdoors resource durdurabilir.
  • applyWeatherWithFramework ve applyTimeWithFramework: herkes için havayı ve saati değiştirir.
  • invalidateSignatureCache, reloadSignatureExceptions, reloadSignatureScanCaches ve refreshPanelWhitelist: önbellekleri yeniden yükler.
  • setPlayerLocale ve unmutePlayer: oyuncu durumunu değiştirir.
  • phoneNotify ve phoneNotifyAdmins: oyunculara telefon veya sohbet mesajı gönderir.

Eski ve yanıltıcı adlar#

Bu export'lar hâlâ çalışır, ama adları veya eski belgeleri yapmadıkları bir şeyi ima eder.

  • Eski rehberler (9.6.6 için INTEGRATION.md, 8.6.1 için CONFIG-EXPORTS-MULTILANG.md ve TOSUN-AC-EXPORTS.md yönlendirme taslağı) güncel değildir. Farklılık olduğunda bu referans 9.6.15 koduyla eşleşir.
  • SetPlayerExempt, PausePlayerDetections, PauseAllDetections, BypassDetection, AddWhitelist, RemoveWhitelist, WhitelistArea, ClearArea, addAdmin, fakeTriggerTrap ve fakeTriggerWhitelist güvenilen bir resource gerektirir; CONFIG-EXPORTS-MULTILANG.md bunları bu gereksinim olmadan listelese de.
  • Varsayılan güven listesi qbx_core, qb-core, es_extended, ox_inventory ve ox_lib'dir. INSTALLER-READY.md qb-core ve es_extended'ı atlar.
  • GetIntegrationStatus() bir version alanı da döndürür.
  • punish, ban, BanPlayerExt, KickPlayer, offlineBan ve offlineBanByLicense güvenilen bir resource gerektirir.
  • ban() ve BanPlayerExt() ts.punishType ve ts.BanDurations['default'] değerlerini izler; bu yüzden her zaman kalıcı değildir.
  • KickPlayer muafiyetleri kontrol etmez. Ceza hattında KICK yetkilileri her zaman korur; BAN ve LOG ise ts.AdminBypassDetections'ı izler.
  • Bir istemci muafiyeti sırasında istemci kontrollerinin çoğu tamamen atlanır. Yalnızca yine de ban yoluna ulaşan tespitler [exempt] etiketli LOG girdilerine dönüşür.
  • NoteCloudViolation sonraki girişleri yalnızca ts.cloudBridge.threatIntelAction = 'kick' iken engeller.
  • İstemci bridge'iyle birlikte tosun_ac_resource ve tosun_ac_bridge_client_ms convar'ları set ile değil, setr ile ayarlanmalıdır.
  • Çağrı başına MarkTeleport üst sınırı (ts.Integration.markTeleportMaxMs) güvenilen çağıranlara da uygulanır. Yalnızca 10 dakikada 180 sn'lik bütçe güvenilmeyen çağıranlar içindir.
ExportBilinmesi gerekenBunun yerine
BypassDetectionTespit anahtarı yok sayılır. 0,5 ile 60 sn arası tam muafiyet verir.Kısa süreli SetPlayerExempt veya ışınlanmalar için MarkTeleport
GetDetectionsTespitleri değil, oyuncunun ban satırlarını döndürür.getBans veya getBanInfo
getAdminType'tx' txAdmin anlamına gelmez; yetkililer neredeyse her zaman 'tx' alır.isAdmin veya isStaffPlayer
SetExempt (server)SetPlayerExempt(src, true, ...) için takma ad. Argümanları istemci SetExempt'inden farklıdır.SetPlayerExempt
WhitelistAreaYalnızca istemci tarafı rahatlama; sunucu cezasına karşı dokunulmazlık yok.Sunucu dokunulmazlığı için SetPlayerExempt
screenCaptureAC sonucu saklamaz.v6ScreenWatchRequest veya RequestShieldScreenshot
GetStatus().detectionsTespit veya ban sayısı değildir.Sayaç olarak kullanmayın
isAdmin, addAdminKaynak kodda iki kez kaydedilir. anticheat_server.lua sürümleri çalışır.Normal şekilde çağırın