diff --git a/scripts/client/main.js b/scripts/client/main.js index 7292f970..fb292248 100644 --- a/scripts/client/main.js +++ b/scripts/client/main.js @@ -69,4 +69,8 @@ let forceWantedLevel = 0; // Pre-cache all allowed skins let allowedSkins = getAllowedSkins(getGame()); +let businessBlips = {}; +let houseBlips = {}; +let jobBlips = {}; + // =========================================================================== \ No newline at end of file diff --git a/scripts/client/server.js b/scripts/client/server.js index b5bb5da8..c2c8fd0a 100644 --- a/scripts/client/server.js +++ b/scripts/client/server.js @@ -101,6 +101,11 @@ function addAllNetworkHandlers() { addNetworkEventHandler("vrr.logLevel", setLogLevel); addNetworkEventHandler("vrr.infiniteRun", setLocalPlayerInfiniteRun); + + addNetworkEventHandler("vrr.business", receiveBusinessFromServer); + addNetworkEventHandler("vrr.house", receiveHouseFromServer); + + addNetworkEventHandler("vrr.holdObject", localPlayerHoldObject); } // =========================================================================== @@ -311,4 +316,12 @@ function setLocalPlayerSkin(skinId) { } } +// =========================================================================== + +function makePedHoldObject(client, modelIndex) { + if(getGame() == VRR_GAME_GTA_IV) { + + } +} + // =========================================================================== \ No newline at end of file diff --git a/scripts/client/sync.js b/scripts/client/sync.js index 7b7d7413..56802738 100644 --- a/scripts/client/sync.js +++ b/scripts/client/sync.js @@ -393,15 +393,34 @@ function syncElementProperties(element) { // =========================================================================== -function receiveBlipFromServer(model, position) { +function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) { if(getGame() == VRR_GAME_GTA_IV) { - + if(typeof businessBlips[businessId] != "undefined") { + if(blipModel == -1) { + natives.removeBlipAndClearIndex(businessBlips[businessId]); + businessBlips.splice(businessId, 1); + } else { + natives.setBlipCoordinates(businessBlips[businessId], entrancePosition); + natives.changeBlipSprite(businessBlips[businessId], blipModel); + natives.changeBlipNameFromAscii(businessBlips[businessId], `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`); + } + } else { + if(blipModel != -1) { + let blipId = natives.addBlipForCoord(entrancePosition); + if(blipId) { + businessBlips[businessId] = blipId; + natives.changeBlipSprite(blipId, blipModel); + natives.setBlipMarkerLongDistance(blipId, true); + natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`); + } + } + } } } // =========================================================================== -function receivePickupFromServer(model, position) { +function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) { if(getGame() == VRR_GAME_GTA_IV) { } diff --git a/scripts/server/business.js b/scripts/server/business.js index 24af8bfa..54be2b14 100644 --- a/scripts/server/business.js +++ b/scripts/server/business.js @@ -1335,11 +1335,7 @@ function createAllBusinessBlips() { // =========================================================================== -function createBusinessEntrancePickup(businessId) { - if(!areServerElementsSupported()) { - return false; - } - +function createBusinessEntrancePickup(businessId) { if(!getServerConfig().createBusinessPickups) { return false; } @@ -1359,6 +1355,8 @@ function createBusinessEntrancePickup(businessId) { setElementDimension(getBusinessData(businessId).entrancePickup, getBusinessData(businessId).entranceDimension); updateBusinessPickupLabelData(businessId); addToWorld(getBusinessData(businessId).entrancePickup); + } else { + sendBusinessEntranceToPlayer(null, businessId, getBusinessData(businessId), getBusinessData(businessId).entrancePosition, getBusinessData(businessId).entranceBlipModel, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false); } } } @@ -1388,6 +1386,8 @@ function createBusinessEntranceBlip(businessId) { setElementOnAllDimensions(getBusinessData(businessId).entranceBlip, false); setElementDimension(getBusinessData(businessId).entranceBlip, getBusinessData(businessId).entranceDimension); addToWorld(getBusinessData(businessId).entranceBlip); + } else { + sendBusinessEntranceToPlayer(null, businessId, getBusinessData(businessId).name, getBusinessData(businessId).entrancePosition, blipModelId, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false); } } } @@ -1551,6 +1551,10 @@ function doesBusinessHaveInterior(businessId) { // =========================================================================== function deleteBusinessEntrancePickup(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(getBusinessData(businessId).entrancePickup != null) { //removeFromWorld(getBusinessData(businessId).entrancePickup); deleteGameElement(getBusinessData(businessId).entrancePickup); @@ -1561,6 +1565,10 @@ function deleteBusinessEntrancePickup(businessId) { // =========================================================================== function deleteBusinessExitPickup(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(getBusinessData(businessId).exitPickup != null) { //removeFromWorld(getBusinessData(businessId).exitPickup); deleteGameElement(getBusinessData(businessId).exitPickup); @@ -1571,6 +1579,10 @@ function deleteBusinessExitPickup(businessId) { // =========================================================================== function deleteBusinessEntranceBlip(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(getBusinessData(businessId).entranceBlip != null) { //removeFromWorld(getBusinessData(businessId).entranceBlip); deleteGameElement(getBusinessData(businessId).entranceBlip); @@ -1581,6 +1593,10 @@ function deleteBusinessEntranceBlip(businessId) { // =========================================================================== function deleteBusinessExitBlip(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(getBusinessData(businessId).exitBlip != null) { //removeFromWorld(getBusinessData(businessId).exitBlip); deleteGameElement(getBusinessData(businessId).exitBlip); diff --git a/scripts/server/client.js b/scripts/server/client.js index c0ea074c..94f0c851 100644 --- a/scripts/server/client.js +++ b/scripts/server/client.js @@ -1146,4 +1146,32 @@ function sendHouseEntranceToPlayer(client, houseId, entrancePosition, blipModel, sendNetworkEventToPlayer("vrr.house", client, houseId, entrancePosition, blipModel, pickupModel, hasInterior); } +// ========================================================================== + +function sendAllBusinessEntrancesToPlayer(client) { + let businesses = getServerData().businesses; + for(let i in businesses) { + if(businesses[i].entranceBlipModel > 0) { + sendBusinessEntranceToPlayer(client, businesses[i].index, businesses[i].name, businesses[i].entrancePosition, businesses[i].entranceBlipModel, businesses[i].entrancePickupModel, businesses[i].hasInterior, false); + } + } +} + +// ========================================================================== + +function sendAllHouseEntrancesToPlayer(client) { + let houses = getServerData().houses; + for(let i in houses) { + if(houses[i].entranceBlipModel > 0) { + sendBusinessEntranceToPlayer(client, businesses[i].index, houses[i].entrancePosition, houses[i].entranceBlipModel, houses[i].entrancePickupModel, houses[i].hasInterior); + } + } +} + +// ========================================================================== + +function makePlayerHoldObjectModel(client, modelIndex) { + sendNetworkEventToPlayer("vrr.holdObject", client, modelIndex); +} + // ========================================================================== \ No newline at end of file diff --git a/scripts/server/event.js b/scripts/server/event.js index fbe1edf7..cd147046 100644 --- a/scripts/server/event.js +++ b/scripts/server/event.js @@ -596,6 +596,12 @@ function onPlayerSpawn(client) { logToConsole(LOG_DEBUG, `[VRR.Event] Updating all player name tags`); updateAllPlayerNameTags(); + if(!areServerElementsSupported()) { + sendAllBusinessEntrancesToPlayer(client); + sendAllHouseEntrancesToPlayer(client); + //sendAllJobLocationsToPlayer(client); + } + getPlayerData(client).payDayTickStart = sdl.ticks; //} } diff --git a/scripts/server/house.js b/scripts/server/house.js index 2eac6c2c..ba1d52d0 100644 --- a/scripts/server/house.js +++ b/scripts/server/house.js @@ -1140,6 +1140,10 @@ function doesHouseHaveInterior(houseId) { // =========================================================================== function deleteHouseEntrancePickup(houseId) { + if(!areServerElementsSupported()) { + return false; + } + if(getHouseData(houseId).entrancePickup != null) { //removeFromWorld(getHouseData(houseId).entrancePickup); deleteGameElement(getHouseData(houseId).entrancePickup); @@ -1150,6 +1154,10 @@ function deleteHouseEntrancePickup(houseId) { // =========================================================================== function deleteHouseExitPickup(houseId) { + if(!areServerElementsSupported()) { + return false; + } + if(getHouseData(houseId).exitPickup != null) { //removeFromWorld(getHouseData(houseId).exitPickup); deleteGameElement(getHouseData(houseId).exitPickup); @@ -1160,6 +1168,10 @@ function deleteHouseExitPickup(houseId) { // =========================================================================== function deleteHouseEntranceBlip(houseId) { + if(!areServerElementsSupported()) { + return false; + } + if(getHouseData(houseId).entranceBlip != null) { //removeFromWorld(getHouseData(houseId).entranceBlip); deleteGameElement(getHouseData(houseId).entranceBlip); @@ -1170,6 +1182,10 @@ function deleteHouseEntranceBlip(houseId) { // =========================================================================== function deleteHouseExitBlip(houseId) { + if(!areServerElementsSupported()) { + return false; + } + if(getHouseData(houseId).exitBlip != null) { //removeFromWorld(getHouseData(houseId).exitBlip); deleteGameElement(getHouseData(houseId).exitBlip);