Skip to content

Instantly share code, notes, and snippets.

@Yiin
Last active September 23, 2023 02:03
Show Gist options
  • Save Yiin/ccb7162193b2dac40a205e8f0c820d01 to your computer and use it in GitHub Desktop.
Save Yiin/ccb7162193b2dac40a205e8f0c820d01 to your computer and use it in GitHub Desktop.
function getV1ServerArgs(eventName, args) {
return ({
anyResourceError: ({ resource }) => [resource],
anyResourceStart: ({ resource }) => [resource],
anyResourceStop: ({ resource }) => [resource],
consoleCommand: ({ command, args }) => [command, ...args],
entityEnterColshape: ({ colShape, entity }) => [colShape, entity],
entityLeaveColshape: ({ colShape, entity }) => [colShape, entity],
explosion: ({ source, type, pos, fx, target }) => [source, type, pos, fx, target],
netOwnerChange: ({ entity, newOwner, oldOwner }) => [entity, newOwner, oldOwner],
playerChangedVehicleSeat: ({ player, vehicle, oldSeat, newSeat }) => [player, vehicle, oldSeat, newSeat],
playerConnect: ({ player }) => [player],
playerConnectDenied: ({ reason, name, ip, passwordHash, isDebug, branch, version, cdnUrl, discordId }) => [reason, name, ip, passwordHash, isDebug, branch, version, cdnUrl, discordId],
playerDamage: ({ player, attacker, healthDamage, armourDamage, weaponHash }) => [player, attacker, healthDamage, armourDamage, weaponHash],
playerDeath: ({ player, killer, weaponHash }) => [player, killer, weaponHash],
playerDisconnect: ({ player, reason }) => [player, reason],
playerEnteredVehicle: ({ player, vehicle, seat }) => [player, vehicle, seat],
playerEnteringVehicle: ({ player, vehicle, seat }) => [player, vehicle, seat],
playerLeftVehicle: ({ player, vehicle, seat }) => [player, vehicle, seat],
removeEntity: ({ object }) => [object],
// resourceStart: ({ errored }) => [errored],
// resourceStop: ({}) => [],
// resourceError: ({ error, file, line, stackTrace }) => [error, file, line, stackTrace],
syncedMetaChange: ({ entity, key, newValue, oldValue }) => [entity, key, newValue, oldValue],
streamSyncedMetaChange: ({ object, key, newValue, oldValue }) => [object, key, newValue, oldValue],
globalMetaChange: ({ key, newValue, oldValue }) => [key, newValue, oldValue],
globalSyncedMetaChange: ({ key, newValue, oldValue }) => [key, newValue, oldValue],
vehicleAttach: ({ vehicle, attachedVehicle }) => [vehicle, attachedVehicle],
vehicleDestroy: ({ vehicle }) => [vehicle],
vehicleDetach: ({ vehicle, detachedVehicle }) => [vehicle, detachedVehicle],
weaponDamage: ({ source, target, weaponHash, damage, offset, bodyPart }) => [source, target, weaponHash, damage, offset, bodyPart],
startFire: ({ player, fires }) => [player, fires],
startProjectile: ({ player, pos, dir, ammoHash, weaponHash }) => [player, pos, dir, ammoHash, weaponHash],
playerWeaponChange: ({ player, oldWeapon, newWeapon }) => [player, oldWeapon, newWeapon],
vehicleDamage: ({ vehicle, attacker, bodyHealthDamage, additionalBodyHealthDamage, engineHealthDamage, petrolTankDamage, weaponHash }) => [vehicle, attacker, bodyHealthDamage, additionalBodyHealthDamage, engineHealthDamage, petrolTankDamage, weaponHash],
localMetaChange: ({ player, key, newValue, oldValue }) => [player, key, newValue, oldValue],
connectionQueueAdd: ({ connectionInfo }) => [connectionInfo],
connectionQueueRemove: ({ connectionInfo }) => [connectionInfo],
serverStarted: ({}) => [],
playerRequestControl: ({ player, target }) => [player, target],
playerAnimationChange: ({ target, oldAnimDict, newAnimDict, oldAnimName, newAnimName }) => [target, oldAnimDict, newAnimDict, oldAnimName, newAnimName],
playerInteriorChange: ({ player, oldInterior, newInterior }) => [player, oldInterior, newInterior],
playerDimensionChange: ({ player, oldDimension, newDimension }) => [player, oldDimension, newDimension],
vehicleHorn: ({ vehicle, player, state }) => [vehicle, player, state],
vehicleSiren: ({ vehicle, state }) => [vehicle, state],
playerSpawn: ({ player }) => [player],
baseObjectCreate: ({ baseObject }) => [baseObject],
baseObjectRemove: ({ baseObject }) => [baseObject],
metaChange: ({ target, key, newValue, oldValue }) => [target, key, newValue, oldValue],
voiceConnection: ({ state }) => [state],
requestSyncedScene: ({ player, sceneID }) => [player, sceneID],
startSyncedScene: ({ player, sceneID, startPos, startRot, animDictHash, entityAnimPairs }) => [player, sceneID, startPos, startRot, animDictHash, entityAnimPairs],
stopSyncedScene: ({ player, sceneID }) => [player, sceneID],
updateSyncedScene: ({ player, startRate, sceneID }) => [player, startRate, sceneID],
clientDeleteObject: ({ player }) => [player],
clientRequestObject: ({ player, model, pos }) => [player, model, pos],
playerHeal: ({ player, oldHealth, newHealth, oldArmour, newArmour }) => [player, oldHealth, newHealth, oldArmour, newArmour]
})[eventName];
}
function getV1ClientArgs(eventName, args) {
return ({
anyResourceError: ({ resource }) => [resource],
anyResourceStart: ({ resource }) => [resource],
anyResourceStop: ({ resource }) => [resource],
changedVehicleSeat: ({ vehicle, oldSeat, newSeat }) => [vehicle, oldSeat, newSeat],
connectionComplete: ({ }) => [],
consoleCommand: ({ command, args }) => [command, ...args],
disconnect: ({ }) => [],
enteredVehicle: ({ vehicle, seat }) => [vehicle, seat],
gameEntityCreate: ({ entity }) => [entity],
gameEntityDestroy: ({ entity }) => [entity],
keydown: ({ key }) => [key],
keyup: ({ key }) => [key],
leftVehicle: ({ vehicle, seat }) => [vehicle, seat],
startEnteringVehicle: ({ vehicle, seat }) => [vehicle, seat],
startLeavingVehicle: ({ vehicle, seat }) => [vehicle, seat],
removeEntity: ({ object }) => [object],
resourceStart: ({ resource }) => [resource],
resourceStop: ({ resource }) => [resource],
resourceError: ({ resource }) => [resource],
syncedMetaChange: ({ entity, key, newValue, oldValue }) => [entity, key, newValue, oldValue],
streamSyncedMetaChange: ({ entity, key, newValue, oldValue }) => [entity, key, newValue, oldValue],
globalMetaChange: ({ key, newValue, oldValue }) => [key, newValue, oldValue],
globalSyncedMetaChange: ({ key, newValue, oldValue }) => [key, newValue, oldValue],
taskChange: ({ oldTask, newTask }) => [oldTask, newTask],
spawned: ({ }) => [],
localMetaChange: ({ key, newValue, oldValue }) => [key, newValue, oldValue],
netOwnerChange: ({ entity, newOwner, oldOwner }) => [entity, newOwner, oldOwner],
windowFocusChange: ({ state }) => [state],
windowResolutionChange: ({ oldResolution, newResolution }) => [oldResolution, newResolution],
playerAnimationChange: ({ target, oldAnimDict, newAnimDict, oldAnimName, newAnimName }) => [target, oldAnimDict, newAnimDict, oldAnimName, newAnimName],
playerWeaponShoot: ({ weaponHash, totalAmmo, ammoInClip }) => [weaponHash, totalAmmo, ammoInClip],
playerWeaponChange: ({ oldWeapon, newWeapon }) => [oldWeapon, newWeapon],
baseObjectCreate: ({ object }) => [object],
baseObjectRemove: ({ object }) => [object],
weaponDamage: ({ target, weaponHash, damage, offset, bodyPart, source, setDamageValue }) => [target, weaponHash, damage, offset, bodyPart, source],
worldObjectPositionChange: ({ object, oldPos }) => [object, oldPos],
worldObjectStreamIn: ({ object }) => [object],
worldObjectStreamOut: ({ object }) => [object],
// metaChange: ({ target, key, newValue, oldValue }) => [target, key, newValue, oldValue],
entityEnterColshape: ({ colShape, entity }) => [colShape, entity],
entityLeaveColshape: ({ colShape, entity }) => [colShape, entity],
entityHitEntity: ({ damager, entity, weaponHash }) => [damager, entity, weaponHash],
playerBulletHit: ({ weaponHash, victim, pos }) => [weaponHash, victim, pos],
voiceConnection: ({ state }) => [state]
})[eventName];
}
export const on = (event, handler) => {
alt.Events[getV2Event(event)]((args) => {
const ret = handler(...(alt.isServer ? getV1ServerArgs(event, args) : getV1ClientArgs(event, args)));
if (ret === false && isCancellable(event)) {
args.cancel();
}
if (typeof ret === 'number' && 'setDamageValue' in args) {
args.setDamageValue(ret);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment