Cache business items before creating blips

This commit is contained in:
Vortrex
2021-04-23 18:15:49 -05:00
parent 017e37ebb3
commit 9c257a0be0

View File

@@ -12,6 +12,8 @@ function initBusinessScript() {
logToConsole(LOG_INFO, "[Asshat.Business]: Initializing business script ..."); logToConsole(LOG_INFO, "[Asshat.Business]: Initializing business script ...");
getServerData().businesses = loadBusinessesFromDatabase(); getServerData().businesses = loadBusinessesFromDatabase();
cacheAllBusinessItems();
if(getServerConfig().createBusinessPickups) { if(getServerConfig().createBusinessPickups) {
createAllBusinessPickups(); createAllBusinessPickups();
} }
@@ -21,7 +23,7 @@ function initBusinessScript() {
} }
setAllBusinessIndexes(); setAllBusinessIndexes();
cacheAllBusinessItems();
logToConsole(LOG_INFO, "[Asshat.Business]: Business script initialized successfully!"); logToConsole(LOG_INFO, "[Asshat.Business]: Business script initialized successfully!");
return true; return true;
} }
@@ -509,25 +511,26 @@ function giveDefaultItemsToBusinessCommand(command, params, client) {
return false; return false;
} }
if(isNaN(typeParam)) { if(!isNaN(typeParam)) {
if(isNull(getGameConfig().defaultBusinessItems[getServerGame()][typeParam])) {
messagePlayerError(client, "Invalid business items type! Use a business items type name");
messagePlayerInfo(client, `Blip Types: [#AAAAAA]${Object.keys(getGameConfig().defaultBusinessItems[getServerGame()]).join(", ")}`)
return false;
}
for(let i in getGameConfig().defaultBusinessItems[getServerGame()][typeParam]) {
let itemTypeId = getItemTypeFromParams(getGameConfig().defaultBusinessItems[getServerGame()][typeParam][i][0]);
let itemTypeData = getItemTypeData(itemTypeId);
if(itemTypeData) {
let newItemIndex = createItem(itemTypeId, itemTypeData.orderValue, AG_ITEM_OWNER_BIZFLOOR, getBusinessData(businessId).databaseId, getGameConfig().defaultBusinessItems[getServerGame()][typeParam][i][1]);
getItemData(newItemIndex).buyPrice = applyServerInflationMultiplier(itemTypeData.orderPrice)*getGameConfig().defaultBusinessItems[getServerGame()][typeParam][i][2];
}
}
cacheBusinessItems(businessId);
} }
if(isNull(getGameConfig().defaultBusinessItems[getServerGame()][typeParam])) {
messagePlayerError(client, "Invalid business items type! Use a business items type name");
messagePlayerInfo(client, `Blip Types: [#AAAAAA]${Object.keys(getGameConfig().defaultBusinessItems[getServerGame()]).join(", ")}`)
return false;
}
for(let i in getGameConfig().defaultBusinessItems[getServerGame()][typeParam]) {
let itemTypeId = getItemTypeFromParams(getGameConfig().defaultBusinessItems[getServerGame()][typeParam][i][0]);
let itemTypeData = getItemTypeData(itemTypeId);
if(itemTypeData) {
let newItemIndex = createItem(itemTypeId, itemTypeData.orderValue, AG_ITEM_OWNER_BIZFLOOR, getBusinessData(businessId).databaseId, getGameConfig().defaultBusinessItems[getServerGame()][typeParam][i][1]);
getItemData(newItemIndex).buyPrice = applyServerInflationMultiplier(itemTypeData.orderPrice)*getGameConfig().defaultBusinessItems[getServerGame()][typeParam][i][2];
}
}
cacheBusinessItems(businessId);
updateBusinessPickupLabelData(businessId);
messageAdmins(`[#AAAAAA]${client.name} [#FFFFFF]gave business [#0099FF]${getBusinessData(businessId).name} [#FFFFFF]the default items for ${toLowerCase(typeParam)}`); messageAdmins(`[#AAAAAA]${client.name} [#FFFFFF]gave business [#0099FF]${getBusinessData(businessId).name} [#FFFFFF]the default items for ${toLowerCase(typeParam)}`);
} }
@@ -740,6 +743,35 @@ function viewBusinessTillAmountCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function buyBusinessCommand(command, params, client) {
let businessId = (isPlayerInAnyBusiness(client)) ? getPlayerBusiness(client) : getClosestBusinessEntrance(getPlayerPosition(client));
if(!getBusinessData(businessId)) {
messagePlayerError(client, "Business not found!");
return false;
}
if(getBusinessData(businessId).buyPrice <= 0) {
messagePlayerError(client, `Business [#0099FF]${getBusinessData(businessId).name} [#FFFFFF]is not for sale!`);
return false;
}
if(getPlayerCurrentSubAccount(client).cash < getBusinessData(businessId).buyPrice) {
messagePlayerError(client, `You don't have enough money to buy business [#0099FF]${getBusinessData(businessId).name}!`);
return false;
}
getBusinessData(client).ownerType = AG_BIZOWNER_PLAYER;
getBusinessData(client).ownerId = getPlayerCurrentSubAccount(client).databaseId;
getBusinessData(client).buyPrice = 0;
updateBusinessPickupLabelData(businessId);
messagePlayerSuccess(client, `Business [#0099FF]${getBusinessData(businessId).name} [#FFFFFF]till has [#AAAAAA]$${getBusinessData(businessId).till}`);
}
// ===========================================================================
function moveBusinessEntranceCommand(command, params, client) { function moveBusinessEntranceCommand(command, params, client) {
let businessId = toInteger((isPlayerInAnyBusiness(client)) ? getPlayerBusiness(client) : getClosestBusinessEntrance(getPlayerPosition(client))); let businessId = toInteger((isPlayerInAnyBusiness(client)) ? getPlayerBusiness(client) : getClosestBusinessEntrance(getPlayerPosition(client)));
@@ -817,7 +849,7 @@ function getClosestBusinessEntrance(position) {
// =========================================================================== // ===========================================================================
function isPlayerInAnyBusiness(client) { function isPlayerInAnyBusiness(client) {
if(doesEntityDataExist(client, "ag.inBusiness")) { if(getPlayerData(client).inBusiness > 0) {
return true; return true;
} }
@@ -827,8 +859,8 @@ function isPlayerInAnyBusiness(client) {
// =========================================================================== // ===========================================================================
function getPlayerBusiness(client) { function getPlayerBusiness(client) {
if(doesEntityDataExist(client, "ag.inBusiness")) { if(getPlayerData(client).inBusiness > 0) {
return getEntityData(client, "ag.inBusiness"); return getPlayerData(client).inBusiness;
} }
return false; return false;
@@ -979,14 +1011,7 @@ function createBusinessEntrancePickup(businessId) {
getBusinessData(businessId).entrancePickup = gta.createPickup(pickupModelId, getBusinessData(businessId).entrancePosition); getBusinessData(businessId).entrancePickup = gta.createPickup(pickupModelId, getBusinessData(businessId).entrancePosition);
getBusinessData(businessId).entrancePickup.onAllDimensions = false; getBusinessData(businessId).entrancePickup.onAllDimensions = false;
getBusinessData(businessId).entrancePickup.dimension = getBusinessData(businessId).entranceDimension; getBusinessData(businessId).entrancePickup.dimension = getBusinessData(businessId).entranceDimension;
setEntityData(getBusinessData(businessId).entrancePickup, "ag.owner.type", AG_PICKUP_BUSINESS_ENTRANCE, false); updateBusinessPickupLabelData(businessId);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.owner.id", businessId, false);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.type", AG_LABEL_BUSINESS, true);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.name", getBusinessData(businessId).name, true);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.locked", getBusinessData(businessId).locked, true);
if(getBusinessData(businessId).buyPrice > 0) {
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.price", getBusinessData(businessId).buyPrice, true);
}
addToWorld(getBusinessData(businessId).entrancePickup); addToWorld(getBusinessData(businessId).entrancePickup);
} }
} }
@@ -1026,9 +1051,6 @@ function createBusinessExitPickup(businessId) {
getBusinessData(businessId).exitPickup.onAllDimensions = false; getBusinessData(businessId).exitPickup.onAllDimensions = false;
getBusinessData(businessId).exitPickup.dimension = getBusinessData(businessId).exitDimension; getBusinessData(businessId).exitPickup.dimension = getBusinessData(businessId).exitDimension;
//getBusinessData(businessId).exitPickup.interior = getBusinessData(businessId).exitInterior; //getBusinessData(businessId).exitPickup.interior = getBusinessData(businessId).exitInterior;
setEntityData(getBusinessData(businessId).exitPickup, "ag.owner.type", AG_PICKUP_BUSINESS_EXIT, false);
setEntityData(getBusinessData(businessId).exitPickup, "ag.owner.id", businessId, false);
setEntityData(getBusinessData(businessId).exitPickup, "ag.label.type", AG_LABEL_EXIT, true);
addToWorld(getBusinessData(businessId).exitPickup); addToWorld(getBusinessData(businessId).exitPickup);
} }
} }
@@ -1088,8 +1110,8 @@ function deleteBusiness(businessId, deletedBy = 0) {
function removePlayersFromBusiness(businessId) { function removePlayersFromBusiness(businessId) {
getClients().forEach(function(client) { getClients().forEach(function(client) {
if(doesBusinessHaveInterior(businessId)) { if(doesBusinessHaveInterior(businessId)) {
if(doesEntityDataExist(client, "ag.inBusiness")) { if(isPlayerInAnyBusiness(client)) {
if(getEntityData(client, "ag.inBusiness") == businessId) { if(getPlayerBusiness(client) == businessId) {
exitBusiness(client); exitBusiness(client);
} }
} }
@@ -1108,13 +1130,13 @@ function removePlayerFromBusinesses(client) {
// =========================================================================== // ===========================================================================
function exitBusiness(client) { function exitBusiness(client) {
let businessId = getEntityData(client, "ag.inBusiness"); let businessId = getPlayerData(client).inBusiness;
if(isPlayerSpawned(client)) { if(isPlayerSpawned(client)) {
setPlayerInterior(client, getServerData().businesses[businessId].entranceInterior); setPlayerInterior(client, getServerData().businesses[businessId].entranceInterior);
setPlayerDimension(client, client, getServerData().businesses[businessId].entranceDimension); setPlayerDimension(client, client, getServerData().businesses[businessId].entranceDimension);
setPlayerPosition(client, client, getServerData().businesses[businessId].entrancePosition); setPlayerPosition(client, client, getServerData().businesses[businessId].entrancePosition);
} }
removeEntityData(client, "ag.inBusiness"); getPlayerData(client).inBusiness = 0;
} }
// =========================================================================== // ===========================================================================
@@ -1489,3 +1511,35 @@ function cacheBusinessItems(businessId) {
} }
// =========================================================================== // ===========================================================================
function getHouseIdFromDatabaseId(databaseId) {
for(let i in getServerData().businesses) {
if(getBusinessData(i).databaseId == databaseId) {
return i;
}
}
return false;
}
// ===========================================================================
function updateBusinessPickupLabelData(businessId) {
setEntityData(getBusinessData(businessId).entrancePickup, "ag.owner.type", AG_PICKUP_BUSINESS_ENTRANCE, false);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.owner.id", businessId, false);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.type", AG_LABEL_BUSINESS, true);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.name", getBusinessData(businessId).name, true);
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.locked", getBusinessData(businessId).locked, true);
if(getBusinessData(businessId).floorItemCache.length > 0) {
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.buyhelp", true, true);
}
if(getBusinessData(businessId).buyPrice > 0) {
setEntityData(getBusinessData(businessId).entrancePickup, "ag.label.price", getBusinessData(businessId).buyPrice, true);
}
setEntityData(getBusinessData(businessId).exitPickup, "ag.owner.type", AG_PICKUP_BUSINESS_EXIT, false);
setEntityData(getBusinessData(businessId).exitPickup, "ag.owner.id", businessId, false);
setEntityData(getBusinessData(businessId).exitPickup, "ag.label.type", AG_LABEL_EXIT, true);
}
// ===========================================================================