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.lights", setVehicleLights);
|
||||||
addNetworkEventHandler("agrp.veh.engine", setVehicleEngine);
|
addNetworkEventHandler("agrp.veh.engine", setVehicleEngine);
|
||||||
addNetworkEventHandler("agrp.veh.repair", repairVehicle);
|
addNetworkEventHandler("agrp.veh.repair", repairVehicle);
|
||||||
|
addNetworkEventHandler("agrp.cruiseControl", toggleVehicleCruiseControl);
|
||||||
|
|
||||||
// Radio
|
// Radio
|
||||||
addNetworkEventHandler("agrp.radioStream", playStreamingRadio);
|
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:
|
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)})`);
|
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;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1257,4 +1267,10 @@ function sendPlayerProfanityFilterState(client, state) {
|
|||||||
sendNetworkEventToPlayer("agrp.profanityFilter", 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)) {
|
if (!isPlayerInAnyVehicle(client)) {
|
||||||
messagePlayerError(client, getLocaleString(client, "MustBeinVehicle"));
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isPlayerInVehicleDriverSeat(client)) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendPlayerToggleVehicleCruiseControl(client);
|
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