MTADEV Tudástár
Használható MTA:SA fejlesztői dokumentáció
Gyakorlati leírások Lua, resource struktúra, SQL, biztonság, optimalizálás, moderáció és Discord/web összekötés témákban. Nem csak szöveg: ellenőrzőlisták és másolható példák is vannak.
9 cikk
9 kategória
gyakorlati példák
Biztonságos client/server event kezelés
MTA-ban a kliensoldali kódot a játékos gépe futtatja, ezért nem szabad vakon megbízni abban, amit a kliens küld.
Amit mindig szerveroldalon ellenőrizz
- Játékos pénze.
- Játékos rangja és admin jogosultsága.
- Inventory item létezése.
- Távolság markerhez, NPC-hez, járműhöz.
- Cooldown / spam védelem.
- Mennyiség, ár, ID, SQL rekord tulajdonjoga.
Példa távolság ellenőrzésre
local shopPos = Vector3(1234.0, -1450.0, 13.5)
addEvent("shop:open", true)
addEventHandler("shop:open", root, function()
local player = client
if not isElement(player) then return end
local px, py, pz = getElementPosition(player)
if getDistanceBetweenPoints3D(px, py, pz, shopPos.x, shopPos.y, shopPos.z) > 4 then
return
end
triggerClientEvent(player, "shop:showPanel", resourceRoot)
end)Event spam védelem
local lastUse = {}
function isOnCooldown(player, key, seconds)
local now = getTickCount()
local id = getPlayerSerial(player) .. ":" .. key
if lastUse[id] and now - lastUse[id] < seconds * 1000 then
return true
end
lastUse[id] = now
return false
endTiltott szemlélet
- „A kliens úgysem tudja meghívni.” De tudja.
- „A panelben nincs ilyen gomb.” Nem számít.
- „A serial alapján majd jó lesz.” A serial hasznos, de önmagában nem jogosultság.