From 46cb86d25b15d0a479d14a9ab8204e5b66d5e637 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 17 May 2022 08:55:55 -0500 Subject: [PATCH] Optimizations --- scripts/server/business.js | 242 ++++++++++++++++++++----------------- scripts/server/house.js | 21 ++-- scripts/server/item.js | 26 ++-- 3 files changed, 146 insertions(+), 143 deletions(-) diff --git a/scripts/server/business.js b/scripts/server/business.js index cbcbefd1..5f2eb10f 100644 --- a/scripts/server/business.js +++ b/scripts/server/business.js @@ -1712,44 +1712,50 @@ function createAllBusinessBlips() { * */ function createBusinessEntrancePickup(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(!getServerConfig().createBusinessPickups) { return false; } - if(getBusinessData(businessId).entrancePickupModel != -1) { - let pickupModelId = getGameConfig().pickupModels[getGame()].Business; + let businessData = getBusinessData(businessId); - if(getServerData().businesses[businessId].entrancePickupModel != 0) { - pickupModelId = getBusinessData(businessId).entrancePickupModel; - } + //if(businessData.hasInterior) { + // return false; + //} - logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating entrance pickup for business ${getBusinessData(businessId).name} (model ${pickupModelId})`); + if(businessData.entrancePickupModel == -1) { + return false; + } - if(areServerElementsSupported()) { - let entrancePickup = createGamePickup(pickupModelId, getBusinessData(businessId).entrancePosition, getGameConfig().pickupTypes[getGame()].business); - if(entrancePickup != null) { - if(businessData.entranceDimension != -1) { - setElementDimension(entrancePickup, businessData.entranceDimension); - setElementOnAllDimensions(entrancePickup, false); - } else { - setElementOnAllDimensions(entrancePickup, true); - } + let pickupModelId = getGameConfig().pickupModels[getGame()].Business; - if(getGlobalConfig().businessPickupStreamInDistance == -1 || getGlobalConfig().businessPickupStreamOutDistance == -1) { - entrancePickup.netFlags.distanceStreaming = false; - } else { - setElementStreamInDistance(entrancePickup, getGlobalConfig().businessPickupStreamInDistance); - setElementStreamOutDistance(entrancePickup, getGlobalConfig().businessPickupStreamOutDistance); - } - setElementTransient(entrancePickup, false); - getBusinessData(businessId).entrancePickup = entrancePickup; - updateBusinessPickupLabelData(businessId); - } + if(businessData.entrancePickupModel != 0) { + pickupModelId = businessData.entrancePickupModel; + } + + logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating entrance pickup for business ${businessData.name} (model ${pickupModelId})`); + + let entrancePickup = createGamePickup(pickupModelId, businessData.entrancePosition, getGameConfig().pickupTypes[getGame()].business); + if(entrancePickup != null) { + if(businessData.entranceDimension != -1) { + setElementDimension(entrancePickup, businessData.entranceDimension); + setElementOnAllDimensions(entrancePickup, false); } else { - sendBusinessToPlayer(null, businessId, getBusinessData(businessId), getBusinessData(businessId).entrancePosition, getBusinessData(businessId).entranceBlipModel, getBusinessData(businessId).entrancePickupModel, getBusinessData(businessId).hasInterior, false); + setElementOnAllDimensions(entrancePickup, true); } - return true; + if(getGlobalConfig().businessPickupStreamInDistance == -1 || getGlobalConfig().businessPickupStreamOutDistance == -1) { + entrancePickup.netFlags.distanceStreaming = false; + } else { + setElementStreamInDistance(entrancePickup, getGlobalConfig().businessPickupStreamInDistance); + setElementStreamOutDistance(entrancePickup, getGlobalConfig().businessPickupStreamOutDistance); + } + setElementTransient(entrancePickup, false); + getBusinessData(businessId).entrancePickup = entrancePickup; + updateBusinessPickupLabelData(businessId); } return false; @@ -1775,38 +1781,39 @@ function createBusinessEntranceBlip(businessId) { let businessData = getBusinessData(businessId); - if(businessData.entranceBlipModel != -1) { - let blipModelId = getGameConfig().blipSprites[getGame()].Business; + //if(businessData.hasInterior) { + // return false; + //} - if(getServerData().businesses[businessId].entranceBlipModel != 0) { - blipModelId = businessData.entranceBlipModel; - } + if(businessData.entranceBlipModel == -1) { + return false; + } - logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating entrance blip for business ${businessData.name} (model ${blipModelId})`); - if(areServerElementsSupported()) { - let entranceBlip = createGameBlip(businessData.entrancePosition, blipModelId, getColourByType("businessBlue")); + let blipModelId = getGameConfig().blipSprites[getGame()].Business; - if(entranceBlip != null) { - if(businessData.entranceDimension != -1) { - setElementDimension(entranceBlip, businessData.entranceDimension); - setElementOnAllDimensions(entranceBlip, false); - } else { - setElementOnAllDimensions(entranceBlip, true); - } + if(businessData.entranceBlipModel != 0) { + blipModelId = businessData.entranceBlipModel; + } - if(getGlobalConfig().businessBlipStreamInDistance == -1 || getGlobalConfig().businessBlipStreamOutDistance == -1) { - entranceBlip.netFlags.distanceStreaming = false; - } else { - setElementStreamInDistance(entranceBlip, getGlobalConfig().businessBlipStreamInDistance); - setElementStreamOutDistance(entranceBlip, getGlobalConfig().businessBlipStreamOutDistance); - } - setElementTransient(entranceBlip, false); - businessData.entranceBlip = entranceBlip; - } + logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating entrance blip for business ${businessData.name} (model ${blipModelId})`); + let entranceBlip = createGameBlip(businessData.entrancePosition, blipModelId, getColourByType("businessBlue")); + if(entranceBlip != null) { + if(businessData.entranceDimension != -1) { + setElementDimension(entranceBlip, businessData.entranceDimension); + setElementOnAllDimensions(entranceBlip, false); } else { - sendBusinessToPlayer(null, businessId, businessData.name, businessData.entrancePosition, blipModelId, businessData.entrancePickupModel, businessData.hasInterior, false); + setElementOnAllDimensions(entranceBlip, true); } + + if(getGlobalConfig().businessBlipStreamInDistance == -1 || getGlobalConfig().businessBlipStreamOutDistance == -1) { + entranceBlip.netFlags.distanceStreaming = false; + } else { + setElementStreamInDistance(entranceBlip, getGlobalConfig().businessBlipStreamInDistance); + setElementStreamOutDistance(entranceBlip, getGlobalConfig().businessBlipStreamOutDistance); + } + setElementTransient(entranceBlip, false); + businessData.entranceBlip = entranceBlip; } } @@ -1820,6 +1827,10 @@ function createBusinessEntranceBlip(businessId) { * */ function createBusinessExitPickup(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(!getServerConfig().createBusinessPickups) { return false; } @@ -1827,37 +1838,39 @@ function createBusinessExitPickup(businessId) { let businessData = getBusinessData(businessId); if(businessData.hasInterior) { - if(businessData.exitPickupModel != -1) { - let pickupModelId = getGameConfig().pickupModels[getGame()].Exit; + return false; + } - if(getServerData().businesses[businessId].exitPickupModel != 0) { - pickupModelId = businessData.exitPickupModel; - } + if(businessData.entrancePickupModel == -1) { + return false; + } - logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating exit pickup for business ${businessData.name} (model ${pickupModelId})`); + let pickupModelId = getGameConfig().pickupModels[getGame()].Business; - if(areServerElementsSupported()) { - let exitPickup = createGamePickup(pickupModelId, businessData.exitPosition, getGameConfig().pickupTypes[getGame()].business); - if(exitPickup != null) { - if(businessData.exitDimension != -1) { - setElementDimension(exitPickup, businessData.exitDimension); - setElementOnAllDimensions(exitPickup, false); - } else { - setElementOnAllDimensions(exitPickup, true); - } + if(businessData.exitPickupModel != 0) { + pickupModelId = businessData.exitPickupModel; + } - if(getGlobalConfig().businessPickupStreamInDistance == -1 || getGlobalConfig().businessPickupStreamOutDistance == -1) { - exitPickup.netFlags.distanceStreaming = false; - } else { - setElementStreamInDistance(exitPickup, getGlobalConfig().businessPickupStreamInDistance); - setElementStreamOutDistance(exitPickup, getGlobalConfig().businessPickupStreamOutDistance); - } - setElementTransient(exitPickup, false); - getBusinessData(businessId).exitPickup = exitPickup; - updateBusinessPickupLabelData(businessId); - } - } + logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating exit pickup for business ${businessData.name} (model ${pickupModelId})`); + + let exitPickup = createGamePickup(pickupModelId, businessData.exitPosition, getGameConfig().pickupTypes[getGame()].business); + if(exitPickup != null) { + if(businessData.exitDimension != -1) { + setElementDimension(exitPickup, businessData.exitDimension); + setElementOnAllDimensions(exitPickup, false); + } else { + setElementOnAllDimensions(exitPickup, true); } + + if(getGlobalConfig().businessPickupStreamInDistance == -1 || getGlobalConfig().businessPickupStreamOutDistance == -1) { + exitPickup.netFlags.distanceStreaming = false; + } else { + setElementStreamInDistance(exitPickup, getGlobalConfig().businessPickupStreamInDistance); + setElementStreamOutDistance(exitPickup, getGlobalConfig().businessPickupStreamOutDistance); + } + setElementTransient(exitPickup, false); + getBusinessData(businessId).exitPickup = exitPickup; + updateBusinessPickupLabelData(businessId); } } @@ -1871,6 +1884,10 @@ function createBusinessExitPickup(businessId) { * */ function createBusinessExitBlip(businessId) { + if(!areServerElementsSupported()) { + return false; + } + if(!getServerConfig().createBusinessBlips) { return false; } @@ -1878,36 +1895,38 @@ function createBusinessExitBlip(businessId) { let businessData = getBusinessData(businessId); if(businessData.hasInterior) { - if(businessData.exitBlipModel != -1) { - let blipModelId = getGameConfig().blipSprites[getGame()].Business; + return false; + } - if(getServerData().businesses[businessId].exitBlipModel != 0) { - blipModelId = businessData.exitBlipModel; - } + if(businessData.exitBlipModel == -1) { + return false; + } - if(areServerElementsSupported()) { - logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating exit blip for business ${businessData.name} (model ${blipModelId})`); + let blipModelId = getGameConfig().blipSprites[getGame()].Business; - let exitBlip = createGameBlip(businessData.exitPosition, blipModelId, 1, getColourByName("businessBlue")); - if(exitBlip != null) { - if(businessData.exitDimension != -1) { - setElementDimension(exitBlip, businessData.exitDimension); - setElementOnAllDimensions(exitBlip, false); - } else { - setElementOnAllDimensions(exitBlip, true); - } + if(businessData.exitBlipModel != 0) { + blipModelId = businessData.exitBlipModel; + } - if(getGlobalConfig().businessBlipStreamInDistance == -1 || getGlobalConfig().businessBlipStreamOutDistance == -1) { - exitBlip.netFlags.distanceStreaming = false; - } else { - setElementStreamInDistance(exitBlip, getGlobalConfig().businessBlipStreamInDistance); - setElementStreamOutDistance(exitBlip, getGlobalConfig().businessBlipStreamOutDistance); - } - setElementTransient(exitBlip, false); - businessData.exitBlip = exitBlip; - } - } + logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating exit blip for business ${businessData.name} (model ${blipModelId})`); + + let exitBlip = createGameBlip(businessData.exitPosition, blipModelId, 1, getColourByName("businessBlue")); + if(exitBlip != null) { + if(businessData.exitDimension != -1) { + setElementDimension(exitBlip, businessData.exitDimension); + setElementOnAllDimensions(exitBlip, false); + } else { + setElementOnAllDimensions(exitBlip, true); } + + if(getGlobalConfig().businessBlipStreamInDistance == -1 || getGlobalConfig().businessBlipStreamOutDistance == -1) { + exitBlip.netFlags.distanceStreaming = false; + } else { + setElementStreamInDistance(exitBlip, getGlobalConfig().businessBlipStreamInDistance); + setElementStreamOutDistance(exitBlip, getGlobalConfig().businessBlipStreamOutDistance); + } + setElementTransient(exitBlip, false); + businessData.exitBlip = exitBlip; } } @@ -2475,17 +2494,14 @@ function cacheAllBusinessItems() { // Caches all items for a business by businessId function cacheBusinessItems(businessId) { - getBusinessData(businessId).floorItemCache.splice(0, getBusinessData(businessId).floorItemCache.length); - getBusinessData(businessId).storageItemCache.splice(0, getBusinessData(businessId).storageItemCache.length); + clearArray(getBusinessData(businessId).floorItemCache); + clearArray(getBusinessData(businessId).storageItemCache); + + let businessData = getBusinessData(businessId); + logToConsole(LOG_VERBOSE, `[VRR.Business] Caching business items for business ${businessId} (${businessData.name}) ...`); + getBusinessData(businessId).floorItemCache = getServerData().items.filter(item => item.ownerType == VRR_ITEM_OWNER_BIZFLOOR && item.ownerId == businessData.databaseId); + getBusinessData(businessId).storageItemCache = getServerData().items.filter(item => item.ownerType == VRR_ITEM_OWNER_BIZSTORAGE && item.ownerId == businessData.databaseId); - logToConsole(LOG_VERBOSE, `[VRR.Business] Caching business items for business ${businessId} (${getBusinessData(businessId).name}) ...`); - for(let i in getServerData().items) { - if(getItemData(i).ownerType == VRR_ITEM_OWNER_BIZFLOOR && getItemData(i).ownerId == getBusinessData(businessId).databaseId) { - getBusinessData(businessId).floorItemCache.push(i); - } else if(getItemData(i).ownerType == VRR_ITEM_OWNER_BIZSTORAGE && getItemData(i).ownerId == getBusinessData(businessId).databaseId) { - getBusinessData(businessId).storageItemCache.push(i); - } - } logToConsole(LOG_VERBOSE, `[VRR.Business] Successfully cached ${getBusinessData(businessId).floorItemCache.length} floor items and ${getBusinessData(businessId).storageItemCache} storage items for business ${businessId} (${getBusinessData(businessId).name})!`); } diff --git a/scripts/server/house.js b/scripts/server/house.js index d62883d0..979c3f13 100644 --- a/scripts/server/house.js +++ b/scripts/server/house.js @@ -841,7 +841,7 @@ function createAllHouseBlips() { // =========================================================================== function createHouseEntrancePickup(houseId) { - if(areServerElementsSupported()) { + if(!areServerElementsSupported()) { return false; } @@ -885,7 +885,7 @@ function createHouseEntrancePickup(houseId) { // =========================================================================== function createHouseEntranceBlip(houseId) { - if(areServerElementsSupported()) { + if(!areServerElementsSupported()) { return false; } @@ -938,7 +938,7 @@ function createHouseEntranceBlip(houseId) { // =========================================================================== function createHouseExitPickup(houseId) { - if(areServerElementsSupported()) { + if(!areServerElementsSupported()) { return false; } @@ -966,9 +966,9 @@ function createHouseExitPickup(houseId) { pickupModelId = houseData.exitPickupModel; } - let exitPickup = createGamePickup(pickupModelId, getHouseData(houseId).exitPosition, getGameConfig().pickupTypes[getGame()].house); + let exitPickup = createGamePickup(pickupModelId, houseData.exitPosition, getGameConfig().pickupTypes[getGame()].house); if(exitPickup != null) { - setElementDimension(exitPickup, getHouseData(houseId).exitDimension); + setElementDimension(exitPickup, houseData.exitDimension); setElementOnAllDimensions(exitPickup, false); setElementStreamInDistance(exitPickup, getGlobalConfig().housePickupStreamInDistance); setElementStreamOutDistance(exitPickup, getGlobalConfig().housePickupStreamOutDistance); @@ -977,13 +977,12 @@ function createHouseExitPickup(houseId) { getHouseData(houseId).exitPickup = exitPickup; updateHousePickupLabelData(houseId); } - } // =========================================================================== function createHouseExitBlip(houseId) { - if(areServerElementsSupported()) { + if(!areServerElementsSupported()) { return false; } @@ -1005,13 +1004,13 @@ function createHouseExitBlip(houseId) { return false; } - let blipModelId = getGameConfig().blipSprites[getGame()].House; + let blipModelId = getGameConfig().blipSprites[getGame()].Exit; if(getServerData().houses[houseId].exitBlipModel != 0) { - blipModelId = getHouseData(houseId).exitBlipModel; + blipModelId = houseData.exitBlipModel; } - let exitBlip = createGameBlip(blipModelId, getHouseData(houseId).exitPosition, 1, getColourByName("houseGreen")); + let exitBlip = createGameBlip(houseData.exitPosition, blipModelId, 1, getColourByName("houseGreen")); if(exitBlip != null) { if(houseData.exitDimension != -1) { setElementDimension(exitBlip, houseData.exitDimension); @@ -1567,7 +1566,7 @@ function updateHousePickupLabelData(houseId) { setEntityData(houseData.entrancePickup, "vrr.owner.type", VRR_PICKUP_HOUSE_ENTRANCE, false); setEntityData(houseData.entrancePickup, "vrr.owner.id", houseId, false); setEntityData(houseData.entrancePickup, "vrr.label.type", VRR_LABEL_HOUSE, true); - //setEntityData(houseData.entrancePickup, "vrr.label.name", houseData.description, true); + setEntityData(houseData.entrancePickup, "vrr.label.name", houseData.description, true); setEntityData(houseData.entrancePickup, "vrr.label.locked", houseData.locked, true); if(houseData.buyPrice > 0) { setEntityData(houseData.entrancePickup, "vrr.label.price", houseData.buyPrice, true); diff --git a/scripts/server/item.js b/scripts/server/item.js index f80b2de9..763eb535 100644 --- a/scripts/server/item.js +++ b/scripts/server/item.js @@ -1383,13 +1383,9 @@ function setAllItemTypeDataIndexes() { // =========================================================================== function cacheAllGroundItems() { - getServerData().groundItemCache = []; - - for(let i in getServerData().items) { - if(getServerData().items[i].ownerType == VRR_ITEM_OWNER_GROUND) { - getServerData().groundItemCache.push(i); - } - } + clearArray(getServerData().groundItemCache); + getServerData().groundItemCache = getServerData().items.filter(item => item.ownerType == VRR_ITEM_OWNER_GROUND); + getServerData().groundPlantCache = getServerData().items.filter(item => item.ownerType == VRR_ITEM_OWNER_PLANT); } // =========================================================================== @@ -1425,19 +1421,11 @@ function cachePlayerHotBarItems(client) { return false; } - for(let i = 0 ; i < 9 ; i++) { - getPlayerData(client).hotBarItems[i] = -1; - } + clearArray(getPlayerData(client).hotBarItems); + getPlayerData(client).hotBarItems = getServerData().items.filter(item => item.ownerType == VRR_ITEM_OWNER_PLAYER && item.ownerId == getPlayerCurrentSubAccount(client).databaseId); - for(let i in getServerData().items) { - if(getItemData(i).ownerType == VRR_ITEM_OWNER_PLAYER) { - if(getItemData(i).ownerId == getPlayerCurrentSubAccount(client).databaseId) { - let firstSlot = getPlayerFirstEmptyHotBarSlot(client); - if(firstSlot != -1) { - getPlayerData(client).hotBarItems[firstSlot] = i; - } - } - } + if(getPlayerData(client).hotBarItems.length < getGlobalConfig().maxPlayerItemSlots) { + getPlayerData(client).hotBarItems.concat(Array(getGlobalConfig().maxPlayerItemSlots-getPlayerData(client).hotBarItems.length).fill(-1)); } }