Add cruise control command and net events

This commit is contained in:
Vortrex
2022-07-23 04:16:19 -05:00
parent d04b5549a6
commit 74062a7d36
4 changed files with 77 additions and 4 deletions

View File

@@ -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);

View File

@@ -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;
}
// ===========================================================================

View File

@@ -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);
}
// ==========================================================================

View File

@@ -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;
}
// ===========================================================================