Use despawn functions + house labels
This commit is contained in:
@@ -213,7 +213,16 @@ function createHouseCommand(command, params, client) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
createHouse(params, getPlayerPosition(client), toVector3(0.0, 0.0, 0.0), getGameConfig().pickupModels[getGame()].House, -1, getPlayerInterior(client), getPlayerDimension(client), getPlayerData(client).interiorScene);
|
createHouse(
|
||||||
|
params,
|
||||||
|
getPlayerPosition(client),
|
||||||
|
toVector3(0.0, 0.0, 0.0),
|
||||||
|
(isGameFeatureSupported("pickup")) ? getGameConfig().pickupModels[getGame()].House : -1,
|
||||||
|
-1,
|
||||||
|
getPlayerInterior(client),
|
||||||
|
getPlayerDimension(client),
|
||||||
|
getPlayerData(client).interiorScene
|
||||||
|
);
|
||||||
messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} created house: {houseGreen}${params}`, true);
|
messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} created house: {houseGreen}${params}`, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,7 +470,7 @@ function setHousePickupCommand(command, params, client) {
|
|||||||
getHouseData(houseId).entrancePickupModel = toInteger(typeParam);
|
getHouseData(houseId).entrancePickupModel = toInteger(typeParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteHouseEntrancePickup(houseId);
|
despawnHouseEntrancePickup(houseId);
|
||||||
spawnHouseEntrancePickup(houseId);
|
spawnHouseEntrancePickup(houseId);
|
||||||
|
|
||||||
getHouseData(houseId).needsSaved = true;
|
getHouseData(houseId).needsSaved = true;
|
||||||
@@ -525,8 +534,8 @@ function setHouseInteriorTypeCommand(command, params, client) {
|
|||||||
getHouseData(houseId).hasInterior = true;
|
getHouseData(houseId).hasInterior = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteHouseEntrancePickup(houseId);
|
despawnHouseEntrancePickup(houseId);
|
||||||
deleteHouseExitPickup(houseId);
|
despawnHouseExitPickup(houseId);
|
||||||
spawnHouseEntrancePickup(houseId);
|
spawnHouseEntrancePickup(houseId);
|
||||||
spawnHouseExitPickup(houseId);
|
spawnHouseExitPickup(houseId);
|
||||||
|
|
||||||
@@ -652,8 +661,8 @@ function moveHouseExitCommand(command, params, client) {
|
|||||||
//createAllHouseBlips(houseId);
|
//createAllHouseBlips(houseId);
|
||||||
//createAllHousePickups(houseId);
|
//createAllHousePickups(houseId);
|
||||||
|
|
||||||
deleteHouseExitPickup(houseId);
|
despawnHouseExitPickup(houseId);
|
||||||
deleteHouseExitBlip(houseId);
|
despawnHouseExitBlip(houseId);
|
||||||
spawnHouseExitPickup(houseId);
|
spawnHouseExitPickup(houseId);
|
||||||
spawnHouseExitBlip(houseId);
|
spawnHouseExitBlip(houseId);
|
||||||
|
|
||||||
@@ -714,11 +723,11 @@ function deleteHouse(houseIndex, whoDeleted = 0) {
|
|||||||
disconnectFromDatabase(dbConnection);
|
disconnectFromDatabase(dbConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteHouseEntrancePickup(houseIndex);
|
despawnHouseEntrancePickup(houseIndex);
|
||||||
deleteHouseExitPickup(houseIndex);
|
despawnHouseExitPickup(houseIndex);
|
||||||
|
|
||||||
deleteHouseEntranceBlip(houseIndex);
|
despawnHouseEntranceBlip(houseIndex);
|
||||||
deleteHouseExitBlip(houseIndex);
|
despawnHouseExitBlip(houseIndex);
|
||||||
|
|
||||||
removePlayersFromHouse(houseIndex);
|
removePlayersFromHouse(houseIndex);
|
||||||
|
|
||||||
@@ -1049,35 +1058,45 @@ function spawnHouseEntrancePickup(houseId) {
|
|||||||
// return false;
|
// return false;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (houseData.entrancePickupModel == -1) {
|
logToConsole(LOG_VERBOSE, `[V.RP.House]: Creating entrance pickup for house ${houseData.description} (${houseData.databaseId})`);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (areServerElementsSupported() && getGame() != V_GAME_MAFIA_ONE && getGame() != V_GAME_GTA_IV) {
|
if (areServerElementsSupported() && getGame() != V_GAME_MAFIA_ONE && getGame() != V_GAME_GTA_IV) {
|
||||||
let entrancePickup = null;
|
let entrancePickup = null;
|
||||||
if (isGameFeatureSupported("pickup")) {
|
if (isGameFeatureSupported("pickup")) {
|
||||||
let pickupModelId = getGameConfig().pickupModels[getGame()].House;
|
let pickupModelId = getGameConfig().pickupModels[getGame()].House;
|
||||||
|
|
||||||
|
if (houseData.entrancePickupModel == -1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (getServerData().houses[houseId].entrancePickupModel != 0) {
|
if (getServerData().houses[houseId].entrancePickupModel != 0) {
|
||||||
pickupModelId = getHouseData(houseId).entrancePickupModel;
|
pickupModelId = getHouseData(houseId).entrancePickupModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
entrancePickup = createGamePickup(pickupModelId, houseData.entrancePosition, getGameConfig().pickupTypes[getGame()].house);
|
entrancePickup = createGamePickup(pickupModelId, houseData.entrancePosition, getGameConfig().pickupTypes[getGame()].house);
|
||||||
} else if (isGameFeatureSupported("dummyElement")) {
|
|
||||||
entrancePickup = createGameDummyElement(houseData.exitPosition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entrancePickup != null) {
|
if (entrancePickup != null) {
|
||||||
setElementOnAllDimensions(entrancePickup, false);
|
if (houseData.entranceDimension != -1) {
|
||||||
setElementDimension(entrancePickup, getHouseData(houseId).entranceDimension);
|
setElementDimension(entrancePickup, houseData.entranceDimension);
|
||||||
setElementStreamInDistance(entrancePickup, getGlobalConfig().housePickupStreamInDistance);
|
setElementOnAllDimensions(entrancePickup, false);
|
||||||
setElementStreamOutDistance(entrancePickup, getGlobalConfig().housePickupStreamOutDistance);
|
} else {
|
||||||
setElementTransient(entrancePickup, false);
|
setElementOnAllDimensions(entrancePickup, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getGlobalConfig().housePickupStreamInDistance == -1 || getGlobalConfig().housePickupStreamOutDistance == -1) {
|
||||||
|
entrancePickup.netFlags.distanceStreaming = false;
|
||||||
|
} else {
|
||||||
|
setElementStreamInDistance(entrancePickup, getGlobalConfig().housePickupStreamInDistance);
|
||||||
|
setElementStreamOutDistance(entrancePickup, getGlobalConfig().housePickupStreamInDistance);
|
||||||
|
}
|
||||||
|
setElementTransient(entrancePickup, false);
|
||||||
getHouseData(houseId).entrancePickup = entrancePickup;
|
getHouseData(houseId).entrancePickup = entrancePickup;
|
||||||
updateHousePickupLabelData(houseId);
|
updateHousePickupLabelData(houseId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateHousePickupLabelData(houseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -1482,7 +1501,7 @@ function doesHouseHaveInterior(houseId) {
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function deleteHouseEntrancePickup(houseId) {
|
function despawnHouseEntrancePickup(houseId) {
|
||||||
if (!areServerElementsSupported()) {
|
if (!areServerElementsSupported()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1496,7 +1515,7 @@ function deleteHouseEntrancePickup(houseId) {
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function deleteHouseExitPickup(houseId) {
|
function despawnHouseExitPickup(houseId) {
|
||||||
if (!areServerElementsSupported()) {
|
if (!areServerElementsSupported()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1510,7 +1529,7 @@ function deleteHouseExitPickup(houseId) {
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function deleteHouseEntranceBlip(houseId) {
|
function despawnHouseEntranceBlip(houseId) {
|
||||||
if (!areServerElementsSupported()) {
|
if (!areServerElementsSupported()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1524,7 +1543,7 @@ function deleteHouseEntranceBlip(houseId) {
|
|||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function deleteHouseExitBlip(houseId) {
|
function despawnHouseExitBlip(houseId) {
|
||||||
if (!areServerElementsSupported()) {
|
if (!areServerElementsSupported()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1556,10 +1575,10 @@ function reloadAllHousesCommand(command, params, client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (let i in getServerData().houses) {
|
for (let i in getServerData().houses) {
|
||||||
deleteHouseExitBlip(i);
|
despawnHouseExitBlip(i);
|
||||||
deleteHouseEntranceBlip(i);
|
despawnHouseEntranceBlip(i);
|
||||||
deleteHouseExitPickup(i);
|
despawnHouseExitPickup(i);
|
||||||
deleteHouseEntrancePickup(i);
|
despawnHouseEntrancePickup(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
clearArray(getServerData().houses);
|
clearArray(getServerData().houses);
|
||||||
@@ -1700,8 +1719,8 @@ function canPlayerLockUnlockHouse(client, houseId) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function resetHousePickups(houseId) {
|
function resetHousePickups(houseId) {
|
||||||
deleteHouseEntrancePickup(houseId);
|
despawnHouseEntrancePickup(houseId);
|
||||||
deleteHouseExitPickup(houseId);
|
despawnHouseExitPickup(houseId);
|
||||||
spawnHouseEntrancePickup(houseId);
|
spawnHouseEntrancePickup(houseId);
|
||||||
spawnHouseExitPickup(houseId);
|
spawnHouseExitPickup(houseId);
|
||||||
}
|
}
|
||||||
@@ -1709,8 +1728,8 @@ function resetHousePickups(houseId) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function resetHouseBlips(houseId) {
|
function resetHouseBlips(houseId) {
|
||||||
deleteHouseEntranceBlip(houseId);
|
despawnHouseEntranceBlip(houseId);
|
||||||
deleteHouseExitBlip(houseId);
|
despawnHouseExitBlip(houseId);
|
||||||
spawnHouseEntranceBlip(houseId);
|
spawnHouseEntranceBlip(houseId);
|
||||||
spawnHouseExitBlip(houseId);
|
spawnHouseExitBlip(houseId);
|
||||||
}
|
}
|
||||||
@@ -1778,13 +1797,17 @@ function getHouseFromParams(params) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function updateHousePickupLabelData(houseId) {
|
function updateHousePickupLabelData(houseId) {
|
||||||
|
let houseData = getHouseData(houseId);
|
||||||
|
|
||||||
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
|
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
|
||||||
sendHouseToPlayer(null, houseId, getHouseData(houseId).description, getHouseData(houseId).entrancePosition, getHouseEntranceBlipModelForNetworkEvent(houseId), getHouseEntrancePickupModelForNetworkEvent(houseId), getHouseData(houseId).buyPrice, getHouseData(houseId).rentPrice, getHouseData(houseId).hasInterior, getHouseData(houseId).locked);
|
if (houseData == false) {
|
||||||
|
sendHouseToPlayer(null, houseId, true, "", false, -1, -1, 0, 0, false, false, false);
|
||||||
|
} else {
|
||||||
|
sendHouseToPlayer(null, houseId, false, houseData.description, houseData.entrancePosition, getHouseEntranceBlipModelForNetworkEvent(houseId), getHouseEntrancePickupModelForNetworkEvent(houseId), houseData.buyPrice, houseData.rentPrice, houseData.hasInterior, houseData.locked);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let houseData = getHouseData(houseId);
|
|
||||||
|
|
||||||
if (houseData.entrancePickup != null) {
|
if (houseData.entrancePickup != null) {
|
||||||
setEntityData(houseData.entrancePickup, "v.rp.owner.type", V_PICKUP_HOUSE_ENTRANCE, false);
|
setEntityData(houseData.entrancePickup, "v.rp.owner.type", V_PICKUP_HOUSE_ENTRANCE, false);
|
||||||
setEntityData(houseData.entrancePickup, "v.rp.owner.id", houseId, false);
|
setEntityData(houseData.entrancePickup, "v.rp.owner.id", houseId, false);
|
||||||
@@ -1813,8 +1836,8 @@ function updateHousePickupLabelData(houseId) {
|
|||||||
|
|
||||||
function deleteAllHouseBlips() {
|
function deleteAllHouseBlips() {
|
||||||
for (let i in getServerData().houses) {
|
for (let i in getServerData().houses) {
|
||||||
deleteHouseEntranceBlip(i);
|
despawnHouseEntranceBlip(i);
|
||||||
deleteHouseExitBlip(i);
|
despawnHouseExitBlip(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1822,21 +1845,21 @@ function deleteAllHouseBlips() {
|
|||||||
|
|
||||||
function deleteAllHousePickups() {
|
function deleteAllHousePickups() {
|
||||||
for (let i in getServerData().houses) {
|
for (let i in getServerData().houses) {
|
||||||
deleteHouseEntrancePickup(i);
|
despawnHouseEntrancePickup(i);
|
||||||
deleteHouseExitPickup(i);
|
despawnHouseExitPickup(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function createHouseBlips(houseId) {
|
function spawnHouseBlips(houseId) {
|
||||||
spawnHouseEntranceBlip(houseId);
|
spawnHouseEntranceBlip(houseId);
|
||||||
spawnHouseExitBlip(houseId);
|
spawnHouseExitBlip(houseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function createHousePickups(houseId) {
|
function spawnHousePickups(houseId) {
|
||||||
spawnHouseEntrancePickup(houseId);
|
spawnHouseEntrancePickup(houseId);
|
||||||
spawnHouseExitPickup(houseId);
|
spawnHouseExitPickup(houseId);
|
||||||
}
|
}
|
||||||
@@ -1891,3 +1914,48 @@ function getHouseEntrancePickupModelForNetworkEvent(houseIndex) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getNearbyBusinessesCommand(command, params, client) {
|
||||||
|
let distance = 10.0;
|
||||||
|
|
||||||
|
if (!areParamsEmpty(params)) {
|
||||||
|
distance = getParam(params, " ", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isNaN(distance)) {
|
||||||
|
messagePlayerError(client, "The distance must be a number!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
distance = toFloat(distance);
|
||||||
|
|
||||||
|
if (distance <= 0) {
|
||||||
|
messagePlayerError(client, "The distance must be more than 0!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let nearbyHouses = getHousesInRange(getPlayerPosition(client), distance);
|
||||||
|
|
||||||
|
if (nearbyHouses.length == 0) {
|
||||||
|
messagePlayerAlert(client, getLocaleString(client, "NoHousesWithinRange", distance));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let housesList = nearbyHouses.map(function (x) {
|
||||||
|
return `{chatBoxListIndex}${x.index}: {MAINCOLOUR}${x.description} {mediumGrey}(${toFloat(getDistance(getPlayerPosition(client), x.entrancePosition)).toFixed(2)} ${toLowerCase(getLocaleString(client, "Meters"))} ${toLowerCase(getGroupedLocaleString(client, "CardinalDirections", getCardinalDirectionName(getCardinalDirection(getPlayerPosition(client), x.entrancePosition))))})`;
|
||||||
|
});
|
||||||
|
let chunkedList = splitArrayIntoChunks(housesList, 4);
|
||||||
|
|
||||||
|
messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderHousesInRangeList", `${distance} ${toLowerCase(getLocaleString(client, "Meters"))}`)));
|
||||||
|
for (let i in chunkedList) {
|
||||||
|
messagePlayerInfo(client, chunkedList[i].join(", "));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function getHousesInRange(position, distance) {
|
||||||
|
return getServerData().houses.filter((house) => getDistance(position, house.entrancePosition) <= distance);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
Reference in New Issue
Block a user