Merge branch 'nightly' into ragemp

This commit is contained in:
Vortrex
2022-03-12 05:21:28 -06:00
32 changed files with 613 additions and 381 deletions

View File

@@ -391,5 +391,7 @@
"NotATester": "You are not a tester!", "NotATester": "You are not a tester!",
"AccessDenied": "AccessDenied", "AccessDenied": "AccessDenied",
"InvalidSkin": "That skin is invalid!", "InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors" "HeaderInteriorTypes": "Interiors List",
"ViewInventoryKeyPressTip": "Press {1} to see your items",
"ViewInventoryCommandTip": "Use {1} to see your items"
} }

View File

@@ -391,5 +391,7 @@
"NotATester": "You are not a tester!", "NotATester": "You are not a tester!",
"AccessDenied": "AccessDenied", "AccessDenied": "AccessDenied",
"InvalidSkin": "That skin is invalid!", "InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors" "HeaderInteriorTypes": "Interiors List",
"ViewInventoryKeyPressTip": "Press {1} to see your items",
"ViewInventoryCommandTip": "Use {1} to see your items"
} }

View File

@@ -391,5 +391,7 @@
"NotATester": "You are not a tester!", "NotATester": "You are not a tester!",
"AccessDenied": "AccessDenied", "AccessDenied": "AccessDenied",
"InvalidSkin": "That skin is invalid!", "InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors" "HeaderInteriorTypes": "Interiors List",
"ViewInventoryKeyPressTip": "Press {1} to see your items",
"ViewInventoryCommandTip": "Use {1} to see your items"
} }

View File

@@ -390,5 +390,7 @@
"NotATester": "Вы не тестировщик!", "NotATester": "Вы не тестировщик!",
"AccessDenied": "Доступ запрещен", "AccessDenied": "Доступ запрещен",
"InvalidSkin": "That skin is invalid!", "InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors" "HeaderInteriorTypes": "Interiors List",
"ViewInventoryKeyPressTip": "Press {1} to see your items",
"ViewInventoryCommandTip": "Use {1} to see your items"
} }

View File

@@ -395,5 +395,7 @@
"NotATester": "You are not a tester!", "NotATester": "You are not a tester!",
"AccessDenied": "AccessDenied", "AccessDenied": "AccessDenied",
"InvalidSkin": "That skin is invalid!", "InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors" "HeaderInteriorTypes": "Interiors List",
"ViewInventoryKeyPressTip": "Press {1} to see your items",
"ViewInventoryCommandTip": "Use {1} to see your items"
} }

View File

@@ -119,6 +119,7 @@
<script src="scripts/client/chatbox.js" type="client" language="javascript" /> <script src="scripts/client/chatbox.js" type="client" language="javascript" />
<script src="scripts/client/event.js" type="client" language="javascript" /> <script src="scripts/client/event.js" type="client" language="javascript" />
<script src="scripts/client/gui.js" type="client" language="javascript" /> <script src="scripts/client/gui.js" type="client" language="javascript" />
<script src="scripts/client/house.js" type="client" language="javascript" />
<script src="scripts/client/item.js" type="client" language="javascript" /> <script src="scripts/client/item.js" type="client" language="javascript" />
<script src="scripts/client/job.js" type="client" language="javascript" /> <script src="scripts/client/job.js" type="client" language="javascript" />
<script src="scripts/client/keybind.js" type="client" language="javascript" /> <script src="scripts/client/keybind.js" type="client" language="javascript" />

View File

@@ -8,8 +8,9 @@
// =========================================================================== // ===========================================================================
class BusinessData { class BusinessData {
constructor(index, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) { constructor(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) {
this.index = index; this.index = -1;
this.businessId = businessId;
this.name = name; this.name = name;
this.entrancePosition = entrancePosition; this.entrancePosition = entrancePosition;
this.blipModel = blipModel; this.blipModel = blipModel;
@@ -23,30 +24,95 @@ class BusinessData {
// =========================================================================== // ===========================================================================
function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) { function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) {
logToConsole(LOG_DEBUG, `[VRR.Business] Received business ${businessId} (${name}) from server`);
if(getGame() == VRR_GAME_GTA_IV) { if(getGame() == VRR_GAME_GTA_IV) {
if(getBusinessData(businessId) != false) { if(getBusinessData(businessId) != false) {
let businessData = getBusinessData(businessId);
businessData.name = name;
businessData.entrancePosition = entrancePosition;
businessData.blipModel = blipModel;
businessData.pickupModel = pickupModel;
businessData.hasInterior = hasInterior;
businessData.hasItems = hasItems;
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} already exists. Checking blip ...`);
if(blipModel == -1) { if(blipModel == -1) {
if(businessData.blipId != -1) {
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been removed by the server`);
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId); natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
businesses.splice(getBusinessData(businessId).index, 1); businessData.blipId = -1;
//businesses.splice(businessData.index, 1);
//setAllBusinessDataIndexes();
} else { } else {
natives.setBlipCoordinates(getBusinessData(businessId).blipId, getBusinessData(businessId).entrancePosition); logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip is unchanged`);
natives.changeBlipSprite(getBusinessData(businessId).blipId, getBusinessData(businessId).blipModel);
natives.changeBlipNameFromAscii(getBusinessData(businessId).blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
} }
} else { } else {
if(businessData.blipId != -1) {
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been changed by the server`);
natives.setBlipCoordinates(businessData.blipId, businessData.entrancePosition);
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
natives.setBlipMarkerLongDistance(businessData.blipId, false);
natives.setBlipAsShortRange(tempBusinessData.blipId, true);
natives.changeBlipNameFromAscii(businessData.blipId, `${businessData.name.substr(0, 24)}${(businessData.name.length > 24) ? " ...": ""}`);
} else {
let blipId = natives.addBlipForCoord(entrancePosition);
if(blipId) {
businessData.blipId = blipId;
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
natives.setBlipMarkerLongDistance(businessData.blipId, false);
natives.setBlipAsShortRange(tempBusinessData.blipId, true);
natives.changeBlipNameFromAscii(businessData.blipId, `${businessData.name.substr(0, 24)}${(businessData.name.length > 24) ? " ...": ""}`);
}
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} doesn't exist. Adding ...`);
let tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
if(blipModel != -1) { if(blipModel != -1) {
let blipId = natives.addBlipForCoord(entrancePosition); let blipId = natives.addBlipForCoord(entrancePosition);
if(blipId) { if(blipId) {
let tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
tempBusinessData.blipId = blipId; tempBusinessData.blipId = blipId;
natives.changeBlipSprite(blipId, blipModel); natives.changeBlipSprite(tempBusinessData.blipId, blipModel);
natives.setBlipMarkerLongDistance(blipId, true); natives.setBlipMarkerLongDistance(tempBusinessData.blipId, false);
natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`); natives.setBlipAsShortRange(tempBusinessData.blipId, true);
natives.changeBlipNameFromAscii(tempBusinessData.blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
}
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} has no blip.`);
}
businesses.push(tempBusinessData); businesses.push(tempBusinessData);
} setAllBusinessDataIndexes();
}
} }
} }
} }
// =========================================================================== // ===========================================================================
/**
* @param {number} businessId - The ID of the business (initially provided by server)
* @return {BusinessData} The business's data (class instance)
*/
function getBusinessData(businessId) {
//let tempBusinessData = businesses.find((b) => b.businessId == businessId);
//return (typeof tempBusinessData != "undefined") ? tempBusinessData[0] : false;
for(let i in businesses) {
if(businesses[i].businessId == businessId) {
return businesses[i];
}
}
return false;
}
// ===========================================================================
function setAllBusinessDataIndexes() {
for(let i in businesses) {
businesses[i].index = i;
}
}
// ===========================================================================

