More vehicle purchase stuff

This commit is contained in:
Vortrex
2022-01-31 13:46:50 -06:00
parent f11015551f
commit ae32861b44
4 changed files with 45 additions and 26 deletions

View File

@@ -65,16 +65,15 @@ function addAllNetworkHandlers() {
// Item // Item
addNetworkEventHandler("vrr.itemActionDelayComplete", playerItemActionDelayComplete); addNetworkEventHandler("vrr.itemActionDelayComplete", playerItemActionDelayComplete);
addNetworkEventHandler("vrr.weaponDamage", playerDamagedByPlayer); addNetworkEventHandler("vrr.weaponDamage", playerDamagedByPlayer);
// Misc
addNetworkEventHandler("vrr.player.position", updatePositionInPlayerData); addNetworkEventHandler("vrr.player.position", updatePositionInPlayerData);
addNetworkEventHandler("vrr.player.heading", updateHeadingInPlayerData); addNetworkEventHandler("vrr.player.heading", updateHeadingInPlayerData);
addNetworkEventHandler("vrr.player.lookat", setPlayerHeadLookPosition); addNetworkEventHandler("vrr.player.lookat", setPlayerHeadLookPosition);
addNetworkEventHandler("vrr.skinSelected", playerFinishedSkinSelection); addNetworkEventHandler("vrr.skinSelected", playerFinishedSkinSelection);
addNetworkEventHandler("vrr.clientInfo", updateConnectionLogOnClientInfoReceive); addNetworkEventHandler("vrr.clientInfo", updateConnectionLogOnClientInfoReceive);
addNetworkEventHandler("vrr.vehBuyState", receiveVehiclePurchaseStateUpdateFromClient);
} }
// =========================================================================== // ===========================================================================
@@ -1122,8 +1121,18 @@ function updateAllInteriorVehiclesForPlayer(client, interior, dimension) {
// =========================================================================== // ===========================================================================
function setPlayerBuyingVehicleState(state, vehicle, position) { function setPlayerBuyingVehicleState(client, state, vehicleId, position) {
if(getGlobalConfig().useServerSideVehiclePurchaseCheck == false) {
sendNetworkEventToPlayer("vrr.vehBuyState", client, state, vehicleId, position);
}
}
// ==========================================================================
function receiveVehiclePurchaseStateUpdateFromClient(client, state) {
if(getGlobalConfig().useServerSideVehiclePurchaseCheck == false) {
checkVehicleBuying(client);
}
} }
// =========================================================================== // ===========================================================================
@@ -1132,4 +1141,4 @@ function sendPlayerLogLevel(client, tempLogLevel = logLevel) {
sendNetworkEventToPlayer("vrr.logLevel", client, tempLogLevel); sendNetworkEventToPlayer("vrr.logLevel", client, tempLogLevel);
} }
// =========================================================================== // ==========================================================================

View File

@@ -70,6 +70,7 @@ let globalConfig = {
economy: {}, economy: {},
locales: [], locales: [],
accents: [], accents: [],
useServerSideVehiclePurchaseCheck: false,
}; };
// =========================================================================== // ===========================================================================

View File

