Files
GTA4RP/scripts/client/sync.js
2021-01-11 10:31:49 -06:00

145 lines
4.9 KiB
JavaScript

// ===========================================================================
// Asshat-Gaming Roleplay
// https://github.com/VortrexFTW/gtac_asshat_rp
// Copyright (c) 2020 Asshat-Gaming (https://asshatgaming.com)
// ---------------------------------------------------------------------------
// FILE: sync.js
// DESC: Provides some elements and data sync
// TYPE: Client (JavaScript)
// ===========================================================================
// ---------------------------------------------------------------------------
addEventHandler("onProcess", function(event, deltaTime) {
if(localPlayer != null && isSpawned) {
if(localPlayer.health <= 1) {
localPlayer.clearWeapons();
triggerNetworkEvent("ag.player.death", localPlayer.position);
}
}
});
// ---------------------------------------------------------------------------
addNetworkHandler("ag.veh.engine", function(vehicle, state) {
vehicle.engine = state;
});
// ---------------------------------------------------------------------------
addNetworkHandler("ag.veh.lights", function(vehicle, state) {
vehicle.lights = state;
});
// ---------------------------------------------------------------------------
addNetworkHandler("ag.veh.repair", function(syncId) {
getVehicleFromSyncId(syncId).fix();
});
// ---------------------------------------------------------------------------
function syncVehicleProperties(vehicle) {
//if(doesEntityDataExist(vehicle, "ag.lights")) {
// let lights = getEntityData(vehicle, "ag.lights");
// if(lights != vehicle.lights) {
// vehicle.lights = lights;
// }
//}
//if(doesEntityDataExist(vehicle, "ag.engine")) {
// let engine = getEntityData(vehicle, "ag.engine");
// if(engine != vehicle.engine) {
// vehicle.engine = engine;
// }
//}
//if(doesEntityDataExist(vehicle, "ag.siren")) {
// let siren = getEntityData(vehicle, "ag.siren");
// if(siren != vehicle.siren) {
// vehicle.siren = siren;
// }
//}
if(doesEntityDataExist(vehicle, "ag.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "ag.panelStatus");
for(let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]);
}
}
if(doesEntityDataExist(vehicle, "ag.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "ag.wheelStatus");
for(let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]);
}
}
if(doesEntityDataExist(vehicle, "ag.lightStatus")) {
let lightStatus = getEntityData(vehicle, "ag.lightStatus");
for(let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]);
}
}
if(doesEntityDataExist(vehicle, "ag.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "ag.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight);
}
}
addNetworkHandler("ag.veh.sync", function(event, vehicle) {
syncVehicleProperties(vehicle);
});
// ---------------------------------------------------------------------------
function syncCivilianProperties(civilian) {
if(doesEntityDataExist(civilian, "ag.scale")) {
let scaleFactor = getEntityData(civilian, "ag.scale");
let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position;
civilian.matrix = tempMatrix;
tempPosition.z += scaleFactor.z;
civilian.position = tempPosition;
}
}
addNetworkHandler("ag.civ.sync", function(event, civilian) {
syncCivilianProperties(civilian);
});
// ---------------------------------------------------------------------------
function syncPlayerProperties(player) {
if(doesEntityDataExist(player, "ag.scale")) {
let scaleFactor = getEntityData(player, "ag.scale");
let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position;
player.matrix = tempMatrix;
tempPosition.z += scaleFactor.z;
player.position = tempPosition;
}
}
addNetworkHandler("ag.player.sync", function(event, player) {
syncPlayerProperties(player);
});
// ---------------------------------------------------------------------------
function syncObjectProperties(object) {
if(doesEntityDataExist(object, "ag.scale")) {
let scaleFactor = getEntityData(object, "ag.scale");
let tempMatrix = object.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = object.position;
object.matrix = tempMatrix;
tempPosition.z += scaleFactor.z;
object.position = tempPosition;
}
}
addNetworkHandler("ag.obj.sync", function(event, object) {
syncObjectProperties(object);
});
// ---------------------------------------------------------------------------