View File

@@ -46,11 +46,14 @@ function unBindChatBoxKeys() {
// =========================================================================== // ===========================================================================
function receiveChatBoxMessageFromServer(messageString, colour) { function receiveChatBoxMessageFromServer(messageString, colour) {
if(bottomMessageIndex => chatBoxHistory.length-1) { logToConsole(LOG_DEBUG, `[VRR.ChatBox]: Received chatbox message from server: ${messageString}`);
message(messageString, colour); let colouredString = replaceColoursInMessage(messageString);
if(bottomMessageIndex >= chatBoxHistory.length-1) {
message(colouredString, colour);
bottomMessageIndex = chatBoxHistory.length-1; bottomMessageIndex = chatBoxHistory.length-1;
} }
addToChatBoxHistory(messageString, colour); addToChatBoxHistory(colouredString, colour);
} }
// =========================================================================== // ===========================================================================

View File

@@ -95,6 +95,7 @@ function onProcess(event, deltaTime) {
processGameSpecifics(); processGameSpecifics();
processNearbyPickups(); processNearbyPickups();
processVehiclePurchasing(); processVehiclePurchasing();
//processVehicleFires();
} }
// =========================================================================== // ===========================================================================
@@ -144,9 +145,7 @@ function onElementStreamIn(event, element) {
function onLocalPlayerExitedVehicle(event, vehicle, seat) { function onLocalPlayerExitedVehicle(event, vehicle, seat) {
logToConsole(LOG_DEBUG, `[VRR.Event] Local player exited vehicle`); logToConsole(LOG_DEBUG, `[VRR.Event] Local player exited vehicle`);
if(areServerElementsSupported()) {
sendNetworkEventToServer("vrr.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat); sendNetworkEventToServer("vrr.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
}
if(inVehicleSeat) { if(inVehicleSeat) {
parkedVehiclePosition = false; parkedVehiclePosition = false;
@@ -159,11 +158,9 @@ function onLocalPlayerExitedVehicle(event, vehicle, seat) {
function onLocalPlayerEnteredVehicle(event, vehicle, seat) { function onLocalPlayerEnteredVehicle(event, vehicle, seat) {
logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered vehicle`); logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered vehicle`);
if(areServerElementsSupported()) {
sendNetworkEventToServer("vrr.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat); sendNetworkEventToServer("vrr.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat);
if(inVehicleSeat == 0) { if(inVehicleSeat == 0) {
if(inVehicle.owner != -1) {
inVehicle.engine = false; inVehicle.engine = false;
if(!inVehicle.engine) { if(!inVehicle.engine) {
parkedVehiclePosition = inVehicle.position; parkedVehiclePosition = inVehicle.position;
@@ -171,8 +168,6 @@ function onLocalPlayerEnteredVehicle(event, vehicle, seat) {
} }
} }
} }
}
}
// =========================================================================== // ===========================================================================
@@ -230,3 +225,10 @@ function onCameraProcess(event) {
} }
// =========================================================================== // ===========================================================================
function onChatOutput(event, messageText, colour) {
//event.preventDefault();
//receiveChatBoxMessageFromServer(messageText, colour);
}
// ===========================================================================

82
scripts/client/house.js Normal file
View File

@@ -0,0 +1,82 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: house.js
// DESC: Provides house functions and usage
// TYPE: Client (JavaScript)
// ===========================================================================
class HouseData {
constructor(houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
this.index = -1;
this.houseId = houseId;
this.entrancePosition = entrancePosition;
this.blipModel = blipModel;
this.pickupModel = pickupModel;
this.hasInterior = hasInterior;
this.blipId = -1;
}
}
// ===========================================================================
function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
if(getGame() == VRR_GAME_GTA_IV) {
if(getHouseData(houseId) != false) {
if(blipModel == -1) {
natives.removeBlipAndClearIndex(getHouseData(houseId).blipId);
getHouseData(houseId).blipId = -1;
//houses.splice(getHouseData(houseId).index, 1);
//setAllHouseDataIndexes();
} else {
if(getHouseData(houseId).blipId != -1) {
natives.setBlipCoordinates(getHouseData(houseId).blipId, getHouseData(houseId).entrancePosition);
natives.changeBlipSprite(getHouseData(houseId).blipId, getHouseData(houseId).blipModel);
//natives.changeBlipNameFromAscii(getHouseData(houseId).blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
} else {
let blipId = natives.addBlipForCoord(entrancePosition);
if(blipId) {
getHouseData(houseId).blipId = blipId;
natives.changeBlipSprite(blipId, blipModel);
natives.setBlipMarkerLongDistance(blipId, false);
}
}
}
} else {
let tempHouseData = new HouseData(houseId, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
if(blipModel != -1) {
let blipId = natives.addBlipForCoord(entrancePosition);
if(blipId) {
tempHouseData.blipId = blipId;
natives.changeBlipSprite(blipId, blipModel);
natives.setBlipMarkerLongDistance(blipId, false);
//natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
}
}
houses.push(tempHouseData);
setAllHouseDataIndexes();
}
}
}
// ===========================================================================
/**
* @param {number} houseId - The ID of the house (initially provided by server)
* @return {HouseData} The house's data (class instance)
*/
function getHouseData(houseId) {
let tempHouseData = houses.find((h) => h.houseId == houseId);
return (typeof tempHouseData != "undefined") ? tempHouseData : false;
}
// ===========================================================================
function setAllHouseDataIndexes() {
for(let i in houses) {
houses[i].index = i;
}
}
// ===========================================================================

View File

@@ -247,17 +247,19 @@ function renderJobLabel(name, position, jobType) {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
function processLabelRendering() { function processLabelRendering() {
if(renderLabels && areWorldLabelsSupported()) { if(renderLabels) {
if(localPlayer != null) {
if(!areServerElementsSupported()) { if(!areServerElementsSupported()) {
//for(let i in businesses) { if(localPlayer != null) {
// if(pickups[i].getData("vrr.label.type") != null) { for(let i in businesses) {
// if(getDistance(localPlayer.position, pickups[i].position) <= renderLabelDistance) { if(getDistance(localPlayer.position, businesses[i].entrancePosition) <= 75.0) {
natives.drawColouredCylinder(getPosBelowPos(businesses[i].entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255);
}
}
}
}
// natives.getScreenViewportId if(areWorldLabelsSupported()) {
// natives.getGameViewportId if(localPlayer != null) {
// natives.getViewportPositionOfCoord
} else {
let pickups = getElementsByType(ELEMENT_PICKUP); let pickups = getElementsByType(ELEMENT_PICKUP);
for(let i in pickups) { for(let i in pickups) {
if(pickups[i].getData("vrr.label.type") != null) { if(pickups[i].getData("vrr.label.type") != null) {

View File

@@ -69,8 +69,9 @@ let forceWantedLevel = 0;
// Pre-cache all allowed skins // Pre-cache all allowed skins
let allowedSkins = getAllowedSkins(getGame()); let allowedSkins = getAllowedSkins(getGame());
let businesses = {}; let businesses = [];
let houses = {}; let houses = [];
let jobs = {}; let jobs = [];
let vehicles = [];
// =========================================================================== // ===========================================================================

View File

@@ -107,6 +107,8 @@ function addAllNetworkHandlers() {
addNetworkEventHandler("vrr.holdObject", makePedHoldObject); addNetworkEventHandler("vrr.holdObject", makePedHoldObject);
addNetworkEventHandler("vrr.playerPedId", sendLocalPlayerNetworkIdToServer); addNetworkEventHandler("vrr.playerPedId", sendLocalPlayerNetworkIdToServer);
addNetworkEventHandler("vrr.ped", setLocalPlayerPedPartsAndProps);
} }
// =========================================================================== // ===========================================================================
@@ -139,6 +141,8 @@ function setPlayer2DRendering(hudState, labelState, smallGameMessageState, score
natives.displayCash(hudState); natives.displayCash(hudState);
natives.displayAmmo(hudState); natives.displayAmmo(hudState);
natives.displayHud(hudState); natives.displayHud(hudState);
natives.displayRadar(hudState);
natives.displayAreaName(hudState);
} else { } else {
if(typeof setHUDEnabled != "undefined") { if(typeof setHUDEnabled != "undefined") {
setHUDEnabled(hudState); setHUDEnabled(hudState);
@@ -257,18 +261,6 @@ function setElementCollisionsEnabled(elementId, state) {
// =========================================================================== // ===========================================================================
function setLocalPlayerPedPartsAndProps(parts, props) {
for(let i in parts) {
localPlayer.changeBodyPart(parts[0], parts[1], parts[2]);
}
for(let i in props) {
localPlayer.changeBodyProp(props[0], props[1]);
}
}
// ===========================================================================
function setLocalPlayerArmour(armour) { function setLocalPlayerArmour(armour) {
if(typeof localPlayer.armour != "undefined") { if(typeof localPlayer.armour != "undefined") {
localPlayer.armour = armour; localPlayer.armour = armour;
@@ -301,8 +293,9 @@ function setLocalPlayerInfiniteRun(state) {
function setLocalPlayerSkin(skinId) { function setLocalPlayerSkin(skinId) {
if(getGame() == VRR_GAME_GTA_IV) { if(getGame() == VRR_GAME_GTA_IV) {
//natives.changePlayerModel(natives.getPlayerId(), skinId); natives.changePlayerModel(natives.getPlayerId(), skinId);
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; //localPlayer.skin = allowedSkins[skinSelectorIndex][0];
//localPlayer.modelIndex = allowedSkins[skinSelectorIndex][0];
} else { } else {
localPlayer.skin = skinId; localPlayer.skin = skinId;
} }

View File

@@ -55,7 +55,8 @@ function processSkinSelectKeyPress(keyCode) {
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1]; skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
if(getGame() == VRR_GAME_GTA_IV) { if(getGame() == VRR_GAME_GTA_IV) {
//natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]); //natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]);
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; //localPlayer.skin = allowedSkins[skinSelectorIndex][0];
//localPlayer.modelIndex = allowedSkins[skinSelectorIndex][0];
} else { } else {
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; localPlayer.skin = allowedSkins[skinSelectorIndex][0];
} }
@@ -69,7 +70,8 @@ function processSkinSelectKeyPress(keyCode) {
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1]; skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
if(getGame() == VRR_GAME_GTA_IV) { if(getGame() == VRR_GAME_GTA_IV) {
//natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]); //natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]);
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; //localPlayer.skin = allowedSkins[skinSelectorIndex][0];
//localPlayer.modelIndex = allowedSkins[skinSelectorIndex][0];
} else { } else {
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; localPlayer.skin = allowedSkins[skinSelectorIndex][0];
} }

View File

@@ -121,12 +121,12 @@ function setUpInitialGame() {
natives.setPickupsFixCars(false); natives.setPickupsFixCars(false);
// HUD and Display // HUD and Display
natives.displayCash(false); //natives.displayCash(false);
natives.displayAmmo(false); //natives.displayAmmo(false);
natives.displayHud(false); //natives.displayHud(false);
natives.displayRadar(false); //natives.displayRadar(false);
natives.displayAreaName(false); //natives.displayAreaName(false);
natives.displayPlayerNames(false); //natives.displayPlayerNames(false);
natives.setPoliceRadarBlips(false); natives.setPoliceRadarBlips(false);
natives.removeTemporaryRadarBlipsForPickups(); natives.removeTemporaryRadarBlipsForPickups();
natives.displayNonMinigameHelpMessages(false); natives.displayNonMinigameHelpMessages(false);
@@ -138,14 +138,14 @@ function setUpInitialGame() {
natives.setPlayersDropMoneyInNetworkGame(false); natives.setPlayersDropMoneyInNetworkGame(false);
// Population // Population
natives.dontSuppressAnyCarModels(5.0); //natives.dontSuppressAnyCarModels(5.0);
natives.dontSuppressAnyPedModels(5.0); //natives.dontSuppressAnyPedModels(5.0);
natives.forceGenerateParkedCarsTooCloseToOthers(5.0); //natives.forceGenerateParkedCarsTooCloseToOthers(true);
natives.setParkedCarDensityMultiplier(5.0); //natives.setParkedCarDensityMultiplier(5.0);
natives.setRandomCarDensityMultiplier(5.0); //natives.setRandomCarDensityMultiplier(5.0);
natives.setPedDensityMultiplier(5.0); //natives.setPedDensityMultiplier(5.0);
natives.setCarDensityMultiplier(5.0); //natives.setCarDensityMultiplier(5.0);
natives.setScenarioPedDensityMultiplier(5.0, 5.0); //natives.setScenarioPedDensityMultiplier(5.0, 5.0);
natives.switchRandomTrains(true); natives.switchRandomTrains(true);
natives.switchRandomBoats(true); natives.switchRandomBoats(true);
natives.switchAmbientPlanes(true); natives.switchAmbientPlanes(true);

View File

@@ -10,8 +10,13 @@
function processSync(event, deltaTime) { function processSync(event, deltaTime) {
if(localPlayer != null) { if(localPlayer != null) {
if(!areServerElementsSupported()) { if(!areServerElementsSupported()) {
sendNetworkEventToServer("vrr.player.position", localPlayer.position); sendNetworkEventToServer("vrr.plr.pos", localPlayer.position);
sendNetworkEventToServer("vrr.player.heading", localPlayer.heading); sendNetworkEventToServer("vrr.plr.rot", localPlayer.heading);
//if(localPlayer.vehicle != null) {
// sendNetworkEventToServer("vrr.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
// sendNetworkEventToServer("vrr.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading);
//}
} }
if(localPlayer.health <= 0) { if(localPlayer.health <= 0) {
@@ -39,12 +44,20 @@ function setVehicleEngine(vehicleId, state) {
// =========================================================================== // ===========================================================================
function setVehicleLights(vehicleId, state) { function setVehicleLights(vehicleId, state) {
if(getGame() != VRR_GAME_MAFIA_ONE) { if(getGame() != VRR_GAME_MAFIA_ONE) {
if(!state) { if(!state) {
getElementFromId(vehicleId).lightStatus = 2; getElementFromId(vehicleId).lightStatus = 2;
} else { } else {
getElementFromId(vehicleId).lightStatus = 1; getElementFromId(vehicleId).lightStatus = 1;
} }
} else if(getGame() == VRR_GAME_GTA_IV) {
if(!state) {
natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 0));
} else {
natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 1));
}
} else { } else {
if(!state) { if(!state) {
getElementFromId(vehicleId).lights = false; getElementFromId(vehicleId).lights = false;
@@ -63,6 +76,10 @@ function repairVehicle(syncId) {
// =========================================================================== // ===========================================================================
function syncVehicleProperties(vehicle) { function syncVehicleProperties(vehicle) {
if(!areServerElementsSupported()) {
return false;
}
if(doesEntityDataExist(vehicle, "vrr.lights")) { if(doesEntityDataExist(vehicle, "vrr.lights")) {
let lightStatus = getEntityData(vehicle, "vrr.lights"); let lightStatus = getEntityData(vehicle, "vrr.lights");
if(!lightStatus) { if(!lightStatus) {
@@ -134,6 +151,10 @@ function syncVehicleProperties(vehicle) {
// =========================================================================== // ===========================================================================
function syncCivilianProperties(civilian) { function syncCivilianProperties(civilian) {
if(!areServerElementsSupported()) {
return false;
}
if(getGame() == VRR_GAME_GTA_III) { if(getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(civilian, "vrr.scale")) { if(doesEntityDataExist(civilian, "vrr.scale")) {
let scaleFactor = getEntityData(civilian, "vrr.scale"); let scaleFactor = getEntityData(civilian, "vrr.scale");
@@ -226,6 +247,10 @@ function syncCivilianProperties(civilian) {
// =========================================================================== // ===========================================================================
function syncPlayerProperties(player) { function syncPlayerProperties(player) {
if(!areServerElementsSupported()) {
return false;
}
if(getGame() == VRR_GAME_GTA_III) { if(getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(player, "vrr.scale")) { if(doesEntityDataExist(player, "vrr.scale")) {
let scaleFactor = getEntityData(player, "vrr.scale"); let scaleFactor = getEntityData(player, "vrr.scale");
@@ -335,6 +360,10 @@ function syncPlayerProperties(player) {
// =========================================================================== // ===========================================================================
function syncObjectProperties(object) { function syncObjectProperties(object) {
if(!areServerElementsSupported()) {
return false;
}
if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) {
if(doesEntityDataExist(object, "vrr.scale")) { if(doesEntityDataExist(object, "vrr.scale")) {
let scaleFactor = getEntityData(object, "vrr.scale"); let scaleFactor = getEntityData(object, "vrr.scale");
@@ -351,6 +380,10 @@ function syncObjectProperties(object) {
// =========================================================================== // ===========================================================================
function syncElementProperties(element) { function syncElementProperties(element) {
if(!areServerElementsSupported()) {
return false;
}
if(doesEntityDataExist(element, "vrr.interior")) { if(doesEntityDataExist(element, "vrr.interior")) {
if(typeof element.interior != "undefined") { if(typeof element.interior != "undefined") {
element.interior = getEntityData(element, "vrr.interior"); element.interior = getEntityData(element, "vrr.interior");
@@ -390,3 +423,15 @@ function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupMode
} }
// =========================================================================== // ===========================================================================
function setLocalPlayerPedPartsAndProps(parts, props) {
for(let i in parts) {
localPlayer.changeBodyPart(parts[i][0], parts[i][1], parts[i][2]);
}
for(let j in props) {
localPlayer.changeBodyProp(props[j][0], props[j][1]);
}
}
// ===========================================================================

View File

@@ -683,9 +683,11 @@ function processLocalPlayerVehicleEntryExitHandling() {
// =========================================================================== // ===========================================================================
function getVehicleForNetworkEvent(vehicleArg) { function getVehicleForNetworkEvent(vehicle) {
// Soon this will also be used to get the IV vehicle via it's ID if(getGame() == VRR_GAME_GTA_IV) {
return vehicleArg; return natives.getNetworkIdFromVehicle(vehicle);
}
return vehicle;
} }
// =========================================================================== // ===========================================================================
@@ -809,3 +811,18 @@ function setVehiclePurchaseState(state, vehicleId, position) {
} }
// =========================================================================== // ===========================================================================
function processVehicleFires() {
let vehicles = getElementsByType(ELEMENT_VEHICLE);
for(let i in vehicles) {
if(vehicles[i].isSyncer) {
if(!doesEntityDataExist(vehicles[i], "vrr.fire")) {
triggerNetworkEvent("vrr.vehFire", vehicles[i].id);
} else {
vehicles[i].health = 249;
}
}
}
}
// ===========================================================================

View File

@@ -1126,6 +1126,7 @@ function initClient(client) {
updatePlayerSnowState(client); updatePlayerSnowState(client);
showConnectCameraToPlayer(client); showConnectCameraToPlayer(client);
messageClient(`Please wait ...`, client, getColourByName("softGreen")); messageClient(`Please wait ...`, client, getColourByName("softGreen"));
setTimeout(function() { setTimeout(function() {

View File

@@ -1358,7 +1358,7 @@ function createBusinessEntrancePickup(businessId) {
updateBusinessPickupLabelData(businessId); updateBusinessPickupLabelData(businessId);
addToWorld(getBusinessData(businessId).entrancePickup); addToWorld(getBusinessData(businessId).entrancePickup);
} else { } else {
sendBusinessEntranceToPlayer(null, businessId, getBusinessData(businessId), getBusinessData(businessId).entrancePosition, getBusinessData(businessId).entranceBlipModel, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false); sendBusinessToPlayer(null, businessId, getBusinessData(businessId), getBusinessData(businessId).entrancePosition, getBusinessData(businessId).entranceBlipModel, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false);
} }
} }
} }
@@ -1389,7 +1389,7 @@ function createBusinessEntranceBlip(businessId) {
setElementDimension(getBusinessData(businessId).entranceBlip, getBusinessData(businessId).entranceDimension); setElementDimension(getBusinessData(businessId).entranceBlip, getBusinessData(businessId).entranceDimension);
addToWorld(getBusinessData(businessId).entranceBlip); addToWorld(getBusinessData(businessId).entranceBlip);
} else { } else {
sendBusinessEntranceToPlayer(null, businessId, getBusinessData(businessId).name, getBusinessData(businessId).entrancePosition, blipModelId, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false); sendBusinessToPlayer(null, businessId, getBusinessData(businessId).name, getBusinessData(businessId).entrancePosition, blipModelId, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false);
} }
} }
} }
@@ -1765,9 +1765,9 @@ function buyFromBusinessCommand(command, params, client) {
if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand("inv")) { if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand("inv")) {
let keyData = getPlayerKeyBindForCommand("inv"); let keyData = getPlayerKeyBindForCommand("inv");
messagePlayerNewbieTip(client, getLocaleString(client, "ViewInventoryKeyPressTip"), `{ALTCOLOUR}${getKeyNameFromId(keyData.key)}{MAINCOLOUR}`); messagePlayerNewbieTip(client, getLocaleString(client, "ViewInventoryKeyPressTip", `{ALTCOLOUR}${getKeyNameFromId(keyData.key)}{MAINCOLOUR}`));
} else { } else {
messagePlayerNewbieTip(client, getLocaleString(client, "ViewInventoryKeyPressTip"), `{ALTCOLOUR}/inv{MAINCOLOUR}`); messagePlayerNewbieTip(client, getLocaleString(client, "ViewInventoryKeyPressTip", `{ALTCOLOUR}/inv{MAINCOLOUR}`));
} }
} }

View File

@@ -13,7 +13,10 @@ function initChatScript() {
return true; return true;
} }
// ===========================================================================
function processPlayerChat(client, messageText) { function processPlayerChat(client, messageText) {
if(!isConsole(client)) {
if(!getPlayerData(client)) { if(!getPlayerData(client)) {
messagePlayerError(client, "You need to login before you can chat!"); messagePlayerError(client, "You need to login before you can chat!");
return false; return false;
@@ -35,6 +38,10 @@ function processPlayerChat(client, messageText) {
} }
messageText = messageText.substring(0, 128); messageText = messageText.substring(0, 128);
messagePlayerNormal(null, `💬 ${getCharacterFullName(client)}: ${messageText}`);
} else {
messagePlayerNormal(null, `🛡️ (ADMIN) - ${messageText}`);
}
/* /*
let clients = getClients(); let clients = getClients();
@@ -46,8 +53,8 @@ function processPlayerChat(client, messageText) {
messagePlayerNormal(clients[i], `💬 ${getCharacterFullName(client)}: [#FFFFFF]${translatedText}${original}`, clients[i], getColourByName("mediumGrey")); messagePlayerNormal(clients[i], `💬 ${getCharacterFullName(client)}: [#FFFFFF]${translatedText}${original}`, clients[i], getColourByName("mediumGrey"));
} }
*/ */
messagePlayerNormal(null, `💬 ${getCharacterFullName(client)}: ${messageText}`);
messageDiscordChatChannel(`💬 ${getCharacterFullName(client)}: ${messageText}`); //messageDiscordChatChannel(`💬 ${getCharacterFullName(client)}: ${messageText}`);
} }
// =========================================================================== // ===========================================================================

View File

@@ -239,8 +239,6 @@ class ClientData {
this.locale = 0; this.locale = 0;
this.enteringVehicle = null; this.enteringVehicle = null;
this.pedId = -1;
} }
}; };
@@ -864,6 +862,11 @@ class VehicleData {
this.index = -1; this.index = -1;
this.needsSaved = false; this.needsSaved = false;
// GTA IV
this.ivNetworkId = -1;
this.syncPosition = toVector3(0.0, 0.0, 0.0);
this.syncHeading = 0.0;
// Ownership // Ownership
this.ownerType = VRR_VEHOWNER_NONE; this.ownerType = VRR_VEHOWNER_NONE;
this.ownerId = 0; this.ownerId = 0;

View File

@@ -68,9 +68,8 @@ function addAllNetworkHandlers() {
addNetworkEventHandler("vrr.weaponDamage", playerDamagedByPlayer); addNetworkEventHandler("vrr.weaponDamage", playerDamagedByPlayer);
// Misc // Misc
addNetworkEventHandler("vrr.player.position", updatePositionInPlayerData); addNetworkEventHandler("vrr.plr.pos", updatePositionInPlayerData);
addNetworkEventHandler("vrr.player.heading", updateHeadingInPlayerData); addNetworkEventHandler("vrr.plr.rot", updateHeadingInPlayerData);
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); addNetworkEventHandler("vrr.vehBuyState", receiveVehiclePurchaseStateUpdateFromClient);
@@ -521,9 +520,8 @@ function sendPlayerRemoveFromVehicle(client) {
// =========================================================================== // ===========================================================================
function sendChatBoxMessageToPlayer(client, message, colour) { function sendChatBoxMessageToPlayer(client, messageText, colour) {
sendNetworkEventToPlayer("vrr.m", client, message, colour) messageClient(messageText, client, colour);
//messageClient(message, client, colour);
} }
// =========================================================================== // ===========================================================================
@@ -716,6 +714,18 @@ function updateHeadingInPlayerData(client, heading) {
// =========================================================================== // ===========================================================================
function updatePositionInVehicleData(client, vehicle, position) {
getVehicleData(vehicle).syncPosition = position;
}
// ===========================================================================
function updateHeadingInVehicleData(client, vehicle, heading) {
getVehicleData(vehicle).syncHeading = heading;
}
// ===========================================================================
function forcePlayerIntoSkinSelect(client) { function forcePlayerIntoSkinSelect(client) {
if(getGameConfig().skinChangePosition[getServerGame()].length > 0) { if(getGameConfig().skinChangePosition[getServerGame()].length > 0) {
getPlayerData(client).returnToPosition = getPlayerPosition(client); getPlayerData(client).returnToPosition = getPlayerPosition(client);
@@ -1003,8 +1013,8 @@ function makePedPlayAnimation(ped, animationSlot, positionOffset) {
// =========================================================================== // ===========================================================================
function makePedStopAnimation(ped) { function makePedStopAnimation(pedId) {
sendNetworkEventToPlayer("vrr.pedStopAnim", null, ped.id); sendNetworkEventToPlayer("vrr.pedStopAnim", null, pedId);
} }
// =========================================================================== // ===========================================================================
@@ -1023,14 +1033,6 @@ function hideAllPlayerGUI(client) {
// =========================================================================== // ===========================================================================
function setPlayerHeadLookPosition(client, position) {
if(client.player != null) {
setEntityData(client.player, "vrr.headLook", position, true);
}
}
// ===========================================================================
function requestClientInfo(client) { function requestClientInfo(client) {
sendNetworkEventToPlayer("vrr.clientInfo", client); sendNetworkEventToPlayer("vrr.clientInfo", client);
} }
@@ -1111,48 +1113,44 @@ function setPlayerInfiniteRun(client, state) {
// ========================================================================== // ==========================================================================
function sendBusinessEntranceToPlayer(client, businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) { function sendBusinessToPlayer(client, businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) {
sendNetworkEventToPlayer("vrr.business", client, businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems); sendNetworkEventToPlayer("vrr.business", client, businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
} }
// ========================================================================== // ==========================================================================
function sendHouseEntranceToPlayer(client, houseId, entrancePosition, blipModel, pickupModel, hasInterior) { function sendHouseToPlayer(client, houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
sendNetworkEventToPlayer("vrr.house", client, houseId, entrancePosition, blipModel, pickupModel, hasInterior); sendNetworkEventToPlayer("vrr.house", client, houseId, entrancePosition, blipModel, pickupModel, hasInterior);
} }
// ========================================================================== // ==========================================================================
function sendAllBusinessEntrancesToPlayer(client) { function sendAllBusinessesToPlayer(client) {
let businesses = getServerData().businesses; let businesses = getServerData().businesses;
for(let i in businesses) { for(let i in businesses) {
if(businesses[i].entranceBlipModel > 0) { sendBusinessToPlayer(client, businesses[i].index, businesses[i].name, businesses[i].entrancePosition, businesses[i].entranceBlipModel, businesses[i].entrancePickupModel, businesses[i].hasInterior, false);
sendBusinessEntranceToPlayer(client, businesses[i].index, businesses[i].name, businesses[i].entrancePosition, businesses[i].entranceBlipModel, businesses[i].entrancePickupModel, businesses[i].hasInterior, false);
}
} }
} }
// ========================================================================== // ==========================================================================
function sendAllHouseEntrancesToPlayer(client) { function sendAllHousesToPlayer(client) {
let houses = getServerData().houses; let houses = getServerData().houses;
for(let i in houses) { for(let i in houses) {
if(houses[i].entranceBlipModel > 0) { sendHouseToPlayer(client, houses[i].index, houses[i].entrancePosition, houses[i].entranceBlipModel, houses[i].entrancePickupModel, houses[i].hasInterior);
sendBusinessEntranceToPlayer(client, businesses[i].index, houses[i].entrancePosition, houses[i].entranceBlipModel, houses[i].entrancePickupModel, houses[i].hasInterior);
}
} }
} }
// ========================================================================== // ==========================================================================
function makePlayerHoldObjectModel(client, modelIndex) { function makePlayerHoldObjectModel(client, modelIndex) {
sendNetworkEventToPlayer("vrr.holdObject", client, getPlayerData(client).pedId, modelIndex); sendNetworkEventToPlayer("vrr.holdObject", client, getPlayerData(client).ped, modelIndex);
} }
// ========================================================================== // ==========================================================================
function receivePlayerPedNetworkId(client, pedId) { function receivePlayerPedNetworkId(client, pedId) {
getPlayerData(client).pedId = pedId; getPlayerData(client).ped = pedId;
} }
// ========================================================================== // ==========================================================================

View File

@@ -80,13 +80,27 @@ function initConfigScript() {
logToConsole(LOG_DEBUG, "[VRR.Config]: Loading global config ..."); logToConsole(LOG_DEBUG, "[VRR.Config]: Loading global config ...");
loadGlobalConfig(); loadGlobalConfig();
logToConsole(LOG_DEBUG, "[VRR.Config]: Loading server config ..."); logToConsole(LOG_INFO, "[VRR.Config]: Loading server config ...");
serverConfig = loadServerConfigFromGameAndPort(server.game, server.port, getMultiplayerMod()); serverConfig = loadServerConfigFromGameAndPort(server.game, server.port, getMultiplayerMod());
logToConsole(LOG_DEBUG, "[VRR.Config]: Applying server config ..."); logToConsole(LOG_INFO, "[VRR.Config]: Applying server config ...");
applyConfigToServer(serverConfig); getServerConfig().fallingSnow = intToBool(toInteger(server.getCVar("fallingsnow")));
getServerConfig().groundSnow = intToBool(toInteger(server.getCVar("groundsnow")));
getServerConfig().useGUI = intToBool(toInteger(server.getCVar("gui")));
getServerConfig().showLogo = false;
getServerConfig().testerOnly = intToBool(toInteger(server.getCVar("testeronly")));
getServerConfig().discordEnabled = false;
getServerConfig().createJobPickups = intToBool(toInteger(server.getCVar("jobpickups")));
getServerConfig().createBusinessPickups = intToBool(toInteger(server.getCVar("businesspickups")));
getServerConfig().createHousePickups = intToBool(toInteger(server.getCVar("housepickups")));
getServerConfig().createJobBlips = intToBool(toInteger(server.getCVar("jobblips")));
getServerConfig().createBusinessBlips = intToBool(toInteger(server.getCVar("businessblips")));
getServerConfig().createHouseBlips = intToBool(toInteger(server.getCVar("houseblips")));
getServerConfig().useRealTime = intToBool(toInteger(server.getCVar("realtime")));
getServerConfig().antiCheat.enabled = intToBool(toInteger(server.getCVar("anticheat")));
logToConsole(LOG_DEBUG, "[VRR.Config]: All config loaded and applied successfully!"); applyConfigToServer(serverConfig);
logToConsole(LOG_DEBUG, "[VRR.Config]: Server config applied successfully!");
logToConsole(LOG_INFO, "[VRR.Config]: Config script initialized!"); logToConsole(LOG_INFO, "[VRR.Config]: Config script initialized!");
} }
@@ -131,22 +145,6 @@ function loadServerConfigFromId(tempServerId) {
if(dbQuery.numRows > 0) { if(dbQuery.numRows > 0) {
let dbAssoc = fetchQueryAssoc(dbQuery); let dbAssoc = fetchQueryAssoc(dbQuery);
let tempServerConfigData = new ServerData(dbAssoc); let tempServerConfigData = new ServerData(dbAssoc);
tempServerConfigData.fallingSnow = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("FallingSnow"));
tempServerConfigData.groundSnow = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("GroundSnow"));
tempServerConfigData.useGUI = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("GUI"));
tempServerConfigData.showLogo = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("Logo"));
tempServerConfigData.testerOnly = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("Testing"));
tempServerConfigData.discordEnabled = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("DiscordBot"));
tempServerConfigData.createJobPickups = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("JobPickups"));
tempServerConfigData.createBusinessPickups = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("BusinessPickups"));
tempServerConfigData.createHousePickups = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("HousePickups"));
tempServerConfigData.createJobBlips = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("JobBlips"));
tempServerConfigData.createBusinessBlips = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("BusinessBlips"));
tempServerConfigData.createHouseBlips = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("HouseBlips"));
tempServerConfigData.useRealTime = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("RealTime"));
tempServerConfigData.antiCheat.enabled = hasBitFlag(tempServerConfigData.settings, getServerSettingsFlagValue("Anticheat"));
freeDatabaseQuery(dbQuery); freeDatabaseQuery(dbQuery);
return tempServerConfigData; return tempServerConfigData;
} }

View File

@@ -240,39 +240,24 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
return false; return false;
} }
let vehicle = null;
if(getGame() == VRR_GAME_GTA_IV) {
vehicle = getVehicleFromIVNetworkId(clientVehicle);
} else {
if(client.player == null) { if(client.player == null) {
return false; return false;
} }
await waitUntil(() => client != null && client.player != null && client.player.vehicle != null); await waitUntil(() => client != null && client.player != null && client.player.vehicle != null);
//setTimeout(function() {
//if(client.player.vehicle == null) {
// onPlayerEnteredVehicle(client, clientVehicle, seat);
//}
let vehicle = client.player.vehicle; vehicle = client.player.vehicle;
//if(vehicle.syncer != client.index) {
// if(getPlayerVehicleSeat(client) == VRR_VEHSEAT_DRIVER) {
// vehicle.setSyncer(client, true);
// }
//}
if(vehicle.owner != -1) {
return false;
} }
if(!getVehicleData(vehicle)) { if(!getVehicleData(vehicle)) {
return false; return false;
} }
//if(getPlayerData(client).enteringVehicle == null || getPlayerData(client).enteringVehicle != vehicle) {
// messagePlayerError(client, "You can't enter this vehicle!");
// removePlayerFromVehicle(client);
// messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}tried to warp into a locked vehicle`);
// 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})`);
getPlayerData(client).lastVehicle = vehicle; getPlayerData(client).lastVehicle = vehicle;
@@ -364,7 +349,6 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
playRadioStreamForPlayer(client, radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client)); playRadioStreamForPlayer(client, radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client));
} }
} }
//}, client.ping+500);
} }
// =========================================================================== // ===========================================================================
@@ -492,14 +476,14 @@ function onPlayerSpawn(client) {
return false; return false;
} }
//logToConsole(LOG_DEBUG, `[VRR.Event] Setting player skin for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).skin}`); if(isCustomCameraSupported()) {
//setPlayerSkin(client, getPlayerCurrentSubAccount(client).skin);
//if(getPlayerData(client).pedState != VRR_PEDSTATE_READY) {
restorePlayerCamera(client); restorePlayerCamera(client);
}
logToConsole(LOG_DEBUG, `[VRR.Event] Storing ${getPlayerDisplayForConsole(client)} ped in client data `); logToConsole(LOG_DEBUG, `[VRR.Event] Storing ${getPlayerDisplayForConsole(client)} ped in client data `);
if(areServerElementsSupported()) {
getPlayerData(client).ped = client.player; getPlayerData(client).ped = client.player;
}
logToConsole(LOG_DEBUG, `[VRR.Event] Sending ${getPlayerDisplayForConsole(client)} the 'now playing as' message`); logToConsole(LOG_DEBUG, `[VRR.Event] Sending ${getPlayerDisplayForConsole(client)} the 'now playing as' message`);
messagePlayerAlert(client, `You are now playing as: {businessBlue}${getCharacterFullName(client)}`, getColourByName("white")); messagePlayerAlert(client, `You are now playing as: {businessBlue}${getCharacterFullName(client)}`, getColourByName("white"));
@@ -532,9 +516,11 @@ function onPlayerSpawn(client) {
setPlayer2DRendering(client, true, true, true, true, true, true); setPlayer2DRendering(client, true, true, true, true, true, true);
logToConsole(LOG_DEBUG, `[VRR.Event] Sending snow states to ${getPlayerDisplayForConsole(client)}`); logToConsole(LOG_DEBUG, `[VRR.Event] Sending snow states to ${getPlayerDisplayForConsole(client)}`);
if(isSnowSupported()) {
updatePlayerSnowState(client); updatePlayerSnowState(client);
}
if(getServerGame() == VRR_GAME_GTA_SA) { if(areServerElementsSupported() && getServerGame() == VRR_GAME_GTA_SA) {
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player walk and fightstyle for ${getPlayerDisplayForConsole(client)}`); logToConsole(LOG_DEBUG, `[VRR.Event] Setting player walk and fightstyle for ${getPlayerDisplayForConsole(client)}`);
setEntityData(client.player, "vrr.walkStyle", getPlayerCurrentSubAccount(client).walkStyle, true); setEntityData(client.player, "vrr.walkStyle", getPlayerCurrentSubAccount(client).walkStyle, true);
@@ -579,16 +565,18 @@ function onPlayerSpawn(client) {
//} //}
if(isGTAIV()) { if(isGTAIV()) {
sendPlayerPedPartsAndProps(client); //sendPlayerPedPartsAndProps(client);
} }
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped state to ready`); logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped state to ready`);
getPlayerData(client).pedState = VRR_PEDSTATE_READY; getPlayerData(client).pedState = VRR_PEDSTATE_READY;
if(areServerElementsSupported()) {
syncPlayerProperties(client); syncPlayerProperties(client);
//setTimeout(function() { //setTimeout(function() {
// syncPlayerProperties(client); // syncPlayerProperties(client);
//}, 1000); //}, 1000);
}
logToConsole(LOG_DEBUG, `[VRR.Event] Syncing ${getPlayerDisplayForConsole(client)}'s cash ${getPlayerCurrentSubAccount(client).cash}`); logToConsole(LOG_DEBUG, `[VRR.Event] Syncing ${getPlayerDisplayForConsole(client)}'s cash ${getPlayerCurrentSubAccount(client).cash}`);
updatePlayerCash(client); updatePlayerCash(client);
@@ -597,15 +585,15 @@ function onPlayerSpawn(client) {
updateAllPlayerNameTags(); updateAllPlayerNameTags();
if(!areServerElementsSupported()) { if(!areServerElementsSupported()) {
sendAllBusinessEntrancesToPlayer(client); sendAllBusinessesToPlayer(client);
sendAllHouseEntrancesToPlayer(client); //sendAllHousesToPlayer(client);
//sendAllJobLocationsToPlayer(client); //sendAllJobLocationsToPlayer(client);
} //sendAllVehiclesToPlayer(client);
requestPlayerPedNetworkId(client); requestPlayerPedNetworkId(client);
}
getPlayerData(client).payDayTickStart = sdl.ticks; getPlayerData(client).payDayTickStart = sdl.ticks;
//}
} }
// =========================================================================== // ===========================================================================

View File

@@ -34,8 +34,6 @@ function getLocaleString(client, stringName, ...args) {
submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`); submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`);
} }
tempString = replaceColoursInMessage(tempString);
for(let i = 1; i <= args.length; i++) { for(let i = 1; i <= args.length; i++) {
tempString = tempString.replace(`{${i}}`, args[i-1]); tempString = tempString.replace(`{${i}}`, args[i-1]);
} }
@@ -47,7 +45,6 @@ function getLocaleString(client, stringName, ...args) {
function getGroupedLocaleString(client, stringName, index, ...args) { function getGroupedLocaleString(client, stringName, index, ...args) {
let tempString = getRawGroupedLocaleString(stringName, getPlayerData(client).locale, index); let tempString = getRawGroupedLocaleString(stringName, getPlayerData(client).locale, index);
tempString = replaceColoursInMessage(tempString);
for(let i = 1; i <= args.length; i++) { for(let i = 1; i <= args.length; i++) {
tempString = tempString.replace(`{${i}}`, args[i-1]); tempString = tempString.replace(`{${i}}`, args[i-1]);

View File

@@ -33,19 +33,27 @@ function messageAdminAction(messageText) {
* *
*/ */
function messagePlayerNormal(client, messageText, colour = COLOUR_WHITE) { function messagePlayerNormal(client, messageText, colour = COLOUR_WHITE) {
if(isConsole(client) || client == null) { //if(isConsole(client) || client == null) {
logToConsole(LOG_INFO, `${removeColoursInMessage(messageText)}`); // logToConsole(LOG_INFO, `${removeColoursInMessage(messageText)}`);
//}
messageText = replaceColoursInMessage(messageText);
if(client == null) {
message(messageText, colour);
} else {
messageClient(messageText, client, colour);
} }
sendChatBoxMessageToPlayer(client, `${replaceColoursInMessage(messageText)}`, colour); //sendChatBoxMessageToPlayer(client, messageText, colour);
return true; return true;
} }
// =========================================================================== // ===========================================================================
function messageAdmins(messageText, colour = getColourByName("softRed")) { function messageAdmins(messageText, colour = getColourByName("softRed")) {
let plainMessage = removeColoursInMessage(messageText); //let plainMessage = removeColoursInMessage(messageText);
console.warn(`🛡️ ${plainMessage}`); //console.warn(`🛡️ ${plainMessage}`);
let clients = getClients(); let clients = getClients();
for(let i in clients) { for(let i in clients) {
@@ -54,9 +62,9 @@ function messageAdmins(messageText, colour = getColourByName("softRed")) {
} }
} }
if(getServerConfig().discordConfig.sendAdminEvents) { //if(getServerConfig().discordConfig.sendAdminEvents) {
messageDiscordAdminChannel(plainMessage); // messageDiscordAdminChannel(plainMessage);
} //}
} }
// =========================================================================== // ===========================================================================
@@ -236,17 +244,6 @@ function clearChatBox(client) {
// =========================================================================== // ===========================================================================
function replaceEmojiInString(messageString) {
for(let i in emojiReplaceString) {
while(messageString.indexOf(emojiReplaceString[i][0]) != -1) {
messageString = messageString.replace(emojiReplaceString[i][0], emojiReplaceString[i][1]);
}
}
return messageString;
}
// ===========================================================================
function messagePlayerHelpContent(client, messageString) { function messagePlayerHelpContent(client, messageString) {
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}${messageString}`); messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}${messageString}`);
} }

View File

@@ -526,9 +526,11 @@ function setVehicleColours(vehicle, colour1, colour2, colour3 = -1, colour4 = -1
// =========================================================================== // ===========================================================================
function createGameVehicle(modelIndex, position, heading) { function createGameVehicle(modelIndex, position, heading, toClient = null) {
if(areServerElementsSupported()) {
return game.createVehicle(getGameConfig().vehicles[getGame()][modelIndex][0], position, heading); return game.createVehicle(getGameConfig().vehicles[getGame()][modelIndex][0], position, heading);
} }
}
// =========================================================================== // ===========================================================================

View File

@@ -1003,16 +1003,12 @@ function forcePlayerSkinCommand(command, params, client) {
let targetClient = getPlayerFromParams(splitParams[0]); let targetClient = getPlayerFromParams(splitParams[0]);
let skinIndex = getSkinModelIndexFromParams(splitParams.slice(1).join(" "), getGame()); let skinIndex = getSkinModelIndexFromParams(splitParams.slice(1).join(" "), getGame());
console.warn(targetClient.name);
console.warn(splitParams.slice(1).join(" "));
console.warn(skinIndex);
if(!targetClient) { if(!targetClient) {
messagePlayerError(client, getLocaleString(client, "InvalidPlayer")); messagePlayerError(client, getLocaleString(client, "InvalidPlayer"));
return false; return false;
} }
if(skinIndex == false) { if(!skinIndex) {
messagePlayerError(client, getLocaleString(client, "InvalidSkin")); messagePlayerError(client, getLocaleString(client, "InvalidSkin"));
return false; return false;
} }

View File

@@ -375,6 +375,11 @@ function selectCharacter(client, characterId = -1) {
spawnPlayer(client, spawnPosition, spawnHeading, getGameConfig().skins[getGame()][skin][0], spawnInterior, spawnDimension); spawnPlayer(client, spawnPosition, spawnHeading, getGameConfig().skins[getGame()][skin][0], spawnInterior, spawnDimension);
} else if(getGame() == VRR_GAME_GTA_IV) { } else if(getGame() == VRR_GAME_GTA_IV) {
spawnPlayer(client, spawnPosition, spawnHeading, getGameConfig().skins[getGame()][skin][0], spawnInterior, spawnDimension); spawnPlayer(client, spawnPosition, spawnHeading, getGameConfig().skins[getGame()][skin][0], spawnInterior, spawnDimension);
//setPlayerSkin(client, skin);
//setPlayerPosition(client, spawnPosition);
//setPlayerHeading(client, spawnHeading);
//setPlayerInterior(client, spawnInterior);
//setPlayerDimension(client, spawnDimension);
} else if(getGame() >= VRR_GAME_MAFIA_ONE) { } else if(getGame() >= VRR_GAME_MAFIA_ONE) {
spawnPlayer(client, getGameConfig().skins[getGame()][skin][0], spawnPosition, spawnHeading); spawnPlayer(client, getGameConfig().skins[getGame()][skin][0], spawnPosition, spawnHeading);
} }

View File

@@ -283,6 +283,7 @@ function showConnectCameraToPlayer(client) {
//setPlayerDimension(client, 0); //setPlayerDimension(client, 0);
setPlayerCameraLookAt(client, getServerConfig().connectCameraPosition, getServerConfig().connectCameraLookAt); setPlayerCameraLookAt(client, getServerConfig().connectCameraPosition, getServerConfig().connectCameraLookAt);
} }
setPlayer2DRendering(client, false, false, false, false, false, false);
} }
// =========================================================================== // ===========================================================================

View File

@@ -174,13 +174,15 @@ function spawnAllVehicles() {
* @return {VehicleData} The vehicles's data (class instance) * @return {VehicleData} The vehicles's data (class instance)
*/ */
function getVehicleData(vehicle) { function getVehicleData(vehicle) {
if(getGame() != VRR_GAME_GTA_IV) {
if(isVehicleObject(vehicle)) { if(isVehicleObject(vehicle)) {
let dataIndex = getEntityData(vehicle, "vrr.dataSlot"); let dataIndex = getEntityData(vehicle, "vrr.dataSlot");
if(typeof getServerData().vehicles[dataIndex] != "undefined") { if(typeof getServerData().vehicles[dataIndex] != "undefined") {
return getServerData().vehicles[dataIndex]; return getServerData().vehicles[dataIndex];
} }
}
} else { } else {
return getServerVehicles().find((v) => v.ivNetworkId == vehicle);
} }
return false; return false;
@@ -1403,7 +1405,11 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim
} }
let slot = getServerData().vehicles.push(tempVehicleData); let slot = getServerData().vehicles.push(tempVehicleData);
if(areServerElementsSupported()) {
setEntityData(vehicle, "vrr.dataSlot", slot-1, false); setEntityData(vehicle, "vrr.dataSlot", slot-1, false);
}
return vehicle; return vehicle;
} }

View File

@@ -3320,10 +3320,18 @@ let gameData = {
], ],
meleeWeapons: [ meleeWeapons: [
[], [],
[1], [1], // III
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], // VC
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], // SA
[], [], // UG
[1, 3], // IV
[], // Invalid
[], // Invalid
[], // Invalid
[], // M1
[], // M2
[], // M3
[], // M1DE
], ],
blipSprites: [ blipSprites: [
false, false,
@@ -4038,8 +4046,8 @@ let gameData = {
["M4", 500, 2], ["M4", 500, 2],
["Beretta Shotgun", 500, 2], ["Beretta Shotgun", 500, 2],
["Sniper Rifle", 500, 2], ["Sniper Rifle", 500, 2],
["MP5 Ammo", 500, 2],
["Micro Uzi Ammo", 500, 2], ["Micro Uzi Ammo", 500, 2],
["MP5 Ammo", 500, 2],
["AK-47 Ammo", 500, 2], ["AK-47 Ammo", 500, 2],
["M4 Ammo", 500, 2], ["M4 Ammo", 500, 2],
["Beretta Shotgun Ammo", 500, 2], ["Beretta Shotgun Ammo", 500, 2],
@@ -5439,3 +5447,4 @@ let gameData = {
], ],
}; };
// ===========================================================================