@@ -157,9 +157,11 @@ function onProcess(event, deltaTime) {
//checkPlayerPedState(); //checkPlayerPedState();
//checkVehicleBurning(); //checkVehicleBurning();
getClients().forEach((client) => { if(getGlobalConfig().useServerSideVehiclePurchaseCheck == true) {
checkVehicleBuying(client); getClients().forEach((client) => {
}); checkVehicleBuying(client);
});
}
} }
// =========================================================================== // ===========================================================================
@@ -299,12 +301,12 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
return false; return false;
} }
if(getPlayerData(client).enteringVehicle == null || getPlayerData(client).enteringVehicle != vehicle) { //if(getPlayerData(client).enteringVehicle == null || getPlayerData(client).enteringVehicle != vehicle) {
messagePlayerError(client, "You can't enter this vehicle!"); // messagePlayerError(client, "You can't enter this vehicle!");
removePlayerFromVehicle(client); // removePlayerFromVehicle(client);
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}tried to warp into a locked vehicle`); // messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}tried to warp into a locked vehicle`);
return false; // return false;
} //}
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("vrr.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("vrr.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`);
@@ -315,13 +317,11 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
vehicle.engine = getVehicleData(vehicle).engine; vehicle.engine = getVehicleData(vehicle).engine;
if(getVehicleData(vehicle).buyPrice > 0) { if(getVehicleData(vehicle).buyPrice > 0) {
messagePlayerAlert(client, `This ${getVehicleName(vehicle)} is for sale! Cost: {ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).buyPrice)}`); messagePlayerAlert(client, getLocaleString(client, "VehicleForSale", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).buyPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehbuy{MAINCOLOUR}`));
messagePlayerTip(client, `Use /vehbuy if you want to buy it.`);
resetVehiclePosition(vehicle); resetVehiclePosition(vehicle);
} else if(getVehicleData(vehicle).rentPrice > 0) { } else if(getVehicleData(vehicle).rentPrice > 0) {
if(getVehicleData(vehicle).rentedBy != client) { if(getVehicleData(vehicle).rentedBy != client) {
messagePlayerAlert(client, `This ${getVehicleName(vehicle)} is for rent! Cost: {ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)} per minute`); messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`));
messagePlayerTip(client, `Use /vehrent if you want to rent it.`);
resetVehiclePosition(vehicle); resetVehiclePosition(vehicle);
} else { } else {
messagePlayerAlert(client, `You are renting this ${getVehicleName(vehicle)} for {ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)} per minute. {MAINCOLOUR}Use {ALTCOLOUR}/stoprent {MAINCOLOUR}if you want to stop renting it.`); messagePlayerAlert(client, `You are renting this ${getVehicleName(vehicle)} for {ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)} per minute. {MAINCOLOUR}Use {ALTCOLOUR}/stoprent {MAINCOLOUR}if you want to stop renting it.`);
@@ -359,15 +359,17 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
} }
if(!getVehicleData(vehicle).engine) { if(!getVehicleData(vehicle).engine) {
if(doesPlayerHaveVehicleKeys(client, vehicle)) { if(getVehicleData(vehicle).buyPrice == 0 && getVehicleData(vehicle).rentPrice == 0) {
if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "engine")) { if(doesPlayerHaveVehicleKeys(client, vehicle)) {
messagePlayerTip(client, `This ${getVehicleName(vehicle)}'s engine is off. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "engine").key))} {MAINCOLOUR}to start it.`); if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "engine")) {
messagePlayerTip(client, `This ${getVehicleName(vehicle)}'s engine is off. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "engine").key))} {MAINCOLOUR}to start it.`);
} else {
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off. Use /engine to start it`);
}
} else { } else {
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off. Use /engine to start it`); messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off and you don't have the keys to start it`);
}
} else {
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off and you don't have the keys to start it`);
}
} }
resetVehiclePosition(vehicle); resetVehiclePosition(vehicle);
} }

View File

@@ -580,7 +580,7 @@ function buyVehicleCommand(command, params, client) {
vehicle.engine = true; vehicle.engine = true;
getVehicleData(vehicle).needsSaved = true; getVehicleData(vehicle).needsSaved = true;
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_TESTDRIVE, vehicle.id, getVehiclePosition(vehicle));
meActionToNearbyPlayers(client, `receives a set of keys to test drive the ${getVehicleName(vehicle)} and starts the engine`); meActionToNearbyPlayers(client, `receives a set of keys to test drive the ${getVehicleName(vehicle)} and starts the engine`);
messagePlayerInfo(client, getLocaleString(client, "DealershipPurchaseTestDrive")); messagePlayerInfo(client, getLocaleString(client, "DealershipPurchaseTestDrive"));
} }
@@ -1354,18 +1354,22 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim
function checkVehicleBuying(client) { function checkVehicleBuying(client) {
if(!isPlayerLoggedIn(client)) { if(!isPlayerLoggedIn(client)) {
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
return false; return false;
} }
if(!isPlayerSpawned(client)) { if(!isPlayerSpawned(client)) {
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
return false; return false;
} }
if(!getPlayerData(client)) { if(!getPlayerData(client)) {
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
return false; return false;
} }
if(!getPlayerData(client).buyingVehicle) { if(!getPlayerData(client).buyingVehicle) {
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
return false; return false;
} }
@@ -1374,6 +1378,7 @@ function checkVehicleBuying(client) {
messagePlayerError(client, getLocaleString(client, "DealershipPurchaseExitedVehicle")); messagePlayerError(client, getLocaleString(client, "DealershipPurchaseExitedVehicle"));
respawnVehicle(getPlayerData(client).buyingVehicle); respawnVehicle(getPlayerData(client).buyingVehicle);
getPlayerData(client).buyingVehicle = false; getPlayerData(client).buyingVehicle = false;
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
} }
return false; return false;
} }
@@ -1383,6 +1388,7 @@ function checkVehicleBuying(client) {
messagePlayerError(client, getLocaleString(client, "VehiclePurchaseNotEnoughMoney")); messagePlayerError(client, getLocaleString(client, "VehiclePurchaseNotEnoughMoney"));
respawnVehicle(getPlayerData(client).buyingVehicle); respawnVehicle(getPlayerData(client).buyingVehicle);
getPlayerData(client).buyingVehicle = false; getPlayerData(client).buyingVehicle = false;
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
return false; return false;
} }
@@ -1396,6 +1402,7 @@ function checkVehicleBuying(client) {
getVehicleData(getPlayerData(client).buyingVehicle).spawnLocked = false; getVehicleData(getPlayerData(client).buyingVehicle).spawnLocked = false;
getPlayerData(client).buyingVehicle = false; getPlayerData(client).buyingVehicle = false;
messagePlayerSuccess(client, getLocaleString(client, "VehiclePurchaseComplete")); messagePlayerSuccess(client, getLocaleString(client, "VehiclePurchaseComplete"));
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_NONE, null, null);
return true; return true;
} }