Skip to content

Events

server.on("playerJoin", (player) => { /* ... */ });

Listeners run synchronously in the network loop. They may be async, but where an event takes a return value (a veto, a replacement), only what is returned synchronously counts. If several listeners return values, any false wins; otherwise the last number does.

Players

Event Arguments Return
playerJoin player
playerQuit player, reason: "quit" | "timeout" | "kicked"
playerSpawn player
playerDeath player, killer: Player | Ped | null, weapon
playerPause player, paused, focused
playerDamage victim, attacker: Player | Ped, hit: Hit false cancels, a number replaces the damage
playerShoot player, shot: { weapon, origin, target } false cancels the shot
playerExplosion player, explosion: { type, weapon, vehicle, position } false: its blast hurts no player
playerWeaponViolation player, reason: "notOwned" | "noAmmo" | "fireRate" | "position", weapon
playerWantedLevel player, level, old false keeps the old level, a number sets another
playerEnterVehicle player, vehicle
playerExitVehicle player, vehicle

Hit

Field
weapon Weapon (0 unarmed).
bodyPart BodyPart: 3 torso, 4 groin, 5/6 arms, 7/8 legs, 9 head.
damage Before armour.
direction Side of the victim hit, 0-3.
lethal A ped headshot that kills outright; a returned number overrides it.

Vehicles

Event Arguments Return
vehicleDeath vehicle, killer: Player | null false saves it (repaired instead)
vehicleRespawn vehicle
vehicleRadio player, vehicle, station false refuses, a number tunes elsewhere

Peds and population

Event Arguments Return
pedDamage ped, attacker: Player | Ped, hit false cancels, a number replaces the damage
pedDeath ped, killer: Player | Ped | null, weapon
pedViolation player, ped, reason
populationSpawn spawn: { vehicle, position, heading, peds }, player false refuses it

Zones

Event Arguments
zoneEnter player, zone
zoneLeave player, zone
zoneMove player, zone (each position update inside, ~20/s)

Client scripts

Event Arguments
clientMessage player, channel, data (parsed JSON)
clientScriptError player, error: { where, message }