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ı.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
MarkTeleport | src; 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 false | Yumuş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. |
IsMovementExempt | src | boolean | Bir MarkTeleport veya DetectionExempt.serverEvents yumuşak penceresi aktifken true. | Hayır |
GetIntegrationStatus | yok (ç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 |
SetPlayerExempt | src; state (true verir, false kaldırır); durationMs? (varsayılan 30000, en fazla 300000); reason? | true; güvenilmiyorsa veya src sayı değilse false | Tam 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 |
BypassDetection | src; 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 false | Eski 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 |
PausePlayerDetections | src; durationMs? (varsayılan 15000, en fazla 300000) | true; güvenilmiyorsa veya src sayı değilse false | Tek bir oyuncu için sunucu cezasına karşı dokunulmazlık ve istemci duraklatma bayrağı. | Evet |
PauseAllDetections | durationMs? (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 |
AllowWeapon | src; 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 false | Oyuncunun 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 |
IsExemptFromPunish | src | boolean (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 |
IsPlayerProtected | src | boolean | Yetkililer, 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.
| Export | Sunucu cezasına karşı dokunulmazlık | İstemci kontrolleri | Süre | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
MarkTeleport | Yalnızca hareket ve görünürlük kontrolleri | Muaf (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) | Evet | Muaf | Varsayılan 30 sn, en fazla 300 sn | Evet |
BypassDetection | Evet | Muaf | Varsayılan 5 sn, 0,5 ile 60 sn arası | Evet |
PausePlayerDetections | Evet | Duraklatılmış | Varsayılan 15 sn, en fazla 300 sn | Evet |
PauseAllDetections | Hayır | Şu an çevrimiçi olan oyuncular için duraklatılmış | Varsayılan 10 sn, en fazla 300 sn | Evet |
whitelistPlayer | Evet | İstemci bayrağı yok | Varsayılan 3600 sn, -1 = çıkışa kadar | Evet |
AddWhitelist | Evet, kimliğe göre | İstemci bayrağı yok | Yeniden başlatmaya kadar veya durationSec | Evet |
WhitelistArea | Hayır | Muaf | Varsayılan 30 sn | Evet |
AllowWeapon | Yalnızca silah-envanter kontrolü | Değişmez | Varsayılan 600 sn, en fazla 3600 sn | Evet |
Client SetExempt, PauseDetections | Hayır | O istemcide muaf veya duraklatılmış | Varsayılan 30 sn veya 10 sn, en fazla 300 sn | Hayı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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
isAdmin | src (sayı verin) | boolean | Yukarıda listelenen kaynaklardan admin durumu. Veritabanı sonuçları olumluysa 5 sn, olumsuzsa 30 sn önbellekte tutulur. ts.AdminBypassDetections'a bakmaz. | Hayır |
isStaffPlayer | src | boolean | Ban 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 |
isAdminMenuAllowed | src | boolean | Oyuncunun 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 |
getAdminType | src | 'tx', 'config' veya false | Yanı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 |
addAdmin | src (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 |
removeAdmin | src | nil; reddedilirse false | Elle 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
whitelistPlayer | src (sayı verin); durationSec? (varsayılan 3600; -1 = çıkışa kadar) | nil; reddedilirse false | Sunucu id'sine göre sunucu cezasına karşı dokunulmazlık. İstemci bayrağı yok. Çıkışta temizlenir. SetPlayerExempt, PausePlayerDetections ve BypassDetection bunun üzerine yazar. | Evet |
removeWhitelist | src | nil; reddedilirse false | whitelistPlayer'ı bitirir. Ayrıca SetPlayerExempt, PausePlayerDetections veya BypassDetection kaynaklı sunucu dokunulmazlığını da bitirir. | Evet |
AddWhitelist | target (sunucu id'si veya kimlik string'i); durationSec? (nil veya 0 = yeniden başlatmaya kadar) | true; boşsa veya reddedilirse false | Kimlikleri 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 |
RemoveWhitelist | target (sunucu id'si veya kimlik) | true; boşsa veya reddedilirse false | Çalışma zamanı whitelist girdilerini kaldırır. Panel whitelist tablosuna dokunulmaz. | Evet |
IsWhitelisted | src | boolean | Herhangi 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 |
refreshPanelWhitelist | yok | nil | Panel 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 |
WhitelistArea | src; areaName (boş olmamalı); durationSec? (varsayılan 30) | true; geçersizse veya reddedilirse false | Adlandı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 |
ClearArea | src; areaName? ('' veya nil = tüm alanlar) | true; src 0 ise veya reddedilirse false | Alanı 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 |
IsInArea | src; areaName? (boş = herhangi bir alan) | boolean | Bir 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
punish | src (çevrimiçi); reason; image? (ekran görüntüsü URL'si veya verisi); configKey?; punishment? ('BAN', 'KICK' veya 'LOG') | nil; reddedilirse false | Tam AC ceza hattını çalıştırır. Muaf oyuncular atlanır. Bkz. punish() cezayı nasıl seçer. | Evet |
ban | src (çevrimiçi); reason | nil; 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 |
BanPlayerExt | src (çevrimiçi); reason? (varsayılan 'Banned by script') | gönderildiyse true; güvenilmiyorsa veya çevrimdışıysa false | ban() ile aynı. | Evet |
KickPlayer | src (ç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 |
offlineBan | data { playername, license, steam, discord, ip, HWID, HWID2 - HWID5 } (öneksiz kimlikler); reason | nil; 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 |
offlineBanByLicense | license (öneksiz hex veya 'license:...'); reason? (varsayılan 'Sebep yok'); actor? (varsayılan 'panel'); name?; citizenid? | true, banID ('O' + 8 hex); false, 'license required'; reddedilirse false | Kalı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 |
unban | banID | her zaman nil | Asenkron: 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 |
getBans | limit? (varsayılan 100, üst sınır yok); offset? (varsayılan 0) | ban satırları, en yeniden eskiye | IP, license, Steam, Discord ve HWID sütunları dahil tam satırlar. Senkron sorgu. | Hayır |
getBanInfo | banID | tam ban satırı veya nil | Senkron sorgu. | Hayır |
punish() cezayı nasıl seçer#
punish(), ban() ve BanPlayerExt() tek bir hattı paylaşır. İzlediği sıra şudur.
- 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.
- Oyuncu çevrimiçi olmalıdır. Değilse sunucu konsoluna bir hata yazılır ve hiçbir şey olmaz.
- 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.
- 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.
- LOG: ekran görüntüsü logunu Discord'a gönderir.
- 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.
- 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
freezePlayer | src (çevrimiçi); freeze (boolean) | true; çevrimdışıysa false | Oyuncuyu dondurur veya çözer ve oyuncunun dilinde bir sohbet bildirimi gönderir. Donuk bayrağı çıkışta temizlenmez. | Hayır |
isPlayerFrozen | src | boolean | massFreeze'i değil, yalnızca freezePlayer'ı yansıtır. | Hayır |
slayPlayer | src (çevrimiçi) | true; çevrimdışıysa false | Oyuncuyu kendi istemcisinde öldürür ve bir bildirim gösterir. | Hayır |
warnPlayer | src (çevrimiçi); reason?; actor? (varsayılan 'console') | true; çevrimdışıysa false | Oyuncuya sohbet uyarısı ve ac_player_warnings içinde bir satır. | Hayır |
mutePlayer | src (çevrimiçi); durationSec? (sayı; nil veya 0 = kalıcı); reason?; actor? (varsayılan 'system') | true; çevrimdışıysa false | Oyuncunun 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 |
unmutePlayer | src | true; src nil ise false | Susturmayı kaldırır ve oyuncu çevrimiçiyse bilgilendirir (koda gömülü Türkçe sohbet bildirimi). | Hayır |
isPlayerMuted | src | boolean | Salt okunur. | Hayır |
setPlayerHealth | src (ç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 |
setPlayerArmor | src (çevrimiçi); armor? (varsayılan 0, 0 ile 100 arası) | true; çevrimdışıysa veya reddedilirse false | İstemcide zırhı ayarlar. | Evet |
giveWeapon | src (çevrimiçi); weapon? (varsayılan 'WEAPON_PISTOL'); ammo? (varsayılan 60) | true; çevrimdışıysa veya reddedilirse false | Baş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 |
stripWeapons | src (çevrimiçi) | true; çevrimdışıysa veya reddedilirse false | Ped'deki tüm silahları kaldırır. Envanter eşyalarına dokunulmaz. | Evet |
clearInventory | src (çevrimiçi) | true; çevrimdışıysa veya reddedilirse false | Envanteri 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 |
spectatePlayer | adminSrc; targetSrc | true; bir argüman nil ise veya hedefin ped'i yoksa false | Gerç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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
lockdownStatus | yok | active (boolean), reason (string) | Salt okunur. | Hayır |
setLockdown | state (boolean); reason (açarken bir string verin) | nil; reddedilirse false | Aktifken 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 |
emergencyLockdown | reason? (lockdown sebebi varsayılan olarak 'Acil durum') | atılan oyuncu sayısı; reddedilirse false | Lockdown'ı açar ve yetkili olmayan tüm oyuncuları oyuncunun dilinde bir mesajla atar. | Evet |
massFreeze | state (boolean) | oyuncu sayısı; reddedilirse false | Yetkililer dahil tüm oyuncuları dondurur veya çözer ve sohbete bir satır duyurur. Sohbet satırı koda gömülü Türkçedir. | Evet |
healAll | yok | iyileştirme gönderilen oyuncu sayısı; reddedilirse false | Ped'i olan her oyuncunun canını maksimuma, zırhını 100'e ayarlar. | Evet |
setSpeedLimit | kmh (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 |
applyWeatherWithFramework | weather (doğrulanmaz) | true, denenen yöntemlerin listesi | Sı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 |
applyTimeWithFramework | hour; minute (sınırlanmaz) | true, denenen yöntemlerin listesi | Saat 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
quarantine | src (ç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 false | Oyuncuyu 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 |
releaseQuarantine | src | serbest bırakıldıysa true; karantinada değilse veya reddedilirse false | Asıl routing bucket'ı geri yükler, loglar ve oyuncuyu bilgilendirir (notifyPlayer = false değilse koda gömülü Türkçe sohbet bildirimi). | Evet |
isQuarantined | src | boolean | Salt okunur. | Hayır |
quarantineList | yok | { id, name, reason, remaining }[] (remaining saniye cinsinden) | Salt okunur. | Hayır |
crashGuardInspect | value (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 |
crashGuardReject | src (çevrimiçi); payload | veri hatalıysa true (düşürün); temizse veya src geçersizse false | Aynı 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 |
RateLimit | src; 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
GetPlayerInfo | src (ç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 |
GetNearbyPlayers | src; 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 |
getOnlinePlayers | yok | { id, name, ping, license, discord, steam, isAdmin }[] | Burada kimlikler öneklerini korur (license:..., discord:..., steam:...). isAdmin her oyuncu için veritabanını sorgulayabilir. | Hayır |
GetDetections | src (ç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 |
GetCloudThreatScore | src | 0 - 100 | Gö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 |
NoteCloudViolation | src; reason?; punishment? ('LOG', 'KICK' veya 'BAN') | nil | Oyuncunun 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 |
ForensicLinksOf | license (ö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 |
checkIpReputation | ip | { vpn, proxy, hosting, country, org, expiresAt } veya nil | Yalnı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 |
webBridgeFindByLicense | license (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 |
webBridgeFindByCitizen | cid (QB citizenid veya ESX identifier) | çevrimiçi sunucu id'si veya nil | Yalnı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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
phoneNotify | src (ç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 |
phoneNotifyAdmins | title; body; opts? | nil | Çevrimiçi her yetkiliye phoneNotify. Her oyuncu için veritabanını sorgulayabilir. | Hayır |
getPlayerLocale | src | dil kodu; varsayılan ts.Locale ('tr') | Salt okunur. Yalnızca sunucu tarafı. | Hayır |
setPlayerLocale | src; lang (locales dosyası olan 2 veya 3 küçük harf) | ayarlandıysa true; değilse false | Oyuncunun sunucu tarafı dilini ayarlar. ts_setlang komutundan farklı olarak dili istemciye senkronlamaz. Çıkışta temizlenir. | Hayır |
translate | key; ... ({0}, {1} için değerler veya {name} için tek bir tablo) | çevrilmiş string; İngilizce yedek; yoksa anahtarın kendisi | ts.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 |
translateForPlayer | src; key; ... | oyuncunun dilinde string | translate 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
v6ScreenWatchRequest | serverId (ç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 |
v6ScreenWatchPoll | rid | beklerken { pending = true }; değilse status ('done', 'failed' veya 'expired') ve url içeren girdi; veya nil, 'not_found' | Salt okunur. | Hayır |
v6ScreenWatchLatest | serverId | en son istek girdisi veya nil | Salt okunur. | Hayır |
RequestShieldScreenshot | src (ç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 |
screenCapture | src (çevrimiçi); requestedBy? (varsayılan 'panel') | true; çevrimdışıysa false | Eski. 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
GetStatus | yok | { 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 |
licenseStatus | yok | { 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 |
GetServerAuthorityStatus | yok | { 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 |
getRuntimeStats | yok | { uptime_sec, connect_buckets, subnet_buckets, license_tracking } | Bağlantı sıkılaştırma sayaçları. | Hayır |
getBatchStats | yok | { log_pending, detection_pending, webhook_pending } | 5 sn'lik toplu yazıcının kuyruk boyutları. | Hayır |
getCleanupStats | yok | { runs, last_run_at, last_summary, cleaned } | Salt okunur. | Hayır |
runCleanup | yok | istatistik tablosu; reddedilirse false | Saklama 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
getBaseline | yok | { [resource] = { manifest_hash, deep_hash } } | Onaylı temel çizgi. | Hayır |
getResources | yok | { [resource] = true } | Bilinen resource'lar. | Hayır |
getSuspicious | yok | { [resource] = { reason, state, hash, manifest, at } } | Değişmiş veya şüpheli olarak işaretlenen resource'lar. | Hayır |
getStats | yok | { lastScan, violations, driftedResources } | Guard sayaçları. | Hayır |
rescanResources | yok | tam 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 |
approveResource | resourceName; approvedBy? (varsayılan 'web_panel') | true; false, 'resource_missing'; reddedilirse false | Mevcut manifest hash'ini temel çizgiye ekler, şüpheli ve engelli bayraklarını temizler, veritabanına kaydeder ve tüm istemcileri günceller. | Evet |
blockResource | resourceName; reason? (varsayılan 'Manuel blok') | true; reddedilirse false | Resource'u engelli olarak işaretler, temel çizgiden çıkarır, veritabanına kaydeder ve başlatılmışsa durdurur. | Evet |
tsAutoSetup | yok | true (zaten bir kurulum çalışıyorsa da); reddedilirse false | tosunac_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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
scanAllResources | yok | { 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 |
scanSingleResource | name | infected (boolean), reason | reason şunlardan biridir: self, escrow_signature_skip, whitelisted, snapshot_unavailable, incomplete, clean, cached_clean, infected, cached_infected, blocked. Yield edebilir. | Hayır |
getInfectedFiles | yok | enfekte dosya haritası | Son taramanın sonucu. | Hayır |
addCheatSignature | pattern (resource adı kalıbı); signatureName?; severity? (varsayılan 'critical') | true; boşsa veya reddedilirse false | Kalıbı bellekte ve veritabanında ekler. severity: info (düşük), warning (orta), low, medium, high veya critical; bilinmeyen değerler high olur. | Evet |
invalidateSignatureCache | yok | true | Kalıp önbelleğini ve kaydedilmiş tarama sonuçlarını temizler; böylece bir sonraki tarama her resource'u yeniden okur. | Hayır |
reloadSignatureExceptions | yok | true | İstisna ve escrow atlama önbelleklerini ve kaydedilmiş tarama sonuçlarını geçersiz kılar. Bir sonraki kullanımda yeniden yüklenirler. | Hayır |
reloadSignatureScanCaches | yok | true | Kalıpları, whitelist'i, istisnaları ve escrow atlamalarını veritabanından hemen yeniden yükler. | Hayır |
addSignatureEscrowSkip | resourceName; note? | true; boşsa, MySQL yoksa veya reddedilirse false | O resource için tüm imza taramasını atlar (escrow'lu kod için). | Evet |
removeSignatureEscrowSkip | idOrName (satır id'si veya resource adı) | true; geçersizse, MySQL yoksa veya reddedilirse false | Escrow atlamasını kaldırır. | Evet |
addSignatureException | resourceName; filePath? ('' = tüm dosyalar); signatureName; note? | true; alanlar eksikse, MySQL yoksa veya reddedilirse false | O resource'taki bir imza isabetini hatalı pozitif olarak işaretler. | Evet |
removeSignatureException | id (number) | true; sayısal değilse, MySQL yoksa veya reddedilirse false | İstisnayı siler. | Evet |
tsScanBackdoors | callback?(report), report = { complete, resources, finished_at, trigger } | başlatıldıysa true; bir tarama çalışıyorsa false | Backdoor 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 |
tsScanEvents | yok | başlatıldıysa true; bir tarama çalışıyorsa false | Tü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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
fakeTriggerTrap | eventName; type ('client' veya 'server') | gönderildiyse true; güvenilmiyorsa veya type geçersizse false | Event'i bir honeypot yapar (active = 1). Tam etki için AC'yi yeniden başlatın (ensure tosun-ac). | Evet |
fakeTriggerWhitelist | eventName | gönderildiyse true (hiçbir şey yapmayan boş ad için de); güvenilmiyorsa false | O 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'lar | Yalnızca şu durumda kaydedilir |
|---|---|
quarantine, releaseQuarantine, isQuarantined, quarantineList | ts.quarantine.enabled false değilse |
crashGuardInspect, crashGuardReject | ts.crashGuard.enabled false değilse |
runCleanup, getCleanupStats | ts.v12.enableAutoCleanup false değilse |
tsScanBackdoors | ts.BackdoorGuard.enabled false değilse |
tsScanEvents | ts.EventScanner.enabled false değilse |
applyWeatherWithFramework, applyTimeWithFramework | yetkili menüsü açıksa (ts.AdminMenu mevcut ve ne enable ne de enabled false) |
phoneNotify, phoneNotifyAdmins | ts.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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
SetExempt (client) | state (boolean); durationMs? (varsayılan 30000, en fazla 300000); reason? (anahtar, varsayılan 'unknown') | nil | Bu 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 |
PauseDetections | durationMs? (varsayılan 10000, en fazla 300000) | nil | Yerel 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 |
IsPlayerAdmin | yok | boolean | Yerel yetkili bayrağı; istemcinin yazabildiği bir state bag'den değil, sunucunun doğruladığı admin durumundan her 2 sn'de yenilenir. | Hayır |
IsExempt | yok | boolean | Oyuncu yetkiliyse, bir sunucu muafiyeti veya duraklatması aktifse, PauseDetections aktifse ya da herhangi bir SetExempt reason'ı aktifse true. | Hayır |
GetExemptions | yok | { [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 |
SetSpawned | state (boolean) | nil | true 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) | yok | istemci 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.
- 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'.
- 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.
- İ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).
- 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) olurBridge: 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
TosunAC.MarkTeleport | playerId (1 veya daha büyük); durationMs? (varsayılan 8000) | yalnızca export true döndürdüyse true | MarkTeleport'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.PlayerExempt | playerId; 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 false | SetPlayerExempt'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.PlayerExemptPreset | playerId; 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.PlayerExemptOff | playerId; tag? (AC tarafından kullanılmaz) | kabul edildiyse true | SetPlayerExempt(playerId, false) çağırır. Güvenilmeyen resource'lar false alır ve yumuşak pencere bitirilmez. | Evet |
TosunAC.IsTrusted | yok | boolean | GetIntegrationStatus().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.IsAvailable | yok | boolean | AC 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.
| Export | Parametreler | Dönüş | Ne yapar | Güvenilen resource gerekli mi? |
|---|---|---|---|---|
TosunAC.Exempt | durationMs (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.ExemptOff | tag? (Exempt'te kullanılan tag ile eşleşmeli) | nil | O muafiyeti kaldırır. | Hayır |
TosunAC.ExemptPreset | name? (varsayılan 'MEDIUM') | nil | Hazır ayar süresi ve varsayılan tag ile Exempt. tag parametresi yoktur. | Hayır |
TosunAC.RunWithExempt | durationMs; tag; fn | true ve fn'nin sonuçları; false, err; veya fn bir fonksiyon değilse false | Muaf tutar, fn'yi pcall içinde çalıştırır, ardından ExemptOff(tag) çağırır. | Hayır |
TosunAC.RunWithExemptPreset | presetName; fn | RunWithExempt ile aynı | Hazır ayar süresi ve varsayılan tag ile RunWithExempt. | Hayır |
TosunAC.IsAvailable | yok | boolean | AC 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.
| Export | Bilinmesi gereken | Bunun yerine |
|---|---|---|
BypassDetection | Tespit anahtarı yok sayılır. 0,5 ile 60 sn arası tam muafiyet verir. | Kısa süreli SetPlayerExempt veya ışınlanmalar için MarkTeleport |
GetDetections | Tespitleri 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 |
WhitelistArea | Yalnızca istemci tarafı rahatlama; sunucu cezasına karşı dokunulmazlık yok. | Sunucu dokunulmazlığı için SetPlayerExempt |
screenCapture | AC sonucu saklamaz. | v6ScreenWatchRequest veya RequestShieldScreenshot |
GetStatus().detections | Tespit veya ban sayısı değildir. | Sayaç olarak kullanmayın |
isAdmin, addAdmin | Kaynak kodda iki kez kaydedilir. anticheat_server.lua sürümleri çalışır. | Normal şekilde çağırın |