Add cruise control command and net events
This commit is contained in:
@@ -69,6 +69,7 @@ function addAllNetworkHandlers() {
|
||||
addNetworkEventHandler("agrp.veh.lights", setVehicleLights);
|
||||
addNetworkEventHandler("agrp.veh.engine", setVehicleEngine);
|
||||
addNetworkEventHandler("agrp.veh.repair", repairVehicle);
|
||||
addNetworkEventHandler("agrp.cruiseControl", toggleVehicleCruiseControl);
|
||||
|
||||
// Radio
|
||||
addNetworkEventHandler("agrp.radioStream", playStreamingRadio);
|
||||
|
||||
@@ -129,4 +129,40 @@ function setAllVehicleDataIndexes() {
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function toggleVehicleCruiseControl(vehicle) {
|
||||
if (!vehicle.isSyncer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
cruiseControl = !cruiseControl;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getVehicleSpeed(vehicle) {
|
||||
let matrix = vehicle.matrix;
|
||||
let frontSpeed = true;
|
||||
let vecMoveSpeed = vehicle.velocity;
|
||||
let speed;
|
||||
|
||||
if (frontSpeed) {
|
||||
speed = getDotProduct(vecMoveSpeed[0], vecMoveSpeed[1], vecMoveSpeed[2], matrix.getElement(1 * 4 + 0), matrix.getElement(1 * 4 + 1), matrix.getElement(1 * 4 + 2));
|
||||
} else {
|
||||
speed = getLength(vecMoveSpeed[0], vecMoveSpeed[1], vecMoveSpeed[2]);
|
||||
}
|
||||
|
||||
if (getGame() == AGRP_GAME_GTA_IV || getGame() == AGRP_GAME_GTA_IV_EFLC) {
|
||||
speed /= 40.0;
|
||||
}
|
||||
|
||||
speed = speed * 90;
|
||||
speed = Math.abs(speed);
|
||||
|
||||
return speed;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -685,7 +685,17 @@ function playerDamagedByPlayer(client, damagerEntityName, weaponId, pedPiece, he
|
||||
|
||||
case AGRP_WEAPON_DAMAGE_EVENT_NORMAL:
|
||||
logToConsole(LOG_DEBUG, `[VRR.Client] ${getPlayerDisplayForConsole(client)}'s damager ${getPlayerDisplayForConsole(damagerEntity)} caused ${healthLoss} damage (damage reduction makes it ${(healthLoss * getPlayerData(client).incomingDamageMultiplier)})`);
|
||||
setPlayerHealth(client, getPlayerHealth(client) - (healthLoss * getPlayerData(client).incomingDamageMultiplier));
|
||||
let remainingDamage = healthLoss * getPlayerData(client).incomingDamageMultiplier;
|
||||
if (getPlayerArmour(client) > 0) {
|
||||
//logToConsole(LOG_DEBUG, `[VRR.Client] ${getPlayerDisplayForConsole(client)}'s armour was ${getPlayerArmour(client)}, so it was reduced by ${healthLoss}`);
|
||||
if (getPlayerArmour(client) - remainingDamage < 0) {
|
||||
setPlayerArmour(client, 0);
|
||||
remainingDamage = remainingDamage - getPlayerArmour(client);
|
||||
} else {
|
||||
setPlayerArmour(client, getPlayerArmour(client) - remainingDamage);
|
||||
}
|
||||
}
|
||||
setPlayerHealth(client, getPlayerHealth(client) - remainingDamage);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1257,4 +1267,10 @@ function sendPlayerProfanityFilterState(client, state) {
|
||||
sendNetworkEventToPlayer("agrp.profanityFilter", client, state);
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function sendPlayerToggleVehicleCruiseControl(client) {
|
||||
sendNetworkEventToPlayer("agrp.cruiseControl", client);
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
@@ -1859,10 +1859,30 @@ function getVehicleColourInfoString(colour, isRGBA) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setVehicleCruiseControlCommand(command, params, client) {
|
||||
function toggleVehicleCruiseControlCommand(command, params, client) {
|
||||
if (!isPlayerInAnyVehicle(client)) {
|
||||
messagePlayerError(client, getLocaleString(client, "MustBeinVehicle"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isPlayerInVehicleDriverSeat(client)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sendPlayerToggleVehicleCruiseControl(client);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function isPlayerInVehicleDriverSeat(client) {
|
||||
if (!isPlayerInAnyVehicle(client)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getPlayerVehicleSeat(client) != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
Reference in New Issue
Block a user