Merge branch 'nightly' into 1.4.0-prep
This commit is contained in:
@@ -24,40 +24,64 @@ 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) {
|
||||||
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
|
if(businessData.blipId != -1) {
|
||||||
getBusinessData(businessId).blipId = -1;
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been removed by the server`);
|
||||||
//businesses.splice(getBusinessData(businessId).index, 1);
|
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
|
||||||
//setAllBusinessDataIndexes();
|
businessData.blipId = -1;
|
||||||
|
//businesses.splice(businessData.index, 1);
|
||||||
|
//setAllBusinessDataIndexes();
|
||||||
|
} else {
|
||||||
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip is unchanged`);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if(getBusinessData(businessId).blipId != -1) {
|
if(businessData.blipId != -1) {
|
||||||
natives.setBlipCoordinates(getBusinessData(businessId).blipId, getBusinessData(businessId).entrancePosition);
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been changed by the server`);
|
||||||
natives.changeBlipSprite(getBusinessData(businessId).blipId, getBusinessData(businessId).blipModel);
|
natives.setBlipCoordinates(businessData.blipId, businessData.entrancePosition);
|
||||||
natives.changeBlipNameFromAscii(getBusinessData(businessId).blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
|
||||||
|
natives.setBlipMarkerLongDistance(businessData.blipId, true);
|
||||||
|
natives.changeBlipNameFromAscii(businessData.blipId, `${businessData.name.substr(0, 24)}${(businessData.name.length > 24) ? " ...": ""}`);
|
||||||
} else {
|
} else {
|
||||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||||
if(blipId) {
|
if(blipId) {
|
||||||
getBusinessData(businessId).blipId = blipId;
|
businessData.blipId = blipId;
|
||||||
natives.changeBlipSprite(blipId, blipModel);
|
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
|
||||||
natives.setBlipMarkerLongDistance(blipId, false);
|
natives.setBlipMarkerLongDistance(businessData.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 {
|
} 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 tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
|
|
||||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||||
if(blipId) {
|
if(blipId) {
|
||||||
tempBusinessData.blipId = blipId;
|
tempBusinessData.blipId = blipId;
|
||||||
natives.changeBlipSprite(blipId, blipModel);
|
natives.changeBlipSprite(tempBusinessData.blipId, blipModel);
|
||||||
natives.setBlipMarkerLongDistance(blipId, false);
|
natives.setBlipMarkerLongDistance(tempBusinessData.blipId, true);
|
||||||
natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
natives.changeBlipNameFromAscii(tempBusinessData.blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
||||||
}
|
}
|
||||||
businesses.push(tempBusinessData);
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||||
setAllBusinessDataIndexes();
|
} else {
|
||||||
|
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} has no blip.`);
|
||||||
}
|
}
|
||||||
|
businesses.push(tempBusinessData);
|
||||||
|
setAllBusinessDataIndexes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,8 +93,15 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
|
|||||||
* @return {BusinessData} The business's data (class instance)
|
* @return {BusinessData} The business's data (class instance)
|
||||||
*/
|
*/
|
||||||
function getBusinessData(businessId) {
|
function getBusinessData(businessId) {
|
||||||
let tempBusinessData = businesses.find((b) => b.businessId == businessId);
|
//let tempBusinessData = businesses.find((b) => b.businessId == businessId);
|
||||||
return (typeof tempBusinessData != "undefined") ? tempBusinessData : false;
|
//return (typeof tempBusinessData != "undefined") ? tempBusinessData[0] : false;
|
||||||
|
for(let i in businesses) {
|
||||||
|
if(businesses[i].businessId == businessId) {
|
||||||
|
return businesses[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -145,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;
|
||||||
@@ -160,17 +158,13 @@ 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;
|
parkedVehicleHeading = inVehicle.heading;
|
||||||
parkedVehicleHeading = inVehicle.heading;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupMode
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
let tempHouseData = new HouseData(houseId, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
|
||||||
if(blipModel != -1) {
|
if(blipModel != -1) {
|
||||||
let tempHouseData = new HouseData(houseId, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
|
|
||||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||||
if(blipId) {
|
if(blipId) {
|
||||||
tempHouseData.blipId = blipId;
|
tempHouseData.blipId = blipId;
|
||||||
@@ -53,9 +53,9 @@ function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupMode
|
|||||||
natives.setBlipMarkerLongDistance(blipId, false);
|
natives.setBlipMarkerLongDistance(blipId, false);
|
||||||
//natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
//natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
||||||
}
|
}
|
||||||
houses.push(tempHouseData);
|
|
||||||
setAllHouseDataIndexes();
|
|
||||||
}
|
}
|
||||||
|
houses.push(tempHouseData);
|
||||||
|
setAllHouseDataIndexes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -247,19 +247,19 @@ function renderJobLabel(name, position, jobType) {
|
|||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
function processLabelRendering() {
|
function processLabelRendering() {
|
||||||
if(renderLabels && areWorldLabelsSupported()) {
|
if(renderLabels) {
|
||||||
if(localPlayer != null) {
|
if(!areServerElementsSupported()) {
|
||||||
if(!areServerElementsSupported()) {
|
if(localPlayer != null) {
|
||||||
//for(let i in businesses) {
|
for(let i in businesses) {
|
||||||
// if(getDistance(localPlayer.position, businesses[i].entrancePosition) <= 75.0) {
|
if(getDistance(localPlayer.position, businesses[i].entrancePosition) <= 75.0) {
|
||||||
// natives.drawColouredCylinder(businesses[i].entrancePosition, 0.0, 0.0, 0, 153, 255);
|
natives.drawColouredCylinder(getPosBelowPos(businesses[i].entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255);
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
// natives.getScreenViewportId
|
}
|
||||||
// natives.getGameViewportId
|
|
||||||
// natives.getViewportPositionOfCoord
|
if(areWorldLabelsSupported()) {
|
||||||
} else {
|
if(localPlayer != null) {
|
||||||
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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -259,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;
|
||||||
|
|||||||
@@ -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");
|
||||||
@@ -389,4 +422,16 @@ 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]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
@@ -716,6 +715,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 +1014,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 +1034,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 +1114,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
|||||||
@@ -240,131 +240,115 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(client.player == null) {
|
let vehicle = null;
|
||||||
|
|
||||||
|
if(getGame() == VRR_GAME_GTA_IV) {
|
||||||
|
vehicle = getVehicleFromIVNetworkId(clientVehicle);
|
||||||
|
} else {
|
||||||
|
if(client.player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
await waitUntil(() => client != null && client.player != null && client.player.vehicle != null);
|
||||||
|
|
||||||
|
vehicle = client.player.vehicle;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!getVehicleData(vehicle)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
await waitUntil(() => client != null && client.player != null && client.player.vehicle != null);
|
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("vrr.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`);
|
||||||
//setTimeout(function() {
|
|
||||||
//if(client.player.vehicle == null) {
|
|
||||||
// onPlayerEnteredVehicle(client, clientVehicle, seat);
|
|
||||||
//}
|
|
||||||
|
|
||||||
let vehicle = client.player.vehicle;
|
getPlayerData(client).lastVehicle = vehicle;
|
||||||
|
getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp();
|
||||||
|
|
||||||
//if(vehicle.syncer != client.index) {
|
if(getPlayerVehicleSeat(client) == VRR_VEHSEAT_DRIVER) {
|
||||||
// if(getPlayerVehicleSeat(client) == VRR_VEHSEAT_DRIVER) {
|
vehicle.engine = getVehicleData(vehicle).engine;
|
||||||
// vehicle.setSyncer(client, true);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
if(vehicle.owner != -1) {
|
if(getVehicleData(vehicle).buyPrice > 0) {
|
||||||
return false;
|
messagePlayerAlert(client, getLocaleString(client, "VehicleForSale", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).buyPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehbuy{MAINCOLOUR}`));
|
||||||
}
|
resetVehiclePosition(vehicle);
|
||||||
|
} else if(getVehicleData(vehicle).rentPrice > 0) {
|
||||||
if(!getVehicleData(vehicle)) {
|
if(getVehicleData(vehicle).rentedBy != client) {
|
||||||
return false;
|
messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`));
|
||||||
}
|
|
||||||
|
|
||||||
//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})`);
|
|
||||||
|
|
||||||
getPlayerData(client).lastVehicle = vehicle;
|
|
||||||
getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp();
|
|
||||||
|
|
||||||
if(getPlayerVehicleSeat(client) == VRR_VEHSEAT_DRIVER) {
|
|
||||||
vehicle.engine = getVehicleData(vehicle).engine;
|
|
||||||
|
|
||||||
if(getVehicleData(vehicle).buyPrice > 0) {
|
|
||||||
messagePlayerAlert(client, getLocaleString(client, "VehicleForSale", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).buyPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehbuy{MAINCOLOUR}`));
|
|
||||||
resetVehiclePosition(vehicle);
|
resetVehiclePosition(vehicle);
|
||||||
} else if(getVehicleData(vehicle).rentPrice > 0) {
|
|
||||||
if(getVehicleData(vehicle).rentedBy != client) {
|
|
||||||
messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`));
|
|
||||||
resetVehiclePosition(vehicle);
|
|
||||||
} 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.`);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
let ownerName = "Nobody";
|
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.`);
|
||||||
let ownerType = "None";
|
|
||||||
ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType));
|
|
||||||
switch(getVehicleData(vehicle).ownerType) {
|
|
||||||
case VRR_VEHOWNER_CLAN:
|
|
||||||
ownerName = getClanData(getClanIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
|
||||||
ownerType = "clan";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VRR_VEHOWNER_JOB:
|
|
||||||
ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
|
||||||
ownerType = "job";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VRR_VEHOWNER_PLAYER:
|
|
||||||
let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId);
|
|
||||||
ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`;
|
|
||||||
ownerType = "player";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VRR_VEHOWNER_BIZ:
|
|
||||||
ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name;
|
|
||||||
ownerType = "business";
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
messagePlayerAlert(client, `This ${getVehicleName(vehicle)} belongs to {ALTCOLOUR}${ownerName} (${ownerType})`);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
let ownerName = "Nobody";
|
||||||
|
let ownerType = "None";
|
||||||
|
ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType));
|
||||||
|
switch(getVehicleData(vehicle).ownerType) {
|
||||||
|
case VRR_VEHOWNER_CLAN:
|
||||||
|
ownerName = getClanData(getClanIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
||||||
|
ownerType = "clan";
|
||||||
|
break;
|
||||||
|
|
||||||
if(!getVehicleData(vehicle).engine) {
|
case VRR_VEHOWNER_JOB:
|
||||||
if(getVehicleData(vehicle).buyPrice == 0 && getVehicleData(vehicle).rentPrice == 0) {
|
ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name;
|
||||||
if(doesPlayerHaveVehicleKeys(client, vehicle)) {
|
ownerType = "job";
|
||||||
if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "engine")) {
|
break;
|
||||||
messagePlayerTip(client, `This ${getVehicleName(vehicle)}'s engine is off. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "engine").key))} {MAINCOLOUR}to start it.`);
|
|
||||||
} else {
|
case VRR_VEHOWNER_PLAYER:
|
||||||
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off. Use /engine to start it`);
|
let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId);
|
||||||
}
|
ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`;
|
||||||
|
ownerType = "player";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VRR_VEHOWNER_BIZ:
|
||||||
|
ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name;
|
||||||
|
ownerType = "business";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
messagePlayerAlert(client, `This ${getVehicleName(vehicle)} belongs to {ALTCOLOUR}${ownerName} (${ownerType})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!getVehicleData(vehicle).engine) {
|
||||||
|
if(getVehicleData(vehicle).buyPrice == 0 && getVehicleData(vehicle).rentPrice == 0) {
|
||||||
|
if(doesPlayerHaveVehicleKeys(client, vehicle)) {
|
||||||
|
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 {
|
} else {
|
||||||
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off and you don't have the keys to start it`);
|
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off. Use /engine to start it`);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
resetVehiclePosition(vehicle);
|
messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off and you don't have the keys to start it`);
|
||||||
}
|
|
||||||
|
|
||||||
let currentSubAccount = getPlayerCurrentSubAccount(client);
|
|
||||||
|
|
||||||
if(isPlayerWorking(client)) {
|
|
||||||
if(getVehicleData(vehicle).ownerType == VRR_VEHOWNER_JOB) {
|
|
||||||
if(getVehicleData(vehicle).ownerId == getPlayerCurrentSubAccount(client).job) {
|
|
||||||
getPlayerCurrentSubAccount(client).lastJobVehicle = vehicle;
|
|
||||||
messagePlayerInfo(client, `Use /startroute to start working in this vehicle`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
resetVehiclePosition(vehicle);
|
||||||
|
}
|
||||||
|
|
||||||
if(isPlayerWorking(client)) {
|
let currentSubAccount = getPlayerCurrentSubAccount(client);
|
||||||
if(isPlayerOnJobRoute(client)) {
|
|
||||||
if(vehicle == getPlayerJobRouteVehicle(client)) {
|
if(isPlayerWorking(client)) {
|
||||||
stopReturnToJobVehicleCountdown(client);
|
if(getVehicleData(vehicle).ownerType == VRR_VEHOWNER_JOB) {
|
||||||
}
|
if(getVehicleData(vehicle).ownerId == getPlayerCurrentSubAccount(client).job) {
|
||||||
|
getPlayerCurrentSubAccount(client).lastJobVehicle = vehicle;
|
||||||
|
messagePlayerInfo(client, `Use /startroute to start working in this vehicle`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getVehicleData(vehicle).streamingRadioStation != -1) {
|
if(isPlayerWorking(client)) {
|
||||||
if(getPlayerData(client).streamingRadioStation != getVehicleData(vehicle).streamingRadioStation) {
|
if(isPlayerOnJobRoute(client)) {
|
||||||
playRadioStreamForPlayer(client, radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client));
|
if(vehicle == getPlayerJobRouteVehicle(client)) {
|
||||||
|
stopReturnToJobVehicleCountdown(client);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//}, client.ping+500);
|
}
|
||||||
|
|
||||||
|
if(getVehicleData(vehicle).streamingRadioStation != -1) {
|
||||||
|
if(getPlayerData(client).streamingRadioStation != getVehicleData(vehicle).streamingRadioStation) {
|
||||||
|
playRadioStreamForPlayer(client, radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -492,120 +476,124 @@ 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"));
|
||||||
messagePlayerNormal(client, "This server is in early development and may restart at any time for updates.", getColourByName("orange"));
|
messagePlayerNormal(client, "This server is in early development and may restart at any time for updates.", getColourByName("orange"));
|
||||||
messagePlayerNormal(client, "Please report any bugs using /bug and suggestions using /idea", getColourByName("yellow"));
|
messagePlayerNormal(client, "Please report any bugs using /bug and suggestions using /idea", getColourByName("yellow"));
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Updating spawned state for ${getPlayerDisplayForConsole(client)} to true`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Updating spawned state for ${getPlayerDisplayForConsole(client)} to true`);
|
||||||
updatePlayerSpawnedState(client, true);
|
updatePlayerSpawnedState(client, true);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player interior for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).interior}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player interior for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).interior}`);
|
||||||
setPlayerInterior(client, getPlayerCurrentSubAccount(client).interior);
|
setPlayerInterior(client, getPlayerCurrentSubAccount(client).interior);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player dimension for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).dimension}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player dimension for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).dimension}`);
|
||||||
setPlayerDimension(client, getPlayerCurrentSubAccount(client).dimension);
|
setPlayerDimension(client, getPlayerCurrentSubAccount(client).dimension);
|
||||||
|
|
||||||
//if(getPlayerCurrentSubAccount(client).interior != 0 || getPlayerCurrentSubAccount(client).dimension != 0) {
|
//if(getPlayerCurrentSubAccount(client).interior != 0 || getPlayerCurrentSubAccount(client).dimension != 0) {
|
||||||
// updateAllInteriorVehiclesForPlayer(client, getPlayerCurrentSubAccount(client).interior, getPlayerCurrentSubAccount(client).dimension);
|
// updateAllInteriorVehiclesForPlayer(client, getPlayerCurrentSubAccount(client).interior, getPlayerCurrentSubAccount(client).dimension);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player health for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).health}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player health for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).health}`);
|
||||||
setPlayerHealth(client, getPlayerCurrentSubAccount(client).health);
|
setPlayerHealth(client, getPlayerCurrentSubAccount(client).health);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player armour for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).armour}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player armour for ${getPlayerDisplayForConsole(client)} to ${getPlayerCurrentSubAccount(client).armour}`);
|
||||||
setPlayerArmour(client, getPlayerCurrentSubAccount(client).armour);
|
setPlayerArmour(client, getPlayerCurrentSubAccount(client).armour);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Sending ${getPlayerDisplayForConsole(client)}'s job type to their client (${getJobIndexFromDatabaseId(getPlayerCurrentSubAccount(client))})`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Sending ${getPlayerDisplayForConsole(client)}'s job type to their client (${getJobIndexFromDatabaseId(getPlayerCurrentSubAccount(client))})`);
|
||||||
sendPlayerJobType(client, getPlayerCurrentSubAccount(client).job);
|
sendPlayerJobType(client, getPlayerCurrentSubAccount(client).job);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Enabling all rendering states for ${getPlayerDisplayForConsole(client)}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Enabling all rendering states for ${getPlayerDisplayForConsole(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);
|
||||||
|
|
||||||
setPlayerFightStyle(client, getPlayerCurrentSubAccount(client).fightStyle);
|
setPlayerFightStyle(client, getPlayerCurrentSubAccount(client).fightStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Updating logo state for ${getPlayerDisplayForConsole(client)}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Updating logo state for ${getPlayerDisplayForConsole(client)}`);
|
||||||
if(getServerConfig().showLogo && doesPlayerHaveLogoEnabled(client)) {
|
if(getServerConfig().showLogo && doesPlayerHaveLogoEnabled(client)) {
|
||||||
updatePlayerShowLogoState(client, true);
|
updatePlayerShowLogoState(client, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Caching ${getPlayerDisplayForConsole(client)}'s hotbar items`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Caching ${getPlayerDisplayForConsole(client)}'s hotbar items`);
|
||||||
cachePlayerHotBarItems(client);
|
cachePlayerHotBarItems(client);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Syncing ${getPlayerDisplayForConsole(client)}'s hotbar`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Syncing ${getPlayerDisplayForConsole(client)}'s hotbar`);
|
||||||
updatePlayerHotBar(client);
|
updatePlayerHotBar(client);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s switchchar state to false`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s switchchar state to false`);
|
||||||
getPlayerData(client).switchingCharacter = false;
|
getPlayerData(client).switchingCharacter = false;
|
||||||
|
|
||||||
if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "enter")) {
|
if(!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "enter")) {
|
||||||
let keyId = getPlayerKeyBindForCommand(client, "enter");
|
let keyId = getPlayerKeyBindForCommand(client, "enter");
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Sending custom enter property key ID (${keyId.key}, ${toUpperCase(getKeyNameFromId(keyId.key))}) to ${getPlayerDisplayForConsole(client)}`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Sending custom enter property key ID (${keyId.key}, ${toUpperCase(getKeyNameFromId(keyId.key))}) to ${getPlayerDisplayForConsole(client)}`);
|
||||||
sendPlayerEnterPropertyKey(client, keyId.key);
|
sendPlayerEnterPropertyKey(client, keyId.key);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if(isGTAIV()) {
|
//if(isGTAIV()) {
|
||||||
// setEntityData(client.player, "vrr.bodyPartHair", getPlayerCurrentSubAccount(client).bodyParts.hair, true);
|
// setEntityData(client.player, "vrr.bodyPartHair", getPlayerCurrentSubAccount(client).bodyParts.hair, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyParts.head, true);
|
// setEntityData(client.player, "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyParts.head, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartUpper", getPlayerCurrentSubAccount(client).bodyParts.upper, true);
|
// setEntityData(client.player, "vrr.bodyPartUpper", getPlayerCurrentSubAccount(client).bodyParts.upper, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartLower", getPlayerCurrentSubAccount(client).bodyParts.lower, true);
|
// setEntityData(client.player, "vrr.bodyPartLower", getPlayerCurrentSubAccount(client).bodyParts.lower, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPropHair", getPlayerCurrentSubAccount(client).bodyProps.hair, true);
|
// setEntityData(client.player, "vrr.bodyPropHair", getPlayerCurrentSubAccount(client).bodyProps.hair, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPropEyes", getPlayerCurrentSubAccount(client).bodyProps.eyes, true);
|
// setEntityData(client.player, "vrr.bodyPropEyes", getPlayerCurrentSubAccount(client).bodyProps.eyes, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyProps.head, true);
|
// setEntityData(client.player, "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyProps.head, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartLeftHand", getPlayerCurrentSubAccount(client).bodyProps.leftHand, true);
|
// setEntityData(client.player, "vrr.bodyPartLeftHand", getPlayerCurrentSubAccount(client).bodyProps.leftHand, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartRightHand", getPlayerCurrentSubAccount(client).bodyProps.rightHand, true);
|
// setEntityData(client.player, "vrr.bodyPartRightHand", getPlayerCurrentSubAccount(client).bodyProps.rightHand, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartLeftWrist", getPlayerCurrentSubAccount(client).bodyProps.leftWrist, true);
|
// setEntityData(client.player, "vrr.bodyPartLeftWrist", getPlayerCurrentSubAccount(client).bodyProps.leftWrist, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartRightWrist", getPlayerCurrentSubAccount(client).bodyProps.rightWrist, true);
|
// setEntityData(client.player, "vrr.bodyPartRightWrist", getPlayerCurrentSubAccount(client).bodyProps.rightWrist, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartHip", getPlayerCurrentSubAccount(client).bodyProps.hip, true);
|
// setEntityData(client.player, "vrr.bodyPartHip", getPlayerCurrentSubAccount(client).bodyProps.hip, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartLeftFoot", getPlayerCurrentSubAccount(client).bodyProps.leftFoot, true);
|
// setEntityData(client.player, "vrr.bodyPartLeftFoot", getPlayerCurrentSubAccount(client).bodyProps.leftFoot, true);
|
||||||
// setEntityData(client.player, "vrr.bodyPartRightFoot", getPlayerCurrentSubAccount(client).bodyProps.rightFoot, true);
|
// setEntityData(client.player, "vrr.bodyPartRightFoot", getPlayerCurrentSubAccount(client).bodyProps.rightFoot, true);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
logToConsole(LOG_DEBUG, `[VRR.Event] Updating all player name tags`);
|
logToConsole(LOG_DEBUG, `[VRR.Event] Updating all player name tags`);
|
||||||
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;
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -538,8 +538,10 @@ function setVehicleColours(vehicle, colour1, colour2, colour3 = -1, colour4 = -1
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function createGameVehicle(modelIndex, position, heading) {
|
function createGameVehicle(modelIndex, position, heading, toClient = null) {
|
||||||
return game.createVehicle(getGameConfig().vehicles[getGame()][modelIndex][0], position, heading);
|
if(areServerElementsSupported()) {
|
||||||
|
return game.createVehicle(getGameConfig().vehicles[getGame()][modelIndex][0], position, heading);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
@@ -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(isVehicleObject(vehicle)) {
|
if(getGame() != VRR_GAME_GTA_IV) {
|
||||||
let dataIndex = getEntityData(vehicle, "vrr.dataSlot");
|
if(isVehicleObject(vehicle)) {
|
||||||
if(typeof getServerData().vehicles[dataIndex] != "undefined") {
|
let dataIndex = getEntityData(vehicle, "vrr.dataSlot");
|
||||||
return getServerData().vehicles[dataIndex];
|
if(typeof getServerData().vehicles[dataIndex] != "undefined") {
|
||||||
|
return getServerData().vehicles[dataIndex];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
return getServerVehicles().find((v) => v.ivNetworkId == vehicle);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -1404,7 +1406,11 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim
|
|||||||
}
|
}
|
||||||
|
|
||||||
let slot = getServerData().vehicles.push(tempVehicleData);
|
let slot = getServerData().vehicles.push(tempVehicleData);
|
||||||
setEntityData(vehicle, "vrr.dataSlot", slot-1, false);
|
|
||||||
|
if(areServerElementsSupported()) {
|
||||||
|
setEntityData(vehicle, "vrr.dataSlot", slot-1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return vehicle;
|
return vehicle;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user