Dokümantasyon 9.6.24
Sunucu entegrasyonu
Export çağrılarını yalnız güvenilir sunucu kodundan yapın. İstemci kendi muafiyetini, yönetici durumunu, hedefini veya ödülünü seçememelidir.
Salt okunur örnek#
Aşağıdaki örnek yönetici durumunu sorgular; yetki vermez. Export ve kimlik biçimini kurduğunuz paketten doğrulayın.
local playerId = 12
local isAdmin = exports['tosun-ac']:isAdmin(playerId)Muafiyetten önce doğrulayın#
Bir iş veya mini oyunda kısa ve özel muafiyet vermeden önce sunucudaki oturumu, oyuncuyu, konumu, yetkiyi ve süreyi doğrulayın. Muafiyet export’unu doğrulamasız RegisterNetEvent içine koymayın. Özel kaynak entegrasyonlarında Cfx sunucu olayı güvenlik rehberini kullanın.
Işınlama bildirimi#
Oyuncuyu ışınlayan her sunucu script’i (ev, garaj, hapis, hastane, iş) ışınlamadan hemen önce MarkTeleport çağırmalıdır. Güven listesi gerekmez; yalnız hareket ve görünürlük kontrollerini kısa süre gevşetir, silah, para ve enjeksiyon korumaları açık kalır. Işınlayan tüm script’ler bildirim yapıyorsa anti-cheat ayarlarındaki v16 ışınlanma cezasını kick’e alabilirsiniz.
exports['tosun-ac']:MarkTeleport(source, 8000)
SetEntityCoords(GetPlayerPed(source), x, y, z)Güvenilir resource’lar#
Muafiyet veren, yetki veren veya toplu işlem yapan export’lar (SetExempt, addAdmin, whitelistPlayer ve diğerleri) yalnız güvenilir resource’lardan kabul edilir. Reddedilen çağrı konsola bir kez, eklenmesi gereken satırla birlikte yazılır. Listeyi server.cfg’de tutun; anti-cheat güncellemesinde kaybolmaz. Sunucu konsolunda tosunac_integration komutu güvenilir listeyi ve son reddedilen çağrıları gösterir.
set tosun_ac_trusted_resources "my-housing,my-clothing"Envanter dışı verilen silahlar#
Arena, paintball veya menü gibi silahı envantere eklemeden veren script’ler, silahı verirken AllowWeapon çağırmalıdır; aksi halde 9.4.0’daki silah ve envanter kontrolü bunu spawn edilmiş silah olarak kaydeder. Tek bir silah adı ya da tüm silahlar için yıldız verilebilir; süre en fazla 1 saattir. Anti-cheat’in tanımadığı addon silahları config’teki extraWeapons listesine ekleyin.
exports['tosun-ac']:AllowWeapon(source, "WEAPON_PISTOL", 600000)Entegrasyon yetkisini sunucuda tutun#
Kurulu export’lar için paketin TOSUN-AC-EXPORTS.md dosyasını esas alın. Export adları büyük/küçük harfe duyarlıdır. Muafiyet süreleri milisaniye, AddWhitelist ve WhitelistArea süreleri saniyedir. Export’a ihtiyaç duyan scriptlerden önce tosun-ac başlasın. Resource durmuşsa gerekli koruma adımını sessizce atlamak yerine durumu yönetin. Başarılı çağrı, görevinizin kurallarını sizin yerinize doğrulamaz.
SetExempt ve AllowWeapon gibi hassas export’lar çağıran sunucu resource’unun güvenilir olmasını ister. Yalnız incelenmiş resource ekleyin; virgülle ayrılmış listeyi düzenlerken mevcut adları koruyun. Reddedilen çağrıları tosunac_integration ile inceleyin. Güven listesi zorlamasını kapatmak denetim modudur: çağrılar geçebilir ve uyarı kaydedilir. Kalıcı çözüm olarak kapalı bırakmayın.
set tosun_ac_trusted_resources "my-clothing,my-arena"
# Sunucu konsolu:
tosunac_integrationMeşru ışınlamayı doğru anda bildirin#
Hareketten önce oyuncuyu, sunucunun belirlediği hedefi, yetkiyi ve etkin işlemi doğrulayın. Aşağıdaki parçadaki gibi konumu değiştirmeden hemen önce MarkTeleport çağırın. src ve destination, rastgele istemci parametresinden değil mevcut doğrulanmış sunucu akışınızdan gelmelidir. Bu parça tek başına ağ event’i değildir.
MarkTeleport güven listesi istemez. Hareket ve ilgili görünmezlik/godmode/kamera kontrollerini kısa süre gevşetir; silah, para, event suistimali ve injection kontrolleri açık kalır. Varsayılan ayarlarla güvenilir olmayan çağıran için tek çağrı 15 saniye, oyuncu bütçesi on dakikada toplam 180 saniyedir. Tekrarlanan uzatmalar bütçeyi kullanır. Oyuncuyu sürekli muaf tutmak için her tick çağırmayın.
-- Mevcut, doğrulanmış sunucu işleminizin içinde:
local ok = exports["tosun-ac"]:MarkTeleport(src, 8000, "house_enter")
if ok then
SetEntityCoords(GetPlayerPed(src), destination.x, destination.y, destination.z)
endTek script silahına kapsamlı bypass vermeden izin verin#
Envanter eşyası olmadan silah veren arena veya paintball scriptinde sunucudaki etkin maçı doğrulayın, ardından güvenilir sunucu resource’undan AllowWeapon çağırın. Tek silah adı ve gerçekten gereken süreyi tercih edin. İzin, envanter sahipliği kontrolünü ve aynı kontrolün hasar yolunu etkiler; anticheat’in kalanını kapatmaz.
En fazla bir saat izin verilir. Gerçekten bütün silahlar gerekmiyorsa yıldız kullanmayın. SetExempt daha geniştir, güven ister ve en fazla beş dakikadır. Eski BypassDetection, detectionKey değerini dikkate almaz; en fazla bir dakikalık tam muafiyet verir. Tek kontrole özel bypass gibi kullanmayın.
Bağlantısı kesilen oyuncunun geçici source ID değerini saklayıp daha sonraki ödül veya muafiyette kullanmayın. Hassas işlem anında oyuncunun hâlâ doğruladığınız sunucu oturumuna ait olduğunu kontrol edin. Resource’un güven listesinde bulunması kendi kodundaki yetki, hedef ve işlem doğrulamalarını gereksiz yapmaz. Arena bitişi ve karakter değişimi gibi sınır durumlarını da test edin.
- Normal yetkili işlem çalışmalı ve izin süresi beklenen zamanda bitmeli.
- Sahte istemci isteği başka oyuncu, süre, silah veya hedef seçememeli.
- Güvenilir olmayan hassas çağrı false dönmeli ve konsolda açıklama görünmeli.
- Resource yeniden başlatıldıktan sonra entegrasyon durumu ve normal işlemler tekrar kontrol edilmeli.
-- my-arena: güvenilir sunucu resource’u, doğrulanmış oturum
local allowed = exports["tosun-ac"]:AllowWeapon(src, "WEAPON_PISTOL", 60000)
-- Silahı yalnız doğrulanmış arena işleminizin parçası olarak verin.Geçici muafiyeti doğru sunucu API’siyle bitirin#
Sunucuda SetExempt; src, milisaniye ve gerekçe alır. İstemcide SetExempt; state, milisaniye ve gerekçe alır. İmzalar birbirinin yerine kullanılamaz. İstemci muafiyeti istemci tespitlerini etkiler; sunucu tarafında yetki kazandırmaz. Güvenilir sunucu akışında SetPlayerExempt çağrısına false state vermek geçici oyuncu muafiyetini kaldırır. Önce çakışan etkinlikleri koordine edin: bu durum her resource’a ait bağımsız bir token değil, oyuncu çapında geçici durumdur. Kapatılması başka etkinliğin geçici muafiyetini de sonlandırabilir. Tersine, personel veya panel whitelist’i geçici durum kaldırıldıktan sonra IsExemptFromPunish sonucunu hâlâ doğru tutabilir. Yeterliyse dar kapsamlı MarkTeleport ya da AllowWeapon kullanın.
- Yetkili etkinliği doğrulanmış güncel oyuncuyla tamamlayın veya iptal edin; ihtiyaç kalmadığında geçici izni kaldırın.
- İptali, bağlantı kesilmesini ve normal bitişi test edin; arka plan döngüsünde tam muafiyeti sürekli uzatmayın.
- Normal oyuncuyla davranışı doğrulayın; devam eden korumanın personel, panel whitelist’i veya başka etkinlikten kaynaklandığını kontrol edin.
-- Trusted server resource; src belongs to an authorised workflow.
-- Clear the temporary exemption when that workflow finishes or is cancelled.
local cleared = exports["tosun-ac"]:SetPlayerExempt(src, false, 0, "menu_finished")İsteğe bağlı yardımcı dosyalarda sonucu açıkça değerlendirin#
Köprü yardımcı dosyaları kendi resource manifest’inize eklenir; sizin yetki kontrollerinizin yerini almaz. TosunAC.IsAvailable AC resource’unun başladığını, TosunAC.IsTrusted çağıranın güvenilirliğini kontrol eder. PlayerExempt, ok ve mode döndürür: full güvenilir tam muafiyet, soft yalnız sınırlı hareket ve görünürlük iznidir. Her doğru sonucu tam dokunulmazlık saymayın. Etkinlik gerçekten tam muafiyet gerektiriyorsa, yalnız soft geldiğinde farklı koruma kapsamıyla sessizce sürdürmek yerine nasıl durdurulacağını veya reddedileceğini belirleyin. PlayerExemptOff geçici tam muafiyeti sunucu API’si üzerinden kaldırır. Kodda bu ayrımı baştan yapmak, özellikle menü iptallerinde ve güven listesi değişikliklerinde sorunların kaynağını görünür tutar.
- Sunucu yardımcısını TosunAC kullanan sunucu script’inden önce yükleyin; diğer manifest bağımlılıklarını koruyun.
- Etkinlik başlarken ok ve mode değerlerini inceleyin; yalnız resource, gerekçe ve gizli olmayan sonucu kaydedin.
- AC durmuşsa veya çağrı reddedilmişse bu yolu bilinçli yönetin; yeniden denemeden önce başlatma sırası ya da güveni araştırın.
-- Add these lines to your own resource manifest:
client_script "@tosun-ac/bridge/tosun_ac_client.lua"
server_script "@tosun-ac/bridge/tosun_ac_server.lua"Salt okunur export’ları teşhis için kullanın#
GetStatus, ayardaki framework ve çevrimiçi sayısı dâhil küçük çalışma özeti verir; bütün entegrasyonların denetimi değildir. GetIntegrationStatus bütün sunucuyu değil, çağıran resource’un güven durumunu anlatır. IsMovementExempt ve IsExemptFromPunish farklı soruları yanıtlar; birbirinin yerine kullanılmamalıdır. GetDetections adı tarihseldir: tüm son tespit kayıtlarını değil, oyuncunun ts_anticheat tablosundaki banlarını okur. Boş sonuç bu yüzden temiz oyuncu belgesi sayılmaz. Veritabanlı veya geniş oyuncu sorgularını her tick yerine ihtiyaç üzerine çağırın. Dönen nesneyi belgelenen amaçla kullanın; herkese açık debug dökümüne kimlik bilgisi veya gereksiz kişisel veri eklemeyin.
- Teşhis sırasında çağıran resource’u ve tam olarak hangi durum ya da muafiyet sorgusuna bakıldığını kaydedin.
- Bilinen iş akışının beklenen kapsamını gerçek sonuçla karşılaştırın; cezaları değiştirmeden önce uyuşmazlığı araştırın.
- Güncellemeden sonra kurulu TOSUN-AC-EXPORTS.md dosyasını, özellikle eski adları ve sunucu/istemci parametre sırasını yeniden kontrol edin.
Gecikmiş hareketi bağlantı ve resource ömrüne bağlayın#
Bir ev girişinde kısa bekleme gerekiyorsa oyuncunun source değerini yakalamak tek başına yeterli değildir. Bağlantı kesilince bu sayı daha sonraki bir oyuncuya verilebilir. Aşağıdaki server.lua parçası, yalnız önceden yetkilendirilmiş sunucu akışınızın çağıracağı yerel bir fonksiyondur; istemciden açılan ağ olayı değildir. Hedef koordinatlar sunucunun doğruladığı konum olmalıdır. pending içindeki benzersiz Lua nesnesi, bekleyen hareketi aynı akışa bağlar. Oyuncu ayrıldığında kayıt kaldırılır; timer aynı nesneyi bulamazsa işlem yapmaz. Sonradan aynı source ile bağlanan oyuncuya eski hareket uygulanmaz.
tosun-ac durduğunda veya kendi resource’unuz kapanırken örnek bekleyen kayıtları temizler. Gecikme sonunda resource durumu, oyuncunun varlığı ve ped yeniden kontrol edilir; export hatası pcall ile yakalanır ve MarkTeleport true dönmezse hareket yapılmaz. Bu kontroller ev sahipliği, iş rolü veya hedef izni vermez: onları çağrıdan önce doğrulamalısınız. Kod yalnız hareket bildirimi kullanır, tam muafiyet kaldırmaz ve başka script’in izinlerini değiştirmez. Testte beklerken oyuncuyu çıkarın, AC’yi durdurun ve normal giriş yolunu ayrı deneyin. Sürekli döngü ya da bütün oyuncuları tarayan timer gerekmez; yalnız başlatılan iş için tek bekleme vardır.
-- server.lua: call only from an already authorised server workflow.
-- destination is a server-validated location, never raw client input.
local pending = {}
local function scheduleValidatedMove(src, destination)
src = tonumber(src)
if not src or not GetPlayerName(src) then return false end
if GetResourceState("tosun-ac") ~= "started" then return false end
local ticket = {}
local target = {x = destination.x, y = destination.y, z = destination.z}
pending[src] = ticket
SetTimeout(1500, function()
if pending[src] ~= ticket then return end
pending[src] = nil
if not GetPlayerName(src) then return end
if GetResourceState("tosun-ac") ~= "started" then return end
local ped = GetPlayerPed(src)
if not ped or ped == 0 then return end
local called, allowed = pcall(function()
return exports["tosun-ac"]:MarkTeleport(src, 8000, "house_delayed_entry")
end)
if called and allowed == true then
SetEntityCoords(ped, target.x, target.y, target.z)
end
end)
return true -- Scheduled, not yet moved.
end
AddEventHandler("playerDropped", function() pending[source] = nil end)
AddEventHandler("onResourceStop", function(name)
if name == GetCurrentResourceName() or name == "tosun-ac" then
pending = {}
end
end)Güven durumunu entegrasyon resource’unun içinden ölçün#
Güven listesini düzenledikten sonra teşhisi çağrıyı yapacak resource’un içine koyun. Aşağıdaki komut yalnız sunucu konsolunda çalışır; oyuncu çağrısı src sıfır olmadığı için işlenmez. Komutu my-resource-ac-check ile bir kez çalıştırın. GetIntegrationStatus, export’u çağıran resource’un adını, trusted ve enforcing durumlarını döndürür. Bu nedenle başka bir resource içinde alınan true sonucu sizin kıyafet veya arena script’inizin de güvenilir olduğunu kanıtlamaz. GetStatus ise mevcut sürüm ve ayardaki framework için küçük çalışma bilgisidir; tüm entegrasyonların denetim raporu değildir.
Örnekte pcall başarılı olsa bile dönen değerin tablo olması gerekir. Hata ile false sonucu aynı kabul edilmez; export çağrısı kurulamadığında yapılandırmanın doğrulandığını yazmayın. trusted=false ve enforcing=true ise çağıran adı ile incelenmiş güven listesini karşılaştırın. enforcing=false bir denetim ayarı olabilir; bütün hassas işlemlerin güvenle kısıtlandığını göstermez. Çıktı yalnız resource, sürüm, framework ve iki boolean değeri içerir; oyuncu kimlikleri veya anahtar dökümü üretmez. Bu kontrolü her tick çalıştırmayın. Güncellemeden sonra ilgili script’in normal ve reddedilmesi gereken yollarını ayrıca deneyin; salt okunur teşhis cezalandırma export’larına yetki garantisi vermez.
-- Place in the integrating resource's server.lua.
RegisterCommand("my-resource-ac-check", function(src)
if src ~= 0 then return end -- Server console only.
if GetResourceState("tosun-ac") ~= "started" then
print("[integration] tosun-ac is not started")
return
end
local okTrust, trust = pcall(function()
return exports["tosun-ac"]:GetIntegrationStatus()
end)
local okStatus, status = pcall(function()
return exports["tosun-ac"]:GetStatus()
end)
if not okTrust or type(trust) ~= "table"
or not okStatus or type(status) ~= "table" then
print("[integration] status query failed")
return
end
print(("[integration] resource=%s version=%s framework=%s trusted=%s enforcing=%s")
:format(GetCurrentResourceName(), tostring(status.version),
tostring(status.framework), tostring(trust.trusted), tostring(trust.enforcing)))
end, false)Özel eventleri doğrulanmış sunucu işlemlerine bağlayın#
Kendi server scriptinizde RegisterSafeEvent kullanın; event adı çağıran resource adıyla başlamalıdır. validator yalnız sunucunun bildiği oyuncu, görev, konum, eşya ve yetkiyi kontrol edip tam true döndürürse handler çalışır. İstemcinin event anahtarı izin değildir. Aynı ödülü tekrar vermemek için tamamlanan görevi sunucuda bir kez tüketin.
İstemcide export TriggerSafeServerEvent kullanın. sent yalnız gönderildi demektir; ödeme veya ödül onayı değildir. queued_until_key yanıtında çağrı en fazla 30 saniye bekler; dolu kuyruk yeni çağrıyı reddeder. Otomatik ödül/ödeme tekrarı yapmayın. AC yeniden başlatıldığında kaydı yeniden oluşturun.
Önemli: mevcut ham RegisterNetEvent handlerınızı kaldırıp taşımalısınız. Tosun AC diğer resource handlerlarını iptal edemez; aynı hassas işlemi eski eventte bırakmak korumayı aşılabilir kılar. Eski ProtectedEvents entegrasyonunda :safe yalnız AddEventHandler ile sunucu içinde kayıt edilir.
-- my-job/server.lua: own server-owned job state and framework adapter.
local activeJobs = {}
local function registerActions()
if GetResourceState("tosun-ac") ~= "started" then return end
local ok, reason = exports["tosun-ac"]:RegisterSafeEvent("my-job:finish",
function(src)
local job = activeJobs[src]
return job ~= nil and job.completed == true
-- Also verify server-owned position, role and inventory as required.
end,
function(src)
local job = activeJobs[src]
if not job then return end
activeJobs[src] = nil -- consume before any yielding reward operation
-- Give the server-owned reward through your validated framework adapter.
end, {rateLimit=5, windowMs=10000, maxArgs=0})
if not ok then print("[my-job] SafeEvent: " .. tostring(reason)) end
end
AddEventHandler("onResourceStart", function(name)
if name == GetCurrentResourceName() or name == "tosun-ac" then registerActions() end
end)
AddEventHandler("playerDropped", function() activeJobs[source] = nil end)
-- my-job/client.lua:
local sent, state = exports["tosun-ac"]:TriggerSafeServerEvent("my-job:finish")
-- Read state; implement a separate application acknowledgement if needed.
Çağıran resource adını tam olarak tanımlayın#
server.cfg içine set tosun_ac_trusted_resources "my-housing,my-clothing" ekleyin; daha önce incelenmiş diğer adları koruyun. Görünen sunucu adını, oyuncuyu veya Discord rolünü değil, klasör/resource adını yazın. Bu sunucu ayarında set kullanılır, setr kullanılmaz. Düzenlenebilir yapılandırmada ts.EnforceExportCallerWhitelist = true kalsın. Güven listesi hassas export çağrısına izin verir; ev sahipliğini, eşyayı, mesleği veya hedef oyuncuyu doğrulamaz. Kontrolü işlemi yapan resource içinden çalıştırıp trusted=true ve enforcing=true sonuçlarını inceleyin.
set tosun_ac_trusted_resources "my-housing,my-clothing"
# txAdmin server console:
tosunac_integration
-- In the invoking integration resource server script:
local status = exports["tosun-ac"]:GetIntegrationStatus()
print(status.resource, status.trusted, status.enforcing)Beş liste, beş ayrı amaç#
Güvenilir resource listesi hassas export çağırabilecek sunucu scriptlerini belirler. Oyuncu whitelist’i oyuncuya koruma verir ve ayrı yönetilir. Sahte-trigger whitelist’i yalnız bir tuzağı kapatır; gerçek oyun event’ine yetki vermez. ts.ProtectedEvents eski anahtarlı event taşıma katmanıdır; dağıtılan varsayılanda test:event bulunur. Resource baseline incelenmiş dosyaları bütünlük denetimi için kaydeder. Bir listeye ekleme diğerlerine eklemez. Keşfedilen bütün framework event’lerini ProtectedEvents içine yapıştırmayın veya tuzak olarak işaretlemeyin.
Bu paketin tam sunucu export kataloğu#
Aşağıdaki adlar ve argüman bildirimleri bu paketin gerçek sunucu kaynak envanterinden üretilmiştir. Sırayla çalıştırılacak script değil, başvuru listesidir. Büyük/küçük harfi ve sunucu/istemci tarafını aynen koruyun. Dahili tanılama, tarama ve taşıma yardımcıları da listelenir; benzer adları güvenli bir oyun işlemi API’si sanmayın. Değişiklik yapan çağrıdan önce sözleşmesini ve sonuç politikasını okuyun; yalnız adı bilmek yetki sağlamaz.
-- tosun-ac / server
-- AddWhitelist(target, durationSec)
-- AllowWeapon(src, weapon, ms)
-- BanPlayerExt(playerId, reason)
-- BypassDetection(playerId, detectionKey, durationMs)
-- ClearArea(playerId, areaName)
-- ForensicLinksOf(license)
-- GetCloudThreatScore(src)
-- GetDetections(playerId, limit)
-- GetIntegrationStatus()
-- GetNearbyPlayers(playerId, radius)
-- GetPlayerInfo(playerId)
-- GetPlayerShieldData(src)
-- GetServerAuthorityStatus()
-- GetStatus()
-- IsExemptFromPunish(src)
-- IsInArea(playerId, areaName)
-- IsMovementExempt(src)
-- IsPlayerProtected(playerId)
-- IsWhitelisted(playerId)
-- KickPlayer(playerId, reason)
-- MarkTeleport(src, ms, reason)
-- NoteCloudViolation(src, reason, punishment)
-- OpenScanCache(sealed)
-- PauseAllDetections(durationMs)
-- PausePlayerDetections(playerId, durationMs)
-- RateLimit(src, key, max, windowMs)
-- RegisterSafeEvent(eventName, validator, handler, options)
-- RemoveWhitelist(target)
-- RequestShieldScreenshot(src)
-- ScanPolicyFingerprint(moduleFile, policy)
-- ScanResourceSnapshot(name, expected, callback)
-- SealScanCache(raw)
-- SetExempt(playerId, durationMs, reason)
-- SetPlayerExempt(playerId, state, durationMs, reason)
-- WhitelistArea(playerId, areaName, durationSec)
-- acV2Challenge(build, license, fp, version)
-- acV2Fingerprint()
-- acV2Integrity(raw)
-- acV2VerifyResponse(raw, build, license, fp, version, nonce, httpCode)
-- addAdmin(playerId)
-- addCheatSignature(pattern, signatureName, severity)
-- addSignatureEscrowSkip(resourceName, note)
-- addSignatureException(resourceName, filePath, signatureName, note)
-- applyTimeWithFramework(h, m)
-- applyWeatherWithFramework(weather)
-- approveResource(resourceName, approvedBy)
-- ban(playerId, reason)
-- batchDetection(playerName, license, steam, discord, ip, dtype, reason, punishment, banID, screenshot, configKey)
-- batchLog(message, playerId, playerName)
-- batchWebhook(url, payload)
-- blockResource(resourceName, reason)
-- centralHandshake()
-- centralPoll()
-- centralStatus()
-- checkIpReputation(ip)
-- cipherHasSession(src)
-- cipherIssueKey(src)
-- cipherVerify(src, payload, signature)
-- clearInventory(src)
-- crashGuardInspect(v)
-- crashGuardReject(src, p)
-- emergencyLockdown(reason)
-- fakeTriggerTrap(eventName, typ)
-- fakeTriggerWhitelist(eventName)
-- freezePlayer(src, freeze)
-- getAdminType(playerId)
-- getBanInfo(banID)
-- getBans(limit, offset)
-- getBaseline()
-- getBatchStats()
-- getCleanupStats()
-- getConfig(configType)
-- getInfectedFiles()
-- getOnlinePlayers()
-- getPlayerLocale(src)
-- getResources()
-- getRuntimeStats()
-- getSourceKey()
-- getStats()
-- getSuspicious()
-- giveWeapon(src, weapon, ammo)
-- healAll()
-- invalidateSignatureCache()
-- isAdmin(playerId)
-- isAdminMenuAllowed(playerId)
-- isPlayerFrozen(src)
-- isPlayerMuted(src)
-- isQuarantined(src)
-- isStaffPlayer(playerId)
-- issueEventKey(src)
-- licenseStatus()
-- lockdownStatus()
-- massFreeze(state)
-- mutePlayer(src, durationSec, reason, actor)
-- offlineBan(data, reason)
-- offlineBanByLicense(...)
-- phoneNotify(targetSrc, title, body, opts)
-- phoneNotifyAdmins(title, body, opts)
-- punish(playerId, reason, image, config, punish)
-- quarantine(src, reason, sec)
-- quarantineList()
-- refreshPanelPermissions()
-- refreshPanelWhitelist()
-- releaseQuarantine(src)
-- reloadSignatureExceptions()
-- reloadSignatureScanCaches()
-- removeAdmin(playerId)
-- removeSignatureEscrowSkip(idOrName)
-- removeSignatureException(id)
-- removeWhitelist(playerId)
-- reportInfection(resource, file, sigs, severity, callback)
-- rescanResources()
-- runCleanup()
-- scanAllResources()
-- scanSingleResource(name)
-- screenCapture(src, requestedBy)
-- setLockdown(state, reason)
-- setPlayerArmor(src, armor)
-- setPlayerHealth(src, hp)
-- setPlayerLocale(src, lang)
-- setSpeedLimit(kmh)
-- slayPlayer(src)
-- spectatePlayer(adminSrc, targetSrc)
-- stripWeapons(src)
-- translate(key, ...)
-- translateForPlayer(src, key, ...)
-- tsAutoSetup()
-- tsBackdoorScanStatus()
-- tsLicenseRecheck()
-- tsScanBackdoors(callback)
-- tsScanEvents()
-- tsSignatureScanStatus()
-- unban(banID)
-- unmutePlayer(src)
-- v6ScreenWatchLatest(serverId)
-- v6ScreenWatchPoll(rid)
-- v6ScreenWatchRequest(serverId, mode, requestedBy, panelUrl, forceBase64)
-- v9StreamHasSession(serverId)
-- warnPlayer(src, reason, actor)
-- webBridgeApplyInventory(src, action, itemName, count, slot)
-- webBridgeApplyMoney(src, moneyType, amount, action)
-- webBridgeFindByCitizen(cid)
-- webBridgeFindByLicense(license)
-- webBridgeGrantAdmin(src)
-- webBridgeRevokeAdmin(src)
-- whitelistPlayer(playerId, duration)
-- tosun-ac-guardian / server
-- guardianAlive()
-- guardianHold(reason,seconds)
-- tosun_render / server
-- GetStatus()Tam istemci export kataloğu ve sınırlı geçiş süresi#
İstemci SetExempt: durum, milisaniye, neden; sunucu SetExempt: oyuncu source, milisaniye, neden alır. İstemci PauseDetections aynı sınırlı görünüm/hareket/kamera geçişini sağlar; bütün tespitleri durdurmaz. Yerel çağrılar on dakikada toplam 240 saniye uzatma bütçesini ve en fazla 32 neden kaydını paylaşır. Yerel geçiş için IsExempt(config) içine gerçek tespit anahtarı yazılır; IsExempt() yalnız doğrulanmış personel veya güvenilir tam/pause muafiyetini gösterir. Silah, event, injection ve bilinmeyen tespitler açık kalır. false sonucunu ele alın; her frame yeniden çağırmayın.
-- tosun-ac / client
-- GetExemptions()
-- IsExempt(config)
-- IsPlayerAdmin()
-- NativeGuardThreat()
-- NativeGuardToken()
-- PauseDetections(durationMs)
-- SetExempt(state, durationMs, reason)
-- SetSpawned(state)
-- ShieldCaptureForBan(callback)
-- ShieldFlushBanVideo(callback)
-- TriggerSafeServerEvent(eventName, ...)
-- getConfig()
-- getV12Tolerance(key, default)
-- incNetRequest()
-- incScreenshotEvent()
-- shieldHook(hookType, detailJson)Özel state ve dönüş değerini doğru okuyun#
TosunAcState AC resource’unun iç API’sidir; başka resource’lar belgelenen export’ları kullanmalıdır. Sunucudaki setExempt, setPause ve setMovement boolean döndürür, süreleri beş dakika ile sınırlar. Bildirim başarısızsa yeni artırılan izin kaydedilmez; iptal veya azaltma false dönse de özel kayıtta tutulur. Tam muafiyet, pause ve hareket izinleri bağımsızdır. setStaff yalnız uyumluluk aynası yazar, doğrulanmış admin yetkisi vermez. Eski isExemptFromBag/isPausedFromBag adları oyuncunun yazabildiği bag’i değil, doğrulanmış özel izinleri okur. Export başarısı bütün istemcilere teslim veya bütün sunucu tespitlerinin durması anlamına gelmez.
-- Internal AC server API; external resources use guarded exports.
-- TosunAcState.setExempt(id, active, ms) -> boolean
-- TosunAcState.setPause(id, ms) -> boolean
-- TosunAcState.setMovement(id, ms) -> boolean
-- TosunAcState.remaining(id, kind) -> remaining milliseconds
-- TosunAcState.setStaff(id, staff) -> compatibility mirror only
-- AddWhitelist(target, durationSec): seconds
-- WhitelistArea(playerId, areaName, durationSec): seconds
-- IsInArea: named record lookup, not a coordinate/permission check
-- WhitelistArea grants broad client relief, not one chosen detector.
-- BypassDetection: detectionKey is ignored; full exemption, <=60000ms
-- Client: IsExempt("ts.antiFreeCam") -> scoped camera grace
-- Client: IsExempt() -> verified staff/full/pause onlyEvent adları katalogdur, yetkilendirme planı değildir#
Kaynaklardan üretilen bu katalog sabit AC protokol event’lerini kayıt tarafına göre listeler. Hesaplanan adları veya kendi scriptlerinizin bütün event’lerini içeremez. Dahili anahtar, ceza, yapılandırma ve menü event’lerini elle tekrar göndermeyin. Keşif ad ve taşıma yönünü bulur; eşyanın sahibini veya ödülün hak edilip edilmediğini bilemez. Hassas özel işlemler için doğrulanan RegisterSafeEvent akışını kullanın. Panel koruması ve ac_protected_events sahte-trigger/honeypot kurallarına gider, sunucu doğrulayıcısı oluşturmaz; kurulumda EventScanner.autoProtect=false bırakın.
-- tosun-ac/client/AddEventHandler
-- CEventShockingGunshotFired
-- baseevents:onPlayerDied
-- baseevents:onPlayerKilled
-- esx:onPlayerDeath
-- esx_ambulancejob:revive
-- esx_basicneeds:onRevive
-- gameEventTriggered
-- hospital:client:Revive
-- hospital:client:SetDeathState
-- hospital:client:SetLaststand
-- hospital:client:isDead
-- onClientResourceStart
-- onClientResourceStop
-- playerSpawned
-- qb-ambulancejob:client:RevivePlayer
-- qb-medical:client:OnDeath
-- qb-medical:client:OnRevive
-- tosun-ac:nui:pushToolState
-- tosun-ac:uploadTokenUpdated
-- ts_anticheat:adminStateChanged
-- ts_anticheat:adminStatus
-- ts_anticheat:bridge:capture
-- ts_anticheat:bridge:clearInventory
-- ts_anticheat:bridge:freeze
-- ts_anticheat:bridge:giveWeapon
-- ts_anticheat:bridge:heal
-- ts_anticheat:bridge:mute
-- ts_anticheat:bridge:revive
-- ts_anticheat:bridge:setArmor
-- ts_anticheat:bridge:setHealth
-- ts_anticheat:bridge:slay
-- ts_anticheat:bridge:speedLimit
-- ts_anticheat:bridge:stripWeapons
-- ts_anticheat:bridge:teleport
-- ts_anticheat:bridge:time
-- ts_anticheat:bridge:warning
-- ts_anticheat:bridge:weather
-- ts_anticheat:checkTaze
-- ts_anticheat:cipher:assigned
-- ts_anticheat:cipher:request_refresh
-- ts_anticheat:clearDone
-- ts_anticheat:configUpdated
-- ts_anticheat:detectclient
-- ts_anticheat:internal:receiveKey
-- ts_anticheat:internal:trapsChanged
-- ts_anticheat:isAdmin
-- ts_anticheat:joinBundle
-- ts_anticheat:liveSSRequest
-- ts_anticheat:newDetection
-- ts_anticheat:openAdminMenu
-- ts_anticheat:openAdminMenuAuthorized
-- ts_anticheat:panelBroadcast
-- ts_anticheat:panelHeal
-- ts_anticheat:panelRevive
-- ts_anticheat:panelTime
-- ts_anticheat:panelWeather
-- ts_anticheat:promptOpenMenu
-- ts_anticheat:receiveKey
-- ts_anticheat:receiveLiveSS
-- ts_anticheat:receiveLiveVideo
-- ts_anticheat:receivePlayerCount
-- ts_anticheat:receiveScreenshot
-- ts_anticheat:requestCoords
-- ts_anticheat:resourceGuardSync
-- ts_anticheat:shield:requestScreenshot
-- ts_anticheat:shield:uploadConfig
-- ts_anticheat:startVideoLiveStream
-- ts_anticheat:startVideoLiveWeb
-- ts_anticheat:startVideoRecording
-- ts_anticheat:stopVideoLiveStream
-- ts_anticheat:stopVideoLiveWeb
-- ts_anticheat:stopVideoRecording
-- ts_anticheat:syncBanList
-- ts_anticheat:syncConfig
-- ts_anticheat:syncIdentifiers
-- ts_anticheat:syncLogs
-- ts_anticheat:syncPlayers
-- ts_anticheat:takeScreenshot
-- ts_anticheat:unbanDone
-- ts_anticheat:webPanelScreenshot
-- tosun-ac/client/RegisterNUICallback
-- Armour
-- DeleteAll
-- DeleteObjects
-- DeletePeds
-- DeleteVehicles
-- GetPlayerIdentifiers
-- Health
-- addLog
-- armourPlayer
-- banPlayer
-- bringAll
-- bringPlayer
-- cancelAnimation
-- clearNearbyObjects
-- clearNearbyPeds
-- clearNearbyVehicles
-- devtoolsdetected
-- exit
-- freezeAll
-- freezePlayerToggle
-- getBans
-- getLogs
-- getPlayerCount
-- getPlayers
-- giveWeaponPlayer
-- healAll
-- healPlayer
-- isInVehicle
-- kickPlayer
-- liveWatchStart
-- liveWatchStop
-- nuiDependencyMissing
-- nuiWatermark
-- repair
-- returnOCRResult
-- reviveAll
-- revivePlayer
-- screenshotPlayer
-- selfRevive
-- setHealthPlayer
-- setTime
-- setWeather
-- shield_devtools
-- shield_heartbeat
-- shield_heartbeat_fail
-- shield_screenshot
-- shield_tokens
-- shield_video_final
-- shield_video_segment
-- slayPlayer
-- spawnVehicle
-- spectatePlayer
-- stopSpectate
-- stripWeaponsPlayer
-- toggleESP
-- toggleFreecam
-- toggleGodmode
-- toggleInvisible
-- toggleNoclip
-- tosunRenderResult
-- tpToPlayer
-- unbanPlayer
-- verifyModel
-- videoLiveSegmentResult
-- videoRecordingResult
-- videoRecordingStartResult
-- warnPlayerNUI
-- tosun-ac/client/RegisterNetEvent
-- QBCore:Client:OnPlayerLoaded
-- QBCore:Client:OnPlayerUnload
-- esx:onPlayerDeath
-- esx:onPlayerLogout
-- esx:playerLoaded
-- esx_ambulancejob:revive
-- esx_basicneeds:onRevive
-- hospital:client:Revive
-- hospital:client:SetDeathState
-- hospital:client:SetLaststand
-- hospital:client:isDead
-- qb-ambulancejob:client:RevivePlayer
-- qb-medical:client:OnDeath
-- qb-medical:client:OnRevive
-- qbx_core:client:playerLoggedIn
-- qbx_multicharacter:client:chooseChar
-- ts_anticheat:adminStateChanged
-- ts_anticheat:adminStatus
-- ts_anticheat:bridge:capture
-- ts_anticheat:bridge:clearInventory
-- ts_anticheat:bridge:freeze
-- ts_anticheat:bridge:giveWeapon
-- ts_anticheat:bridge:heal
-- ts_anticheat:bridge:mute
-- ts_anticheat:bridge:revive
-- ts_anticheat:bridge:setArmor
-- ts_anticheat:bridge:setHealth
-- ts_anticheat:bridge:slay
-- ts_anticheat:bridge:speedLimit
-- ts_anticheat:bridge:stripWeapons
-- ts_anticheat:bridge:teleport
-- ts_anticheat:bridge:time
-- ts_anticheat:bridge:warning
-- ts_anticheat:bridge:weather
-- ts_anticheat:checkTaze
-- ts_anticheat:cipher:assigned
-- ts_anticheat:cipher:request_refresh
-- ts_anticheat:clearDone
-- ts_anticheat:detectclient
-- ts_anticheat:isAdmin
-- ts_anticheat:joinBundle
-- ts_anticheat:liveSSRequest
-- ts_anticheat:newDetection
-- ts_anticheat:openAdminMenu
-- ts_anticheat:openAdminMenuAuthorized
-- ts_anticheat:panelBroadcast
-- ts_anticheat:panelHeal
-- ts_anticheat:panelRevive
-- ts_anticheat:panelTime
-- ts_anticheat:panelWeather
-- ts_anticheat:promptOpenMenu
-- ts_anticheat:receiveEventKey
-- ts_anticheat:receiveKey
-- ts_anticheat:receiveLiveSS
-- ts_anticheat:receiveLiveVideo
-- ts_anticheat:receivePlayerCount
-- ts_anticheat:receiveScreenshot
-- ts_anticheat:requestCoords
-- ts_anticheat:resourceGuardSync
-- ts_anticheat:shield:requestScreenshot
-- ts_anticheat:shield:uploadConfig
-- ts_anticheat:startVideoLiveStream
-- ts_anticheat:startVideoLiveWeb
-- ts_anticheat:startVideoRecording
-- ts_anticheat:stopVideoLiveStream
-- ts_anticheat:stopVideoLiveWeb
-- ts_anticheat:stopVideoRecording
-- ts_anticheat:syncBanList
-- ts_anticheat:syncConfig
-- ts_anticheat:syncIdentifiers
-- ts_anticheat:syncLogs
-- ts_anticheat:syncPlayers
-- ts_anticheat:takeScreenshot
-- ts_anticheat:unbanDone
-- ts_anticheat:uploadToken
-- ts_anticheat:webPanelScreenshot
-- tosun-ac/server/AddEventHandler
-- QBCore:Server:OnPlayerLoaded
-- QBCore:Server:PlayerLoaded
-- chatMessage
-- clearPedTasksEvent
-- entityControlEvent
-- entityCreated
-- entityCreating
-- esx:playerLoaded
-- eventTriggered
-- explosionEvent
-- fireEvent
-- giveWeaponEvent
-- onResourceStart
-- onResourceStop
-- onServerResourceStart
-- playerConnecting
-- playerDropped
-- playerJoining
-- ptFxEvent
-- qbx_core:server:playerLoaded
-- rconCommand
-- removeAllWeaponsEvent
-- removeWeaponEvent
-- requestControlEvent
-- respawnPlayerPedEvent
-- startProjectileEvent
-- tosun-ac:nuiPermissionRefreshed
-- tosun-ac:panel:characterReady
-- tosun-ac:server:detection
-- tosun-ac:server:logResourceActivity
-- tosun-ac:server:nuiWatermark
-- tosun-ac:server:signedDetection
-- tosun-ac:settingsReloaded
-- ts_anticheat:GetPlayerIdentifiers
-- ts_anticheat:addAdmin_internal
-- ts_anticheat:addLog
-- ts_anticheat:adminDelEntity
-- ts_anticheat:banCommitted
-- ts_anticheat:banPlayer
-- ts_anticheat:banRelay
-- ts_anticheat:bridge:freeze
-- ts_anticheat:bringAllPlayers
-- ts_anticheat:bringPlayer
-- ts_anticheat:cipher:detection
-- ts_anticheat:cipher:request
-- ts_anticheat:clearTasks
-- ts_anticheat:client:scriptsReady
-- ts_anticheat:configUpdated
-- ts_anticheat:deleteObjects
-- ts_anticheat:deletePeds
-- ts_anticheat:deleteVehicles
-- ts_anticheat:freezeAllPlayers
-- ts_anticheat:getBanList
-- ts_anticheat:getLogs
-- ts_anticheat:getPlayerCount
-- ts_anticheat:getPlayers
-- ts_anticheat:healAllPlayers
-- ts_anticheat:internal:pushResourceGuard
-- ts_anticheat:internal:suspicious
-- ts_anticheat:kickPlayer
-- ts_anticheat:liveSSResult
-- ts_anticheat:liveWatchStart
-- ts_anticheat:liveWatchStop
-- ts_anticheat:logAdminMenu
-- ts_anticheat:newLog
-- ts_anticheat:playerBanned
-- ts_anticheat:requestAdminStatus
-- ts_anticheat:requestEventKey
-- ts_anticheat:requestKey
-- ts_anticheat:requestOpenAdminMenu
-- ts_anticheat:returnCoords
-- ts_anticheat:reviveAllPlayers
-- ts_anticheat:screenshotPlayer
-- ts_anticheat:screenshotResult
-- ts_anticheat:server:<computed suffix> [template only; not a runnable exact event]
-- ts_anticheat:server:checkIsAdmin
-- ts_anticheat:server:clientXkzuqBwmTjN7Gab4QzuN9QYZJ1WxxU
-- ts_anticheat:server:requestJoinHandshake
-- ts_anticheat:server:requestResourceGuard
-- ts_anticheat:server:requestSyncData
-- ts_anticheat:server:tazed
-- ts_anticheat:serverClear
-- ts_anticheat:setInvisible
-- ts_anticheat:setTime
-- ts_anticheat:setWeather
-- ts_anticheat:shield:ban_video_saved
-- ts_anticheat:spawnVehicle
-- ts_anticheat:targetArmour
-- ts_anticheat:targetFreeze
-- ts_anticheat:targetGiveWeapon
-- ts_anticheat:targetHeal
-- ts_anticheat:targetRevive
-- ts_anticheat:targetSetHealth
-- ts_anticheat:targetSlay
-- ts_anticheat:targetStripWeapons
-- ts_anticheat:targetWarn
-- ts_anticheat:tpToPlayer
-- ts_anticheat:unbanPlayer
-- ts_anticheat:v10:exec
-- ts_anticheat:v6:detection
-- ts_anticheat:v6:screenshotResult
-- ts_anticheat:verifyModel
-- ts_anticheat:videoResult
-- vehicleComponentControlEvent
-- weaponDamageEvent
-- tosun-ac/server/RegisterNetEvent
-- tosun-ac:panel:characterReady
-- tosun-ac:server:detection
-- tosun-ac:server:logResourceActivity
-- tosun-ac:server:nuiWatermark
-- tosun-guard:acMissing
-- tosun-guard:hello
-- tosun-guard:tick
-- tosun:nativeGuard:status
-- ts_anticheat:GetPlayerIdentifiers
-- ts_anticheat:addLog
-- ts_anticheat:adminDelEntity
-- ts_anticheat:banPlayer
-- ts_anticheat:banRelay
-- ts_anticheat:bridge:freeze
-- ts_anticheat:bringAllPlayers
-- ts_anticheat:bringPlayer
-- ts_anticheat:cipher:detection
-- ts_anticheat:cipher:request
-- ts_anticheat:client:scriptsReady
-- ts_anticheat:deleteObjects
-- ts_anticheat:deletePeds
-- ts_anticheat:deleteVehicles
-- ts_anticheat:freezeAllPlayers
-- ts_anticheat:getBanList
-- ts_anticheat:getLogs
-- ts_anticheat:getPlayerCount
-- ts_anticheat:getPlayers
-- ts_anticheat:healAllPlayers
-- ts_anticheat:kickPlayer
-- ts_anticheat:liveSSResult
-- ts_anticheat:liveWatchStart
-- ts_anticheat:liveWatchStop
-- ts_anticheat:logAdminMenu
-- ts_anticheat:requestAdminStatus
-- ts_anticheat:requestEventKey
-- ts_anticheat:requestKey
-- ts_anticheat:requestOpenAdminMenu
-- ts_anticheat:returnCoords
-- ts_anticheat:reviveAllPlayers
-- ts_anticheat:screenshotPlayer
-- ts_anticheat:screenshotResult
-- ts_anticheat:server:checkIsAdmin
-- ts_anticheat:server:clientXkzuqBwmTjN7Gab4QzuN9QYZJ1WxxU
-- ts_anticheat:server:requestJoinHandshake
-- ts_anticheat:server:requestResourceGuard
-- ts_anticheat:server:requestSyncData
-- ts_anticheat:server:tazed
-- ts_anticheat:serverClear
-- ts_anticheat:setInvisible
-- ts_anticheat:setTime
-- ts_anticheat:setWeather
-- ts_anticheat:shield:banVideo
-- ts_anticheat:shield:heartbeat_fail
-- ts_anticheat:shield:requestUploadConfig
-- ts_anticheat:shield:screenshot
-- ts_anticheat:shield:tokens
-- ts_anticheat:spawnVehicle
-- ts_anticheat:targetArmour
-- ts_anticheat:targetFreeze
-- ts_anticheat:targetGiveWeapon
-- ts_anticheat:targetHeal
-- ts_anticheat:targetRevive
-- ts_anticheat:targetSetHealth
-- ts_anticheat:targetSlay
-- ts_anticheat:targetStripWeapons
-- ts_anticheat:targetWarn
-- ts_anticheat:tpToPlayer
-- ts_anticheat:unbanPlayer
-- ts_anticheat:v10:exec
-- ts_anticheat:v6:detection
-- ts_anticheat:v6:screenshotResult
-- ts_anticheat:verifyModel
-- ts_anticheat:videoResult
-- tosun-ac/server/RegisterServerEvent
-- ts_anticheat:clearTasks
-- tosun-ac/shared/AddEventHandler
-- onClientResourceStart
-- onResourceStop
-- playerDropped
-- ts_anticheat:locale:reload
-- ts_anticheat:locale:setSelf
-- ts_anticheat:locale:sync
-- tosun-ac/shared/RegisterNetEvent
-- ts_anticheat:locale:setSelf
-- ts_anticheat:locale:sync
-- tosun-ac-guardian/server/AddEventHandler
-- onResourceStart
-- onResourceStop
-- tosun_render/server/AddEventHandler
-- onResourceStart
-- tosun-ac/client / RegisterCommand
-- stopspectate
-- tsdelaimed
-- tsfreecam
-- tsmenu
-- unspectate
-- tosun-ac/server / RegisterCommand
-- ac_cleanup
-- acfreeze
-- acping
-- acstats
-- acunfreeze
-- acwarn
-- capture
-- clearinv
-- emergency
-- giveweapon
-- massfreeze
-- mute
-- setarmor
-- sethp
-- speedlimit
-- stripweapons
-- tosunac_backdoorscan
-- tosunac_db_check
-- tosunac_db_status
-- tosunac_doctor
-- tosunac_eventscan
-- tosunac_integration
-- tosunac_license_status
-- tosunac_setup
-- ts
-- ts_adminsync
-- ts_broadcast
-- ts_capture
-- ts_clearinv
-- ts_emergency
-- ts_freeze
-- ts_giveweapon
-- ts_healall
-- ts_kickall
-- ts_lockdown
-- ts_massfreeze
-- ts_modping
-- ts_mute
-- ts_players
-- ts_revive
-- ts_setarmor
-- ts_sethp
-- ts_settime
-- ts_setweather
-- ts_slay
-- ts_speedlimit
-- ts_stripweapons
-- ts_tphere
-- ts_tpto
-- ts_unfreeze
-- ts_unmute
-- ts_v9_help
-- ts_warn
-- ts_warnings
-- unmute
-- tosun-ac/shared / RegisterCommand
-- ts_setlang
-- tosun-ac-guardian/server / RegisterCommand
-- tosunac_guardian_pause
-- tosunac_guardian_resume
-- tosunac_guardian_status
-- tosun_render/server / RegisterCommand
-- tosun_render_statusSafeEvent yeniden başlatma, kuyruk ve hata yönetimi#
RegisterSafeEvent kendi resource adınızla başlayan event, validator ve handler ister. Validator güncel sunucu verisini denetledikten sonra tam olarak true döndürmelidir. Eski ham network handler’ı kaldırın; AC başka resource’un bağımsız handler’ını iptal edemez. Kendi resource’unuz veya tosun-ac yeniden başlayınca kaydı yenileyin. İstemci sonuçları sent, queued_until_key, queue_full, invalid_event_or_arguments veya resource_stopping olur. sent ödül onayı değil, taşıma gönderimidir. Bekleyen çağrı 30 saniyede düşer; kuyruk en fazla 32 çağrı tutar. Handler hatasında otomatik tekrar veya başarı onayı yoktur. Ayrı işlem makbuzu ve tekrar güvenli sunucu işlemi kullanın; para/eşya ödülünü otomatik tekrarlamayın.
-- Client TriggerSafeServerEvent results:
-- true, "sent"
-- false, "queued_until_key"
-- false, "queue_full"
-- false, "invalid_event_or_arguments"
-- false, "resource_stopping"
-- Server RegisterSafeEvent results:
-- true, "registered"
-- false + server_resource_required / use_own_resource_prefix
-- false + invalid_callbacks_or_options / already_registered / registration_capacity
-- Server log may say: application handler failed.
-- No automatic replay; implement an application receipt.Raporun sıraya alınmasını veritabanı kaydıyla karıştırmayın#
reportInfection(resource, file, sigs, severity[, callback]) yalnız veritabanı işlemi sıraya alındığında true döndürür. İsteğe bağlı callback en fazla bir kez success ve affectedRows ile çağrılır; başarı pozitif tam satır sayısı ister. Yanıt vermeyen driver için tamamlanma garantisi yoktur. Örnek adlar kurgusal ve gizli değildir. Resource 1–190 bayt (harf/rakam/_.-), file 1–500 bayt, severity 1–50 harf/rakam/_- (varsayılan warning) olmalıdır. sigs boş olmayan dize veya kesintisiz 1–32 dize listesi; birleştirilmiş değer en fazla 255 bayttır. NUL/CR/LF reddedilir. Geçersiz veri, olmayan/reddeden driver veya anlık hata false döndürür. Sonuç belirsizse otomatik tekrar etmeyin.
-- A reviewed server reporting workflow; fictional non-secret labels.
-- resource: 1..190 bytes, letters/digits/underscore/dot/hyphen
-- file: 1..500 bytes; signatures joined: 1..255 bytes
-- severity: 1..50 bytes, letters/digits/underscore/hyphen (no dot)
local queued = exports["tosun-ac"]:reportInfection(
"my-housing", "server.lua", {"reviewed_pattern"}, "warning",
function(success, affectedRows)
print(success and "[scan] report saved" or "[scan] report not confirmed")
end)
-- queued=true is dispatch only; it is not the completion callback.
-- Do not automatically retry an operation with an uncertain outcome.