From 74062a7d36e3e656ecbce896a880232d6f130ce8 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sat, 23 Jul 2022 04:16:19 -0500 Subject: [PATCH] Add cruise control command and net events --- scripts/client/netevents.js | 1 + scripts/client/vehicle.js | 36 ++++++++++++++++++++++++++++++++++++ scripts/server/netevents.js | 18 +++++++++++++++++- scripts/server/vehicle.js | 26 +++++++++++++++++++++++--- 4 files changed, 77 insertions(+), 4 deletions(-) diff --git a/scripts/client/netevents.js b/scripts/client/netevents.js index 37ff165e..476ed7d3 100644 --- a/scripts/client/netevents.js +++ b/scripts/client/netevents.js @@ -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); diff --git a/scripts/client/vehicle.js b/scripts/client/vehicle.js index dfcaf41d..2d824e35 100644 --- a/scripts/client/vehicle.js +++ b/scripts/client/vehicle.js @@ -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; +} + // =========================================================================== \ No newline at end of file diff --git a/scripts/server/netevents.js b/scripts/server/netevents.js index ddc2230f..fafe2f15 100644 --- a/scripts/server/netevents.js +++ b/scripts/server/netevents.js @@ -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); +} + // ========================================================================== \ No newline at end of file diff --git a/scripts/server/vehicle.js b/scripts/server/vehicle.js index 0ce94bdd..7c23811f 100644 --- a/scripts/server/vehicle.js +++ b/scripts/server/vehicle.js @@ -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); -} \ No newline at end of file +} + +// =========================================================================== + +function isPlayerInVehicleDriverSeat(client) { + if (!isPlayerInAnyVehicle(client)) { + return false; + } + + if (getPlayerVehicleSeat(client) != 0) { + return false; + } + + return false; +} + +// =========================================================================== \ No newline at end of file