ed
|
@ -1,14 +0,0 @@
|
||||||
fx_version 'cerulean'
|
|
||||||
game 'gta5'
|
|
||||||
lua54 'yes'
|
|
||||||
|
|
||||||
this_is_a_map "yes"
|
|
||||||
|
|
||||||
data_file 'AUDIO_GAMEDATA' 'audio/cinecar_audio_door_game.dat'
|
|
||||||
|
|
||||||
files {
|
|
||||||
'audio/cinecar_audio_door_game.dat151.rel',
|
|
||||||
'stream/*'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependency '/assetpacks'
|
|
|
@ -1,180 +0,0 @@
|
||||||
ALTER TABLE
|
|
||||||
`users`
|
|
||||||
ADD
|
|
||||||
IF NOT EXISTS `inside` VARCHAR(50) NULL DEFAULT '';
|
|
||||||
|
|
||||||
INSERT IGNORE INTO
|
|
||||||
`addon_inventory` (name, label, shared)
|
|
||||||
VALUES
|
|
||||||
('propery', 'Property', 0);
|
|
||||||
|
|
||||||
INSERT IGNORE INTO
|
|
||||||
`datastore` (name, label, shared)
|
|
||||||
VALUES
|
|
||||||
('propery', 'Property', 0);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `houselocations` (
|
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`name` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'latin1_swedish_ci',
|
|
||||||
`label` VARCHAR(255) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`coords` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`owned` TINYINT(2) NULL DEFAULT NULL,
|
|
||||||
`price` INT(11) NULL DEFAULT NULL,
|
|
||||||
`defaultPrice` INT(11) NULL DEFAULT NULL,
|
|
||||||
`tier` TINYINT(2) NULL DEFAULT NULL,
|
|
||||||
`garage` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`garageShell` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`creator` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`mlo` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`ipl` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`console` INT(11) NULL DEFAULT NULL,
|
|
||||||
`board` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`for_sale` INT(11) NULL DEFAULT '1',
|
|
||||||
`extra_imgs` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`description` TEXT NOT NULL DEFAULT '' COLLATE 'latin1_swedish_ci',
|
|
||||||
`creatorJob` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`blip` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`upgrades` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`apartmentCount` INT(11) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`name`) USING BTREE,
|
|
||||||
INDEX `name` (`name`) USING BTREE,
|
|
||||||
INDEX `id` (`id`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='latin1_swedish_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=1
|
|
||||||
;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `player_houses` (
|
|
||||||
`id` INT(255) NOT NULL AUTO_INCREMENT,
|
|
||||||
`house` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`citizenid` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`owner` VARCHAR(46) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`keyholders` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`stash` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`outfit` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`logout` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`decorateStash` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`charge` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`credit` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`creditPrice` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`console` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`decorateCoords` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`rented` INT(11) NULL DEFAULT NULL,
|
|
||||||
`rentPrice` INT(11) NULL DEFAULT NULL,
|
|
||||||
`rentable` INT(11) NULL DEFAULT NULL,
|
|
||||||
`purchasable` INT(11) NULL DEFAULT NULL,
|
|
||||||
`vaultCodes` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
INDEX `house` (`house`) USING BTREE,
|
|
||||||
INDEX `owner` (`owner`) USING BTREE,
|
|
||||||
INDEX `citizenid` (`citizenid`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='utf8mb4_general_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=3
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_rents` (
|
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`house` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
|
|
||||||
`identifier` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
|
|
||||||
`payed` INT(11) NOT NULL DEFAULT '0',
|
|
||||||
`date` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) COLLATE = 'utf8mb4_general_ci' ENGINE = InnoDB AUTO_INCREMENT = 1;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_objects` (
|
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`creator` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'latin1_swedish_ci',
|
|
||||||
`model` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'latin1_swedish_ci',
|
|
||||||
`coords` TEXT NOT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`house` VARCHAR(80) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`construction` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`created` TIMESTAMP NULL DEFAULT current_timestamp(),
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='latin1_swedish_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=1
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `house_objects`
|
|
||||||
ADD IF NOT EXISTS `construction` VARCHAR(50) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `created` TIMESTAMP NULL DEFAULT current_timestamp()
|
|
||||||
;
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `house_plants`;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_plants` (
|
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`building` varchar(50) DEFAULT NULL,
|
|
||||||
`stage` varchar(50) DEFAULT 'stage-a',
|
|
||||||
`sort` varchar(50) DEFAULT NULL,
|
|
||||||
`gender` varchar(50) DEFAULT NULL,
|
|
||||||
`food` int(11) DEFAULT 100,
|
|
||||||
`health` int(11) DEFAULT 100,
|
|
||||||
`progress` int(11) DEFAULT 0,
|
|
||||||
`coords` text DEFAULT NULL,
|
|
||||||
`plantid` varchar(50) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
KEY `building` (`building`),
|
|
||||||
KEY `plantid` (`plantid`)
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 7123 DEFAULT CHARSET = utf8mb4;
|
|
||||||
|
|
||||||
ALTER TABLE `player_houses`
|
|
||||||
CHANGE COLUMN IF EXISTS `identifier` `owner` VARCHAR(46) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci';
|
|
||||||
|
|
||||||
ALTER TABLE `houselocations`
|
|
||||||
ADD IF NOT EXISTS `blip` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `upgrades` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `apartmentCount` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `creatorGotMoney` TINYINT(1) NOT NULL DEFAULT '0'
|
|
||||||
;
|
|
||||||
|
|
||||||
ALTER TABLE `player_houses`
|
|
||||||
ADD IF NOT EXISTS `rented` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `rentPrice` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `rentable` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `purchasable` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `console` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `decorateCoords` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `vaultCodes` TEXT NULL DEFAULT NULL
|
|
||||||
;
|
|
||||||
|
|
||||||
ALTER TABLE `houselocations`
|
|
||||||
DROP IF EXISTS `houseID`
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `player_houses`
|
|
||||||
DROP IF EXISTS `houseID`,
|
|
||||||
DROP IF EXISTS `timer`,
|
|
||||||
DROP IF EXISTS `insideId`
|
|
||||||
;
|
|
||||||
|
|
||||||
ALTER TABLE `houselocations`
|
|
||||||
CHANGE COLUMN `tier` `tier` SMALLINT NULL DEFAULT NULL;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_decorations` (
|
|
||||||
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
||||||
`house` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
`creator` VARCHAR(70) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
|
|
||||||
`modelName` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
|
|
||||||
`coords` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
`rotation` TEXT NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',
|
|
||||||
`inStash` TINYINT(1) NOT NULL DEFAULT '0',
|
|
||||||
`inHouse` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
|
|
||||||
`uniq` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
`created` TIMESTAMP NULL DEFAULT NULL,
|
|
||||||
`lightData` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
INDEX `id` (`id`, `house`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='utf8mb3_general_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=1
|
|
||||||
;
|
|
|
@ -1,3 +0,0 @@
|
||||||
Please search for the items and follow all the documentation.
|
|
||||||
|
|
||||||
docs.quasar-store.com
|
|
|
@ -1,7 +0,0 @@
|
||||||
-- IF YOU ARE NOT UPDATING YOUR OLD QS-HOUSING, MAKE SURE YOU READ THIS SQL!
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `houselocations`;
|
|
||||||
DROP TABLE IF EXISTS `player_houses`;
|
|
||||||
DROP TABLE IF EXISTS `house_rents`;
|
|
||||||
DROP TABLE IF EXISTS `house_objects`;
|
|
||||||
DROP TABLE IF EXISTS `house_plants`;
|
|
|
@ -1,170 +0,0 @@
|
||||||
ALTER TABLE
|
|
||||||
`players`
|
|
||||||
ADD
|
|
||||||
IF NOT EXISTS `inside` VARCHAR(50) NULL DEFAULT '';
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `houselocations` (
|
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`name` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'latin1_swedish_ci',
|
|
||||||
`label` VARCHAR(255) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`coords` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`owned` TINYINT(2) NULL DEFAULT NULL,
|
|
||||||
`price` INT(11) NULL DEFAULT NULL,
|
|
||||||
`defaultPrice` INT(11) NULL DEFAULT NULL,
|
|
||||||
`tier` TINYINT(2) NULL DEFAULT NULL,
|
|
||||||
`garage` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`garageShell` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`creator` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`mlo` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`ipl` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`console` INT(11) NULL DEFAULT NULL,
|
|
||||||
`board` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`for_sale` INT(11) NULL DEFAULT '1',
|
|
||||||
`extra_imgs` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`description` TEXT NOT NULL DEFAULT '' COLLATE 'latin1_swedish_ci',
|
|
||||||
`creatorJob` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`blip` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`upgrades` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`apartmentCount` INT(11) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`name`) USING BTREE,
|
|
||||||
INDEX `name` (`name`) USING BTREE,
|
|
||||||
INDEX `id` (`id`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='latin1_swedish_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=1
|
|
||||||
;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `player_houses` (
|
|
||||||
`id` INT(255) NOT NULL AUTO_INCREMENT,
|
|
||||||
`house` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`citizenid` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`owner` VARCHAR(46) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`keyholders` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`stash` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`outfit` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`logout` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`decorateStash` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`charge` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`credit` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`creditPrice` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`console` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`decorateCoords` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
`rented` INT(11) NULL DEFAULT NULL,
|
|
||||||
`rentPrice` INT(11) NULL DEFAULT NULL,
|
|
||||||
`rentable` INT(11) NULL DEFAULT NULL,
|
|
||||||
`purchasable` INT(11) NULL DEFAULT NULL,
|
|
||||||
`vaultCodes` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
INDEX `house` (`house`) USING BTREE,
|
|
||||||
INDEX `owner` (`owner`) USING BTREE,
|
|
||||||
INDEX `citizenid` (`citizenid`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='utf8mb4_general_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=3
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_rents` (
|
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`house` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
|
|
||||||
`identifier` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
|
|
||||||
`payed` INT(11) NOT NULL DEFAULT '0',
|
|
||||||
`date` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) COLLATE = 'utf8mb4_general_ci' ENGINE = InnoDB AUTO_INCREMENT = 1;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_objects` (
|
|
||||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`creator` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'latin1_swedish_ci',
|
|
||||||
`model` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'latin1_swedish_ci',
|
|
||||||
`coords` TEXT NOT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`house` VARCHAR(80) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`construction` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',
|
|
||||||
`created` TIMESTAMP NULL DEFAULT current_timestamp(),
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='latin1_swedish_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=1
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `house_objects`
|
|
||||||
ADD IF NOT EXISTS `construction` VARCHAR(50) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `created` TIMESTAMP NULL DEFAULT current_timestamp()
|
|
||||||
;
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `house_plants`;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_plants` (
|
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`building` varchar(50) DEFAULT NULL,
|
|
||||||
`stage` varchar(50) DEFAULT 'stage-a',
|
|
||||||
`sort` varchar(50) DEFAULT NULL,
|
|
||||||
`gender` varchar(50) DEFAULT NULL,
|
|
||||||
`food` int(11) DEFAULT 100,
|
|
||||||
`health` int(11) DEFAULT 100,
|
|
||||||
`progress` int(11) DEFAULT 0,
|
|
||||||
`coords` text DEFAULT NULL,
|
|
||||||
`plantid` varchar(50) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
KEY `building` (`building`),
|
|
||||||
KEY `plantid` (`plantid`)
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 7123 DEFAULT CHARSET = utf8mb4;
|
|
||||||
|
|
||||||
ALTER TABLE `player_houses`
|
|
||||||
CHANGE COLUMN IF EXISTS `identifier` `owner` VARCHAR(46) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci';
|
|
||||||
|
|
||||||
ALTER TABLE `houselocations`
|
|
||||||
ADD IF NOT EXISTS `blip` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `upgrades` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `apartmentCount` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `creatorGotMoney` TINYINT(1) NOT NULL DEFAULT '0'
|
|
||||||
;
|
|
||||||
|
|
||||||
ALTER TABLE `player_houses`
|
|
||||||
ADD IF NOT EXISTS `rented` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `rentPrice` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `rentable` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `purchasable` INT(11) NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `console` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `decorateCoords` TEXT NULL DEFAULT NULL,
|
|
||||||
ADD IF NOT EXISTS `vaultCodes` TEXT NULL DEFAULT NULL
|
|
||||||
;
|
|
||||||
|
|
||||||
ALTER TABLE `houselocations`
|
|
||||||
DROP IF EXISTS `houseID`
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `player_houses`
|
|
||||||
DROP IF EXISTS `houseID`,
|
|
||||||
DROP IF EXISTS `timer`,
|
|
||||||
DROP IF EXISTS `insideId`
|
|
||||||
;
|
|
||||||
|
|
||||||
ALTER TABLE `houselocations`
|
|
||||||
CHANGE COLUMN `tier` `tier` SMALLINT NULL DEFAULT NULL;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `house_decorations` (
|
|
||||||
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
||||||
`house` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
`creator` VARCHAR(70) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
|
|
||||||
`modelName` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8mb3_general_ci',
|
|
||||||
`coords` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
`rotation` TEXT NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',
|
|
||||||
`inStash` TINYINT(1) NOT NULL DEFAULT '0',
|
|
||||||
`inHouse` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
|
|
||||||
`uniq` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
`created` TIMESTAMP NULL DEFAULT NULL,
|
|
||||||
`lightData` TEXT NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
INDEX `id` (`id`, `house`) USING BTREE
|
|
||||||
)
|
|
||||||
COLLATE='utf8mb3_general_ci'
|
|
||||||
ENGINE=InnoDB
|
|
||||||
AUTO_INCREMENT=1
|
|
||||||
;
|
|
BIN
resources/[housing]/brutal_housing/.fxap
Normal file
1
resources/[housing]/brutal_housing/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Please follow the instructions: https://docs.brutalscripts.com
|
241
resources/[housing]/brutal_housing/cl_utils.lua
Normal file
|
@ -0,0 +1,241 @@
|
||||||
|
ESX = Core
|
||||||
|
QBCore = Core
|
||||||
|
|
||||||
|
-- Buy here: (4€+VAT) https://store.brutalscripts.com
|
||||||
|
function notification(title, text, time, type)
|
||||||
|
if Config.BrutalNotify then
|
||||||
|
exports['brutal_notify']:SendAlert(title, text, time, type)
|
||||||
|
else
|
||||||
|
-- Put here your own notify and set the Config.BrutalNotify to false
|
||||||
|
SetNotificationTextEntry("STRING")
|
||||||
|
AddTextComponentString(text)
|
||||||
|
DrawNotification(0,1)
|
||||||
|
|
||||||
|
-- Default ESX Notify:
|
||||||
|
--TriggerEvent('esx:showNotification', text)
|
||||||
|
|
||||||
|
-- Default QB Notify:
|
||||||
|
--TriggerEvent('QBCore:Notify', text, 'info', 5000)
|
||||||
|
|
||||||
|
-- OKOK Notify:
|
||||||
|
-- exports['okokNotify']:Alert(title, text, time, type, false)
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function TextUIFunction(type, text)
|
||||||
|
if type == 'open' then
|
||||||
|
if Config.TextUI:lower() == 'ox_lib' then
|
||||||
|
lib.showTextUI(text)
|
||||||
|
elseif Config.TextUI:lower() == 'okoktextui' then
|
||||||
|
exports['okokTextUI']:Open(text, 'darkblue', 'right')
|
||||||
|
elseif Config.TextUI:lower() == 'esxtextui' then
|
||||||
|
ESX.TextUI(text)
|
||||||
|
elseif Config.TextUI:lower() == 'qbdrawtext' then
|
||||||
|
exports['qb-core']:DrawText(text,'left')
|
||||||
|
elseif Config.TextUI:lower() == 'brutal_textui' then
|
||||||
|
exports['brutal_textui']:Open(text, "blue")
|
||||||
|
end
|
||||||
|
elseif type == 'hide' then
|
||||||
|
if Config.TextUI:lower() == 'ox_lib' then
|
||||||
|
lib.hideTextUI()
|
||||||
|
elseif Config.TextUI:lower() == 'okoktextui' then
|
||||||
|
exports['okokTextUI']:Close()
|
||||||
|
elseif Config.TextUI:lower() == 'esxtextui' then
|
||||||
|
ESX.HideUI()
|
||||||
|
elseif Config.TextUI:lower() == 'qbdrawtext' then
|
||||||
|
exports['qb-core']:HideText()
|
||||||
|
elseif Config.TextUI:lower() == 'brutal_textui' then
|
||||||
|
exports['brutal_textui']:Close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AbleToOpenThePropertiesMenu()
|
||||||
|
local able = true
|
||||||
|
|
||||||
|
if Config.BrutalPoliceJob and GetResourceState("brutal_policejob") == "started" then
|
||||||
|
if exports.brutal_policejob:IsHandcuffed() then
|
||||||
|
able = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if Config['Core']:upper() == 'QBCORE' then
|
||||||
|
if GetResourceState("qb-policejob") == "started" then
|
||||||
|
if exports["qb-policejob"]:IsHandcuffed() then
|
||||||
|
able = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- other blacklists can be added.
|
||||||
|
|
||||||
|
return able
|
||||||
|
end
|
||||||
|
|
||||||
|
function OpenDressingMenu()
|
||||||
|
if Config.Wardrobe == 'ak47_clothing' then
|
||||||
|
exports['ak47_clothing']:openOutfit() -- if it doesn't work with this export use other event
|
||||||
|
-- TriggerEvent('ak47_clothing:openOutfitMenu') -- Use this only if the first export doesn't work, depend of you'r version
|
||||||
|
elseif Config.Wardrobe == 'codem_apperance' then
|
||||||
|
TriggerEvent('codem-apperance:OpenWardrobe')
|
||||||
|
elseif Config.Wardrobe == 'fivem_appearance' then
|
||||||
|
exports['fivem-appearance']:openWardrobe()
|
||||||
|
elseif Config.Wardrobe == 'illenium_appearance' then
|
||||||
|
TriggerEvent('illenium-appearance:client:openOutfitMenu')
|
||||||
|
elseif Config.Wardrobe == 'qb_clothing' then
|
||||||
|
TriggerEvent('qb-clothing:client:openOutfitMenu')
|
||||||
|
elseif Config.Wardrobe == 'raid_clothes' then
|
||||||
|
TriggerEvent('raid_clothes:openmenu')
|
||||||
|
elseif Config.Wardrobe == 'rcore_clothes' then
|
||||||
|
TriggerEvent('rcore_clothes:openOutfits')
|
||||||
|
elseif Config.Wardrobe == 'rcore_clothing' then
|
||||||
|
TriggerEvent('rcore_clothing:openChangingRoom')
|
||||||
|
elseif Config.Wardrobe == 'sleek_clothestore' then
|
||||||
|
exports['sleek-clothestore']:OpenWardrobe()
|
||||||
|
elseif Config.Wardrobe == 'tgiann_clothing' then
|
||||||
|
TriggerEvent('tgiann-clothing:openOutfitMenu')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function setPlayerSkin(skinTable)
|
||||||
|
if Config['Core']:upper() == 'ESX' then
|
||||||
|
TriggerEvent('skinchanger:loadSkin', skinTable.skin)
|
||||||
|
elseif Config['Core']:upper() == 'QBCORE' then
|
||||||
|
TriggerEvent("qb-clothes:loadSkin", false, tonumber(skinTable.model), skinTable.skin)
|
||||||
|
TriggerServerEvent("brutal_housing:server:qbcore-loadPlayerSkin", tonumber(skinTable.model), skinTable.skin)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MiniGames(type, propertyID)
|
||||||
|
if type == "raid" then
|
||||||
|
if GetResourceState("ps-ui") == "started" then
|
||||||
|
exports['ps-ui']:Circle(function(success)
|
||||||
|
TriggerEvent('brutal_housing:client:raidMinigame', propertyID, success)
|
||||||
|
end, 3, 10)
|
||||||
|
else
|
||||||
|
TriggerEvent('brutal_housing:client:raidMinigame', propertyID, true)
|
||||||
|
end
|
||||||
|
elseif type == "server-destroy" then
|
||||||
|
if GetResourceState("ps-ui") == "started" then
|
||||||
|
exports['ps-ui']:Scrambler(function(success)
|
||||||
|
TriggerEvent('brutal_housing:client:serverdestroy', propertyID, success)
|
||||||
|
end, "alphanumeric", 60, 2)
|
||||||
|
else
|
||||||
|
TriggerEvent('brutal_housing:client:serverdestroy', propertyID, true)
|
||||||
|
end
|
||||||
|
elseif type == "house-break-in-level_0" then
|
||||||
|
if GetResourceState("ps-ui") == "started" then
|
||||||
|
exports['ps-ui']:Scrambler(function(success)
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, success)
|
||||||
|
end, "alphanumeric", 60, 2)
|
||||||
|
else
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, true)
|
||||||
|
end
|
||||||
|
elseif type == "house-break-in-level_1" then
|
||||||
|
if GetResourceState("ps-ui") == "started" then
|
||||||
|
exports['ps-ui']:VarHack(function(success)
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, success)
|
||||||
|
end, 10, 30)
|
||||||
|
else
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, true)
|
||||||
|
end
|
||||||
|
elseif type == "house-break-in-level_2" then
|
||||||
|
if GetResourceState("ps-ui") == "started" then
|
||||||
|
exports['ps-ui']:Thermite(function(success)
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, success)
|
||||||
|
end, 30, 6, 10)
|
||||||
|
else
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, true)
|
||||||
|
end
|
||||||
|
elseif type == "house-break-in-level_3" then
|
||||||
|
if GetResourceState("ps-ui") == "started" then
|
||||||
|
exports['ps-ui']:Thermite(function(success)
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, success)
|
||||||
|
end, 30, 6, 10)
|
||||||
|
else
|
||||||
|
TriggerEvent('brutal_housing:client:breakInMinigame', propertyID, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function PoliceBurglarNotify(x,y,z, address)
|
||||||
|
if Config.BrutalPoliceJob and GetResourceState("brutal_policejob") == "started" then
|
||||||
|
TriggerServerEvent('brutal_policejob:server:citizencall', 'create', Config.Locales.BreakIn, {x,y,z}, address)
|
||||||
|
else
|
||||||
|
SendNotify(66)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function InventoryOpenFunction(propertyID, objectID)
|
||||||
|
if Config.Inventory:lower() == 'ox_inventory' then
|
||||||
|
if exports.ox_inventory:openInventory('stash', { id = "stash_"..propertyID.."_"..objectID}) == false then
|
||||||
|
TriggerServerEvent('brutal_housing:server:loadStash', propertyID, objectID)
|
||||||
|
exports.ox_inventory:openInventory('stash', { id = "stash_"..propertyID.."_"..objectID})
|
||||||
|
end
|
||||||
|
elseif Config.Inventory:lower() == 'qb_inventory_old' then
|
||||||
|
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..propertyID.."_"..objectID, {label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots})
|
||||||
|
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..propertyID.."_"..objectID)
|
||||||
|
elseif Config.Inventory:lower() == 'qb_inventory_new' then
|
||||||
|
TriggerServerEvent("brutal_housing:qb-inventory:server:OpenInventory", "stash_"..propertyID.."_"..objectID, {label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots})
|
||||||
|
elseif Config.Inventory:lower() == 'quasar_inventory' then
|
||||||
|
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..propertyID.."_"..objectID, { label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots })
|
||||||
|
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..propertyID.."_"..objectID)
|
||||||
|
elseif Config.Inventory:lower() == 'codem_inventory' then
|
||||||
|
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..propertyID.."_"..objectID, { label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots })
|
||||||
|
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..propertyID.."_"..objectID)
|
||||||
|
elseif Config.Inventory:lower() == 'chezza_inventory' then
|
||||||
|
TriggerEvent('inventory:openStorage', Config.Locales.Stash, "stash_"..propertyID.."_"..objectID, 1000, 1000)
|
||||||
|
elseif Config.Inventory:lower() == 'core_inventory' then
|
||||||
|
TriggerServerEvent('core_inventory:server:openInventory', "stash_"..propertyID.."_"..objectID, "big_storage")
|
||||||
|
elseif Config.Inventory:lower() == 'origen_inventory' then
|
||||||
|
exports.origen_inventory:openInventory("stash", "stash_"..propertyID.."_"..objectID, {label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots})
|
||||||
|
elseif Config.Inventory:lower() == 'ps-inventory' then
|
||||||
|
if GetResourceState('ps-inventory') == "started" then
|
||||||
|
TriggerServerEvent("ps-inventory:server:OpenInventory", "stash_"..propertyID.."_"..objectID, {label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots})
|
||||||
|
TriggerEvent("ps-inventory:client:SetCurrentStash", "stash_"..propertyID.."_"..objectID)
|
||||||
|
else
|
||||||
|
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..propertyID.."_"..objectID, {label = Config.Locales.Stash, maxweight = Config.Stash.Weight, slots = Config.Stash.Slots})
|
||||||
|
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..propertyID.."_"..objectID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
RegisterNetEvent('brutal_housing:client:utils:CreateVehicle')
|
||||||
|
AddEventHandler('brutal_housing:client:utils:CreateVehicle', function(Vehicle)
|
||||||
|
SetVehicleFuelLevel(Vehicle, 100.0)
|
||||||
|
DecorSetFloat(Vehicle, "_FUEL_LEVEL", GetVehicleFuelLevel(Vehicle))
|
||||||
|
|
||||||
|
if Config['Core']:upper() == 'QBCORE' then
|
||||||
|
TriggerEvent("vehiclekeys:client:SetOwner", QBCore.Functions.GetPlate(Vehicle))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
RegisterNetEvent('brutal_housing:client:utils:DeleteVehicle')
|
||||||
|
AddEventHandler('brutal_housing:client:utils:DeleteVehicle', function(Vehicle)
|
||||||
|
DeleteEntity(Vehicle)
|
||||||
|
end)
|
||||||
|
|
||||||
|
function OpenMenuUtil()
|
||||||
|
InMenu = true
|
||||||
|
SetNuiFocus(true, true)
|
||||||
|
|
||||||
|
Citizen.CreateThread(function()
|
||||||
|
while InMenu do
|
||||||
|
N_0xf4f2c0d4ee209e20() -- it's disable the AFK camera zoom
|
||||||
|
Citizen.Wait(15000)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
DisplayRadar(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
function DisableMinimap()
|
||||||
|
DisplayRadar(false)
|
||||||
|
-- Here you can add a trigger to hide your HUD system
|
||||||
|
end
|
||||||
|
|
||||||
|
function EnableMinimap()
|
||||||
|
DisplayRadar(true)
|
||||||
|
-- Here you can add a trigger to enable your HUD system
|
||||||
|
end
|
BIN
resources/[housing]/brutal_housing/client/client.lua
Normal file
BIN
resources/[housing]/brutal_housing/client/nui.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
-- Object placement system partially based on Object Gizmo by DemiAutomatic
|
||||||
|
-- Source: https://github.com/DemiAutomatic/object_gizmo
|
||||||
|
-- Licensed under the MIT License
|
|
@ -0,0 +1,155 @@
|
||||||
|
-- Credit: https://github.com/citizenfx/lua/blob/luaglm-dev/cfx/libs/scripts/examples/dataview.lua
|
||||||
|
local dataView = setmetatable({
|
||||||
|
EndBig = ">",
|
||||||
|
EndLittle = "<",
|
||||||
|
Types = {
|
||||||
|
Int8 = { code = "i1" },
|
||||||
|
Uint8 = { code = "I1" },
|
||||||
|
Int16 = { code = "i2" },
|
||||||
|
Uint16 = { code = "I2" },
|
||||||
|
Int32 = { code = "i4" },
|
||||||
|
Uint32 = { code = "I4" },
|
||||||
|
Int64 = { code = "i8" },
|
||||||
|
Uint64 = { code = "I8" },
|
||||||
|
Float32 = { code = "f", size = 4 }, -- a float (native size)
|
||||||
|
Float64 = { code = "d", size = 8 }, -- a double (native size)
|
||||||
|
|
||||||
|
LuaInt = { code = "j" }, -- a lua_Integer
|
||||||
|
UluaInt = { code = "J" }, -- a lua_Unsigned
|
||||||
|
LuaNum = { code = "n" }, -- a lua_Number
|
||||||
|
String = { code = "z", size = -1, }, -- zero terminated string
|
||||||
|
},
|
||||||
|
|
||||||
|
FixedTypes = {
|
||||||
|
String = { code = "c" }, -- a fixed-sized string with n bytes
|
||||||
|
Int = { code = "i" }, -- a signed int with n bytes
|
||||||
|
Uint = { code = "I" }, -- an unsigned int with n bytes
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
__call = function(_, length)
|
||||||
|
return dataView.ArrayBuffer(length)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
dataView.__index = dataView
|
||||||
|
|
||||||
|
--[[ Create an ArrayBuffer with a size in bytes --]]
|
||||||
|
function dataView.ArrayBuffer(length)
|
||||||
|
return setmetatable({
|
||||||
|
blob = string.blob(length),
|
||||||
|
length = length,
|
||||||
|
offset = 1,
|
||||||
|
cangrow = true,
|
||||||
|
}, dataView)
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[ Wrap a non-internalized string --]]
|
||||||
|
function dataView.Wrap(blob)
|
||||||
|
return setmetatable({
|
||||||
|
blob = blob,
|
||||||
|
length = blob:len(),
|
||||||
|
offset = 1,
|
||||||
|
cangrow = true,
|
||||||
|
}, dataView)
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[ Return the underlying bytebuffer --]]
|
||||||
|
function dataView:Buffer() return self.blob end
|
||||||
|
function dataView:ByteLength() return self.length end
|
||||||
|
function dataView:ByteOffset() return self.offset end
|
||||||
|
function dataView:SubView(offset, length)
|
||||||
|
return setmetatable({
|
||||||
|
blob = self.blob,
|
||||||
|
length = length or self.length,
|
||||||
|
offset = 1 + offset,
|
||||||
|
cangrow = false,
|
||||||
|
}, dataView)
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[ Return the Endianness format character --]]
|
||||||
|
function ef(big) return (big and dataView.EndBig) or dataView.EndLittle end
|
||||||
|
|
||||||
|
--[[ Helper function for setting fixed datatypes within a buffer --]]
|
||||||
|
function packblob(self, offset, value, code)
|
||||||
|
-- If cangrow is false the dataview represents a subview, i.e., a subset
|
||||||
|
-- of some other string view. Ensure the references are the same before
|
||||||
|
-- updating the subview
|
||||||
|
local packed = self.blob:blob_pack(offset, code, value)
|
||||||
|
if self.cangrow or packed == self.blob then
|
||||||
|
self.blob = packed
|
||||||
|
self.length = packed:len()
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
|
Create the API by using dataView.Types
|
||||||
|
--]]
|
||||||
|
for label,datatype in pairs(dataView.Types) do
|
||||||
|
if not datatype.size then -- cache fixed encoding size
|
||||||
|
datatype.size = string.packsize(datatype.code)
|
||||||
|
elseif datatype.size >= 0 and string.packsize(datatype.code) ~= datatype.size then
|
||||||
|
local msg = "Pack size of %s (%d) does not match cached length: (%d)"
|
||||||
|
error(msg:format(label, string.packsize(datatype.code), datatype.size))
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
dataView["Get" .. label] = function(self, offset, endian)
|
||||||
|
offset = offset or 0
|
||||||
|
if offset >= 0 then
|
||||||
|
local o = self.offset + offset
|
||||||
|
local v,_ = self.blob:blob_unpack(o, ef(endian) .. datatype.code)
|
||||||
|
return v
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
dataView["Set" .. label] = function(self, offset, value, endian)
|
||||||
|
if offset >= 0 and value then
|
||||||
|
local o = self.offset + offset
|
||||||
|
local v_size = (datatype.size < 0 and value:len()) or datatype.size
|
||||||
|
if self.cangrow or ((o + (v_size - 1)) <= self.length) then
|
||||||
|
if not packblob(self, o, value, ef(endian) .. datatype.code) then
|
||||||
|
error("cannot grow subview")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
error("cannot grow dataview")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for label,datatype in pairs(dataView.FixedTypes) do
|
||||||
|
datatype.size = -1 -- Ensure cached encoding size is invalidated
|
||||||
|
|
||||||
|
dataView["GetFixed" .. label] = function(self, offset, typelen, endian)
|
||||||
|
if offset >= 0 then
|
||||||
|
local o = self.offset + offset
|
||||||
|
if (o + (typelen - 1)) <= self.length then
|
||||||
|
local code = ef(endian) .. "c" .. tostring(typelen)
|
||||||
|
local v,_ = self.blob:blob_unpack(o, code)
|
||||||
|
return v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil -- Out of bounds
|
||||||
|
end
|
||||||
|
|
||||||
|
dataView["SetFixed" .. label] = function(self, offset, typelen, value, endian)
|
||||||
|
if offset >= 0 and value then
|
||||||
|
local o = self.offset + offset
|
||||||
|
if self.cangrow or ((o + (typelen - 1)) <= self.length) then
|
||||||
|
local code = ef(endian) .. "c" .. tostring(typelen)
|
||||||
|
if not packblob(self, o, value, code) then
|
||||||
|
error("cannot grow subview")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
error("cannot grow dataview")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return dataView
|
4
resources/[housing]/brutal_housing/client/vendor/freecam/INFO.txt
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
The original source code for freecam by Deltanic is available at this repository:
|
||||||
|
https://github.com/Deltanic/fivem-freecam/
|
||||||
|
|
||||||
|
This code contains modifications and performance improvements, and is re-released under the MIT license.
|
21
resources/[housing]/brutal_housing/client/vendor/freecam/LICENSE.txt
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Deltanic
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
BIN
resources/[housing]/brutal_housing/client/vendor/freecam/camera.lua
vendored
Normal file
BIN
resources/[housing]/brutal_housing/client/vendor/freecam/config.lua
vendored
Normal file
BIN
resources/[housing]/brutal_housing/client/vendor/freecam/main.lua
vendored
Normal file
BIN
resources/[housing]/brutal_housing/client/vendor/freecam/utils.lua
vendored
Normal file
417
resources/[housing]/brutal_housing/config.lua
Normal file
|
@ -0,0 +1,417 @@
|
||||||
|
----------------------------------------------------------------------------------------------
|
||||||
|
-------------------------------------| BRUTAL HOUSING :) |------------------------------------
|
||||||
|
----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--[[
|
||||||
|
Hi, thank you for buying our script, We are very grateful!
|
||||||
|
|
||||||
|
For help join our Discord server: https://discord.gg/85u2u5c8q9
|
||||||
|
More informations about the script: https://docs.brutalscripts.com
|
||||||
|
--]]
|
||||||
|
|
||||||
|
Config = {
|
||||||
|
Core = 'ESX', -- 'ESX' / 'QBCORE' | Other core setting on the 'core' folder.
|
||||||
|
VoiceSytem = 'pma-voice', -- "pma-voice" / "mumble" / "SaltyChat"
|
||||||
|
Inventory = 'ox_inventory', -- 'ox_inventory' / 'qb_inventory_old'/ 'qb_inventory_new' / 'quasar_inventory' / 'chezza_inventory' / 'codem_inventory' / 'core_inventory' // Custom can be add in the cl_utils.lua!!!
|
||||||
|
Wardrobe = 'default', -- 'default' / 'ak47_clothing' / 'codem_apperance' / 'fivem_appearance' / 'illenium_appearance' / 'qb_clothing' / 'raid_clothes' / 'rcore_clothes' / 'rcore_clothing' / 'sleek_clothestore' / 'tgiann_clothing' // Custom can be add in the cl_utils.lua!!!
|
||||||
|
TextUI = 'brutal_textui', -- false / 'brutal_textui' / 'ox_lib' / 'okokTextUI' / 'ESXTextUI' / 'QBDrawText' // Custom can be add in the cl_utils.lua!!!
|
||||||
|
BrutalKeys = true, -- Buy here: https://store.brutalscripts.com
|
||||||
|
BrutalPoliceJob = true, -- Buy here: https://store.brutalscripts.com | Better connection
|
||||||
|
BrutalNotify = true, -- Buy here: (4€+VAT) https://store.brutalscripts.com | Or set up your own notify >> cl_utils.lua
|
||||||
|
|
||||||
|
SteamName = false, -- true = Steam name | false = character name
|
||||||
|
AdminGroups = {'superadmin', 'admin', 'mod', 'god'},
|
||||||
|
HousingDataPrint = true, -- Server side print, like that: Brutal Housing: Houses: 1 Apartments: 97 Garages: 9
|
||||||
|
|
||||||
|
DataStorage = {
|
||||||
|
--[[
|
||||||
|
optimized = Saves the data when the script is restarted, the server is shut down or restarted, or during a scheduled server restart.
|
||||||
|
events: "txAdmin:events:serverShuttingDown" & "txAdmin:events:scheduledRestart" or fixed restart times.
|
||||||
|
resource_heavy = all data will be saved immediately, this is very stressful for the server so we don't recommend using this, but the choice is up to you.
|
||||||
|
]]--
|
||||||
|
|
||||||
|
Type = "resource_heavy", -- "optimized" / "resource_heavy"
|
||||||
|
Restarts = {}, -- example: "11:59" | Save the data 1 minute before restart. Save data at 15:59 instead of 16:00
|
||||||
|
},
|
||||||
|
|
||||||
|
Blips = {
|
||||||
|
available = true,
|
||||||
|
availableHouse = {label = "Available House", size = 0.7, sprite = 40, color = 2},
|
||||||
|
availableGarage = {label = "Available Garage", size = 0.7, sprite = 357, color = 2},
|
||||||
|
owned = true,
|
||||||
|
myHouse = {label = "My House", size = 0.7, sprite = 40, color = 53},
|
||||||
|
myGarage = {label = "My Garage", size = 0.7, sprite = 357, color = 53},
|
||||||
|
hasKeyHouse = {label = "House", size = 0.7, sprite = 40, color = 53},
|
||||||
|
hasKeyGarage = {label = "House", size = 0.7, sprite = 40, color = 53},
|
||||||
|
ownedHouse = {label = "House", size = 0.7, sprite = 40, color = 1},
|
||||||
|
ownedGarage = {label = "Garage", size = 0.7, sprite = 357, color = 1},
|
||||||
|
police = true,
|
||||||
|
burglarAlarm = {label = "Burglar alarm", size = 1.0, sprite = 161, color = 1},
|
||||||
|
},
|
||||||
|
|
||||||
|
MaxProperties = 12, -- Maximum number of properties a player can own
|
||||||
|
MaxObject = 50, -- Maximum placing object, 50-50 by default, outside and inside separately
|
||||||
|
MaxBargainPercent = 5, -- Maximum bargain rate in percentage | Bargain rate i random between 0 and this value
|
||||||
|
MaxOutsideFurnitureDistance = 50.0, -- Maximum Outside furniture distance from the door
|
||||||
|
MaxDoorlockDistance = 50.0, -- Max doorlock distance from the property's door.
|
||||||
|
StashLimit = 3, -- Maximum stash per property.
|
||||||
|
InstantSalePurchasePrice = 0.9, -- 100 000$ * 0.9 = 90 000$ | The player can immediately sell his property for this much compared to the base price.
|
||||||
|
DelayedSalePurchasePrice = 1.2, -- 100 000$ * 1.2 = 120 000$ | This is the maximum price a player can sell the house he has bought.
|
||||||
|
DeleteInactiveProperty = {use = true, days = 45}, -- -- If use is true, the property will be deleted if the player does not use it for X days. | Only the owned ones.
|
||||||
|
CopJobs = {"police", "sheriff"}, -- Cop jobs
|
||||||
|
GarageUpgrade = {
|
||||||
|
Repair = {use = true, time = 48, price = 25000}, -- The car stored in the garage will be repaired after 48hours.
|
||||||
|
Clean = {use = true, time = 24, price = 5000} -- The car stored in the garage will be cleaned after 24hours.
|
||||||
|
},
|
||||||
|
|
||||||
|
ForeclosureDebtThreshold = 1000, -- If the owner's debt exceeds $1000, the property will go into foreclosure.
|
||||||
|
Utilities = {
|
||||||
|
BillingCycle = 7, -- The default billing cycle for utilities is every 7 days.
|
||||||
|
|
||||||
|
RentalPrice = 0.004, -- 0.4% rental fee based on property price | 100,000$ * 0.004 = 400$
|
||||||
|
ElectricityPrice = 0.0005,
|
||||||
|
GasPrice = 0.00025,
|
||||||
|
WaterPrice = 0.0001,
|
||||||
|
WifiUnlockPrice = 5000, -- One-time fee
|
||||||
|
WifiPrice = 70, -- Fix price
|
||||||
|
},
|
||||||
|
|
||||||
|
NewKeyPrice = 25,
|
||||||
|
LockReplacementPrice = 100,
|
||||||
|
CCTVStationRepairPrice = 250,
|
||||||
|
|
||||||
|
Stash = {
|
||||||
|
Slots = 100,
|
||||||
|
Weight = 1000000,
|
||||||
|
},
|
||||||
|
|
||||||
|
Security = {
|
||||||
|
DatabaseDesroyEnabled = true, -- true / false
|
||||||
|
Objects = {
|
||||||
|
cameras = {"prop_cs_cctv", "prop_cctv_cam_01b"},
|
||||||
|
databases = {"hei_prop_heist_pc_01", "prop_dyn_pc", "prop_dyn_pc_02", "prop_pc_01a", "prop_pc_02a"}
|
||||||
|
},
|
||||||
|
|
||||||
|
Levels = {
|
||||||
|
[0] = {
|
||||||
|
alertToPolice = false,
|
||||||
|
maxAttempts = 6,
|
||||||
|
showIntruderName = false
|
||||||
|
},
|
||||||
|
[1] = {
|
||||||
|
price = 4750,
|
||||||
|
|
||||||
|
alertToPolice = true,
|
||||||
|
maxAttempts = 4,
|
||||||
|
showIntruderName = false
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
price = 9500,
|
||||||
|
|
||||||
|
alertToPolice = true,
|
||||||
|
maxAttempts = 2,
|
||||||
|
showIntruderName = true
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
price = 25000,
|
||||||
|
|
||||||
|
alertToPolice = true,
|
||||||
|
maxAttempts = 0, -- if it is 0, there is no chance to break into the house
|
||||||
|
showIntruderName = true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
BreakIn = {
|
||||||
|
use = true,
|
||||||
|
minimumCopsCount = 0,
|
||||||
|
requiredItem = 'lockpick',
|
||||||
|
removeItem = true
|
||||||
|
},
|
||||||
|
|
||||||
|
Raid = {
|
||||||
|
use = true,
|
||||||
|
allowedJobs = {
|
||||||
|
{ job = "police", minGrade = 0 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
RealEstateagents = {
|
||||||
|
ProfitRatioPercent = 6, -- Profit share of the real estate agency based on the purchase price | 6 = 6% of the property price
|
||||||
|
Jobs = {
|
||||||
|
["dynasty"] = { -- job name
|
||||||
|
[0] = {
|
||||||
|
label = 'Trainee', -- Rank name
|
||||||
|
permissions = { -- Permissions
|
||||||
|
canManageProperties = false, -- Created property management
|
||||||
|
balanceMenu = false -- Balance Menu
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[1] = {
|
||||||
|
label = 'Agent',
|
||||||
|
permissions = {
|
||||||
|
canManageProperties = true,
|
||||||
|
balanceMenu = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
label = 'Senior Agent',
|
||||||
|
permissions = {
|
||||||
|
canManageProperties = true,
|
||||||
|
balanceMenu = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- you can add more jobs too.
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
Commands = {
|
||||||
|
MyProperties = {
|
||||||
|
Command = 'myproperties',
|
||||||
|
Suggestion = 'To manage your propertys',
|
||||||
|
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||||
|
},
|
||||||
|
|
||||||
|
ServerDestroy = {
|
||||||
|
Command = 'serverdestroy',
|
||||||
|
Suggestion = 'To destroy the camera server',
|
||||||
|
requiredItem = 'laptop'
|
||||||
|
},
|
||||||
|
|
||||||
|
GetHousingVehicleBack = {
|
||||||
|
Command = 'gethousingvehicleback', -- /gethousingvehicleback all | /gethousingvehicleback DHR 432
|
||||||
|
Suggestion = 'To get back your vehicle(s)',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Admin / Real Estate --
|
||||||
|
|
||||||
|
StaffMode = {
|
||||||
|
Command = 'hstaff',
|
||||||
|
Suggestion = 'To switch Housing Staff mode',
|
||||||
|
},
|
||||||
|
|
||||||
|
Properties = {
|
||||||
|
Command = 'properties',
|
||||||
|
Suggestion = 'To open the propertys menu',
|
||||||
|
},
|
||||||
|
|
||||||
|
CreateHouse = {
|
||||||
|
Command = 'createhouse',
|
||||||
|
Suggestion = 'To create a house',
|
||||||
|
},
|
||||||
|
|
||||||
|
CreateGarage = {
|
||||||
|
Command = 'creategarage',
|
||||||
|
Suggestion = 'To create a garage',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-----------------------| TRANSLATE |-----------------------
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
NUILanguage = "en", -- "en", "es", "fr", "de", "pt", "it", "pl", "nl", "ru", "tr", "hu", "ro", "cs", "sv", "ar"
|
||||||
|
|
||||||
|
MoneyForm = '$', -- Money form
|
||||||
|
|
||||||
|
Locales = {
|
||||||
|
Stash = "Stash",
|
||||||
|
None = "None",
|
||||||
|
AdminRemoved = "Admin removed",
|
||||||
|
|
||||||
|
ShellPlacement = "Shell Placement",
|
||||||
|
DoorLocation = "Door Location",
|
||||||
|
VehiclePlacement = "Vehicle Placement",
|
||||||
|
FurniturePlacement = "Furniture Placement",
|
||||||
|
|
||||||
|
NewCoords = "Set the new coords",
|
||||||
|
MovingFreecam = "Moving Freecam",
|
||||||
|
GoBack = "Go Back",
|
||||||
|
ObjectMovement = "Object movement",
|
||||||
|
ObjectVertical = "Object Vertical Movement",
|
||||||
|
ObjectRotate = "Object Rotate",
|
||||||
|
FinishEditing = "Finish Editing",
|
||||||
|
TranslateMode = "Translate Mode",
|
||||||
|
CameraFix = "Camera Fix",
|
||||||
|
DoneEditing = "Done Editing",
|
||||||
|
|
||||||
|
BreakIn = "A burglar broke into the house! Go to the designated place!",
|
||||||
|
|
||||||
|
Messages = {
|
||||||
|
Rent = {title = "Rent", message = "You have started renting the property."},
|
||||||
|
StopRent = {title = "Rental stopped", message = "The rental of the property has been stopped."},
|
||||||
|
Purchase = {title = "Purchase", message = "You have purchased the property."},
|
||||||
|
LevelUpgrade = {title = "Level Upgrade", message = "Success upgrade: Level"},
|
||||||
|
BrakeIn = {title = "Break-in", message = "Someone has broken into the property:"},
|
||||||
|
Raid = {title = "Raid", message = "Police raided the property."},
|
||||||
|
WifiUnlock = {title = "Wifi", message = "The Wifi has been connected!"},
|
||||||
|
CleaningUnlock = {title = "Cleaning", message = "Vehicle cleaning function now available"},
|
||||||
|
RepairingUnlock = {title = "Repairing", message = "Vehicle repairing function now available"},
|
||||||
|
DoorLockReplacement = {title = "Lock replacement", message = "You have successfully changed the lock on your property!"},
|
||||||
|
Rename = {title = "Property renaming", message = "New name of the property:"},
|
||||||
|
Unknown = "Unknown",
|
||||||
|
},
|
||||||
|
|
||||||
|
CCTV = "BACK: ~INPUT_CELLPHONE_CANCEL~\nUP/DOWN: ~INPUT_CELLPHONE_UP~ & ~INPUT_CELLPHONE_DOWN~\nLEFT/RIGHT: ~INPUT_CELLPHONE_LEFT~ & ~INPUT_CELLPHONE_RIGHT~",
|
||||||
|
CCTVSetup = "BACK: ~INPUT_CELLPHONE_CANCEL~\nUP/DOWN: ~INPUT_CELLPHONE_UP~ & ~INPUT_CELLPHONE_DOWN~\nLEFT/RIGHT: ~INPUT_CELLPHONE_LEFT~ & ~INPUT_CELLPHONE_RIGHT~\nSETUP: ~INPUT_FRONTEND_RDOWN~",
|
||||||
|
},
|
||||||
|
|
||||||
|
Texts = {
|
||||||
|
[1] = {'[E] - Storage', 38},
|
||||||
|
[2] = {'[E] - Wardrobe', 38},
|
||||||
|
},
|
||||||
|
|
||||||
|
DoorTexts = {
|
||||||
|
["entry"] = {'E', 'Entry', 38},
|
||||||
|
["leave"] = {'E', 'Leave', 38},
|
||||||
|
["garage"] = {'X', 'Garage', 73},
|
||||||
|
["house"] = {'X', 'House', 73},
|
||||||
|
["open"] = {'G', 'Open the door', 47},
|
||||||
|
["close"] = {'G', 'Close the door', 47},
|
||||||
|
["purchase"] = {'E', 'Purchase menu', 38},
|
||||||
|
["knock"] = {'E', 'Knocking', 38},
|
||||||
|
["raid"] = {'G', 'Raid', 47},
|
||||||
|
["breakin"] = {'G', 'Break In', 47},
|
||||||
|
["inforeclosure"] = {'E', 'In foreclosure', 38}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Notify function EDITABLE >> cl_utils.lua
|
||||||
|
Notify = {
|
||||||
|
[1] = {"Housing", "You can only enter with your own car!", 5000, "error"},
|
||||||
|
[2] = {"Housing", "No more space in the garage!", 5000, "error"},
|
||||||
|
[3] = {"Housing", "The door is closed!", 5000, "error"},
|
||||||
|
[4] = {"Housing", "You already have a property near you, move away!", 5000, "error"},
|
||||||
|
[5] = {"Housing", "The property name must be 3-16 characters long!", 5000, "error"},
|
||||||
|
[6] = {"Housing", "The URL must start with 'http://' or 'https://'", 5000, "error"},
|
||||||
|
[7] = {"Housing", "The price must be more than ZERO!", 5000, "error"},
|
||||||
|
[8] = {"Housing", "You have entered an invalid or already used garage id!", 5000, "error"},
|
||||||
|
[9] = {"Housing", "You have successfully created it!", 5000, "success"},
|
||||||
|
[10] = {"Housing", "Invalid property ID!", 5000, "error"},
|
||||||
|
[11] = {"Housing", "You don't have enough money!", 5000, "error"},
|
||||||
|
[12] = {"Housing", "You can sell it for a maximum of 20% more than what you bought it for!", 5000, "error"},
|
||||||
|
[13] = {"Housing", "You don't own it, so you can't sell it!", 5000, "error"},
|
||||||
|
[14] = {"Housing", "You have successfully purchased!", 5000, "success"},
|
||||||
|
[15] = {"Housing", "The house owner is currently unavailable. Please contact them by phone!", 5000, "error"},
|
||||||
|
[16] = {"Housing", "You cannot park this vehicle in the garage!", 5000, "error"},
|
||||||
|
[17] = {"Housing", "Successful payment!", 5000, "success"},
|
||||||
|
[18] = {"Housing", "Successful upgrade!", 5000, "success"},
|
||||||
|
[19] = {"Housing", "Someone knocked on the door!", 5000, "info"},
|
||||||
|
[20] = {"Housing", "You knocked on the door!", 5000, "success"},
|
||||||
|
[21] = {"Housing", "You have paid the outstanding debt on the property:", 5000, "error"},
|
||||||
|
[22] = {"Housing", "You have successfully sold the property:", 5000, "success"},
|
||||||
|
[23] = {"Housing", "The garage door cannot be more than 50 metres from the entrance to the house.", 5000, "error"},
|
||||||
|
[24] = {"Housing", "Not enough money for the real estate agency!", 5000, "error"},
|
||||||
|
[25] = {"Housing", "You do not have permission!", 5000, "error"},
|
||||||
|
[26] = {"Housing", "You can only connect a house and a garage!", 5000, "error"},
|
||||||
|
[27] = {"Housing", "The property is already connected!", 5000, "error"},
|
||||||
|
[28] = {"Housing", "These two properties are not connected!", 5000, "error"},
|
||||||
|
[29] = {"Housing", "Successful connection!", 5000, "success"},
|
||||||
|
[30] = {"Housing", "You have successfully detached the garage!", 5000, "success"},
|
||||||
|
[31] = {"Housing", "You've got it back:", 5000, "success"},
|
||||||
|
[32] = {"Housing", "No vehicle to get back!", 5000, "error"},
|
||||||
|
[33] = {"Housing", "There was a problem loading the IPL/Shell.", 5000, "error"},
|
||||||
|
[34] = {"Housing", "You spammed the housing system, so you have been put on a 3-minute cooldown.", 5000, "error"},
|
||||||
|
[35] = {"Housing", "You can now use the housing system again.", 5000, "success"},
|
||||||
|
[36] = {"Housing", "Please avoid doing this again in the future.", 5000, "info"},
|
||||||
|
[37] = {"Housing", "You cannot buy/rent more property! Maximum quantity:", 5000, "error"},
|
||||||
|
[38] = {"Housing", "You have to wait 2 minutes because you've failed the minigame!", 5000, "error"},
|
||||||
|
[39] = {"Housing", "You have successfully completed the minigame! The door is open!", 5000, "success"},
|
||||||
|
[40] = {"Housing", "You failed to complete the minigame!", 5000, "error"},
|
||||||
|
[41] = {"Housing", "You have successfully completed the minigame!", 5000, "success"},
|
||||||
|
[42] = {"Housing", "This house has too good security, you can't break in!", 5000, "error"},
|
||||||
|
[43] = {"Housing", "You have reached the maximum attempt!", 5000, "error"},
|
||||||
|
[44] = {"Housing", "Not enough police in the city!", 5000, "error"},
|
||||||
|
[45] = {"Housing", "You need a lockpick item!", 5000, "error"},
|
||||||
|
[46] = {"Housing", "You need a laptop item!", 5000, "error"},
|
||||||
|
[47] = {"Housing", "Invalid Player ID!", 5000, "error"},
|
||||||
|
[48] = {"Housing", "Invalid Identifier!", 5000, "error"},
|
||||||
|
[49] = {"Housing", "Successful modification!", 5000, "success"},
|
||||||
|
[50] = {"Housing", "This address already exist!", 5000, "error"},
|
||||||
|
[51] = {"Housing", "The two properties must be owned by the same person/job!", 5000, "error"},
|
||||||
|
[52] = {"Housing", "The amount you offered is too low!", 5000, "error"},
|
||||||
|
[53] = {"Housing", "The spawn coordinates of the vehicle must be within 15 meters of the garage door!", 5000, "error"},
|
||||||
|
[54] = {"Housing", "You don't have property!", 5000, "error"},
|
||||||
|
[55] = {"Housing", "Staff mode: ON", 5000, "success"},
|
||||||
|
[56] = {"Housing", "Staff mode: OFF", 5000, "error"},
|
||||||
|
[57] = {"Housing", "You have started to rent the property!", 5000, "success"},
|
||||||
|
[58] = {"Housing", "You've put your property up for sale!", 5000, "success"},
|
||||||
|
[59] = {"Housing", "You cancelled the sale!", 5000, "info"},
|
||||||
|
[60] = {"Housing", "Invalid Price!", 5000, "error"},
|
||||||
|
[61] = {"Housing", "You cannot buy your own property! You can cancel the sale in the Myproperties menu!", 5000, "error"},
|
||||||
|
[62] = {"Housing", "You have stopped to rent the property!", 5000, "info"},
|
||||||
|
[63] = {"Housing", "There is not that much money in the account!", 5000, "error"},
|
||||||
|
[64] = {"Housing", "Successful deposit:", 5000, "success"},
|
||||||
|
[65] = {"Housing", "Successful withdrawal:", 5000, "success"},
|
||||||
|
[66] = {"Housing", "A burglar broke into the house! Go to the designated place!", 5000, "info"},
|
||||||
|
[67] = {"Housing", "You have successfully deleted it!", 5000, "success"},
|
||||||
|
[68] = {"Housing", "You cannot add a garage to an apartment/mlo!", 5000, "error"},
|
||||||
|
[69] = {"Housing", "You cannot place objects here!", 5000, "error"},
|
||||||
|
[70] = {"Housing", "You cannot create a house/garage near Apartment buildings!", 5000, "error"},
|
||||||
|
[71] = {"Housing", "You have successfully renamed the property!", 5000, "success"},
|
||||||
|
[72] = {"Housing", "You have successfully replaced the door lock!", 5000, "success"},
|
||||||
|
[73] = {"Housing", "You have successfully bought a new key!", 5000, "success"},
|
||||||
|
[74] = {"Housing", "Place %d car spawn coordinates inside the shell!", 5000, "info"},
|
||||||
|
[75] = {"Housing", "You can't put a door lock that far away!", 5000, "error"},
|
||||||
|
[76] = {"Housing", "You paid for furniture:", 5000, "info"},
|
||||||
|
[77] = {"Housing", "You sold furniture for:", 5000, "info"},
|
||||||
|
[78] = {"Housing", "You are too far from the object!", 5000, "error"},
|
||||||
|
[79] = {"Housing", "You have successfully destroyed it, the owner has lost the camera data!", 5000, "error"},
|
||||||
|
[80] = {"Housing", "You can't sit in a car!", 5000, "error"},
|
||||||
|
[81] = {"Housing", "There is no database near you!", 5000, "error"},
|
||||||
|
[82] = {"Housing", "This has already been destroyed!", 5000, "error"},
|
||||||
|
[83] = {"Housing", "You have successfully repaired it!", 5000, "success"},
|
||||||
|
[84] = {"Housing", "You cannot open the menu now!", 5000, "error"},
|
||||||
|
[85] = {"Housing", "The property is in foreclosure! The owner must pay the bills before we can use it.", 5000, "error"},
|
||||||
|
[86] = {"Housing", "This car is out of the garage!", 5000, "error"},
|
||||||
|
[87] = {"Housing", "The maximum number of objects you can place:", 5000, "error"},
|
||||||
|
[88] = {"Housing", "The garage must be empty if you want to sell the property!", 5000, "error"},
|
||||||
|
[89] = {"Housing", "You have reached the maximum number of stashes you can place!", 5000, "error"},
|
||||||
|
[90] = {"Housing", "You cannot put the object so far away!", 5000, "error"},
|
||||||
|
[91] = {"Housing", "The house you were in has been deleted, so you have been teleported here!", 10000, "info"},
|
||||||
|
},
|
||||||
|
|
||||||
|
Webhooks = {
|
||||||
|
Locale = {
|
||||||
|
['houseCreateTitle'] = "🆕 House created...",
|
||||||
|
['houseCreateSubtitle'] = "created a house.",
|
||||||
|
['garageCreateTitle'] = "🆕 Garage created...",
|
||||||
|
['garageCreateSubtitle'] = "created a garage.",
|
||||||
|
['deleteTitle'] = "❌ Deleted property...",
|
||||||
|
['deleteSubtitle'] = "deleted a property.",
|
||||||
|
['purchaseTitle'] = "💵 Purchased property...",
|
||||||
|
['purchaseSubtitle'] = "purchased a property.",
|
||||||
|
['rentTitle'] = "💵 Rented property...",
|
||||||
|
['rentSubtitle'] = "rented a property.",
|
||||||
|
['newOwnerTitle'] = "🔄 Change of owner...",
|
||||||
|
['newOwnerSubtitle'] = "changed the property owner.",
|
||||||
|
|
||||||
|
['Identifier'] = "Identifier",
|
||||||
|
['PropertyID'] = "Property ID",
|
||||||
|
['Type'] = "Type",
|
||||||
|
['Price'] = "Price",
|
||||||
|
['Rent'] = "Rent",
|
||||||
|
['Coords'] = "Coords",
|
||||||
|
['Address'] = "Address",
|
||||||
|
['Garage'] = "Garage",
|
||||||
|
['Reason'] = "Reason",
|
||||||
|
['PreviousOwner'] = "Previous Owner",
|
||||||
|
['NewOwner'] = "New Owner",
|
||||||
|
['Inactivity'] = "Since Config.DeleteInactiveProperty.use is true, this property is deleted due to inactivity.",
|
||||||
|
|
||||||
|
|
||||||
|
['Time'] = "Time ⏲️"
|
||||||
|
},
|
||||||
|
|
||||||
|
-- To change a webhook color you need to set the decimal value of a color, you can use this website to do that - https://www.mathsisfun.com/hexadecimal-decimal-colors.html
|
||||||
|
Colors = {
|
||||||
|
['houseCreateTitle'] = 65280,
|
||||||
|
['garageCreateTitle'] = 255,
|
||||||
|
['deleteTitle'] = 16711680,
|
||||||
|
['purchaseTitle'] = 16776960,
|
||||||
|
['rentTitle'] = 65535,
|
||||||
|
['newOwnerTitle'] = 16711935,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
245
resources/[housing]/brutal_housing/configs/apartments.lua
Normal file
|
@ -0,0 +1,245 @@
|
||||||
|
Config.Apartments = {
|
||||||
|
["eclipse_tower"] = {
|
||||||
|
Label = "Eclipse Tower",
|
||||||
|
Address = "South Mo Milton Dr. 1.",
|
||||||
|
SelectPanelCoords = vector4(-773.8490, 311.1882, 85.7982, 180.0),
|
||||||
|
Coords = vector4(-773.8356, 309.6247, 85.6981, 177.2697),
|
||||||
|
Blip = {use = true, size = 0.75, sprite = 475, color = 26},
|
||||||
|
|
||||||
|
Apartments = {
|
||||||
|
{
|
||||||
|
price = 230000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 230000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 240000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 240000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 250000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 250000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 260000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 260000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 270000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 270000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 280000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 280000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 290000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 290000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 300000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 300000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["maze_bank_tower"] = {
|
||||||
|
Label = "Maze Bank Tower",
|
||||||
|
Address = "South Mo Milton Dr. 1.",
|
||||||
|
SelectPanelCoords = vector4(-68.8102, -801.5714, 44.2273, 338.2512),
|
||||||
|
Coords = vector4(-67.5983, -798.7274, 44.2273, 330.9335),
|
||||||
|
Blip = {use = true, size = 0.75, sprite = 475, color = 26},
|
||||||
|
|
||||||
|
Apartments = {
|
||||||
|
{
|
||||||
|
price = 230000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 230000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 240000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 240000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 250000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 250000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 260000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 260000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 270000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 270000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 280000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 280000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 290000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 290000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 300000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
price = 300000,
|
||||||
|
rentable = true,
|
||||||
|
ipl = "luxury_apartment",
|
||||||
|
basicTheme = 0
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
1774
resources/[housing]/brutal_housing/configs/furnitures.lua
Normal file
390
resources/[housing]/brutal_housing/configs/interiors.lua
Normal file
|
@ -0,0 +1,390 @@
|
||||||
|
Config.Interiors = {
|
||||||
|
Houses = {
|
||||||
|
IPL = {
|
||||||
|
["luxury_apartment"] = {
|
||||||
|
label = "Luxury Apartment",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Modern", ipl = "apa_v_mp_h_01_c", interiorId = 227841, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/KjrkDYcB/image.png", teleportToDoor = false},
|
||||||
|
[1] = {label = "Moody", ipl = "apa_v_mp_h_02_c", interiorId = 228609, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/bcGH7W4/1.png", teleportToDoor = false},
|
||||||
|
[2] = {label = "Vibrant", ipl = "apa_v_mp_h_03_c", interiorId = 229377, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/kVWqh6Qm/2.png", teleportToDoor = false},
|
||||||
|
[3] = {label = "Sharp", ipl = "apa_v_mp_h_04_c", interiorId = 230145, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/wh1qcnQ9/3.png", teleportToDoor = false},
|
||||||
|
[4] = {label = "Monochrome", ipl = "apa_v_mp_h_05_c", interiorId = 230913, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/chmmS3HH/4.png", teleportToDoor = false},
|
||||||
|
[5] = {label = "Seductive", ipl = "apa_v_mp_h_06_c", interiorId = 231681, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/sJpwb8f6/5.png", teleportToDoor = false},
|
||||||
|
[6] = {label = "Regal", ipl = "apa_v_mp_h_07_c", interiorId = 232449, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/TMhwQNgK/6.png", teleportToDoor = false},
|
||||||
|
[7] = {label = "Aqua", ipl = "apa_v_mp_h_08_c", interiorId = 233217, price = 5000, coords = vector4(-787.1503, 315.7941, 187.9134, 269.1841), link = "https://i.ibb.co/4ZbxmWvs/7.png", teleportToDoor = false},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Apartments NO IPL --
|
||||||
|
|
||||||
|
["ipl_01"] = {
|
||||||
|
label = "Low End Apartment",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(261.4586, -998.8196, -99.00863, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_02"] = {
|
||||||
|
label = "Medium End Apartment",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(347.2686, -999.2955, -99.19622, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_03"] = {
|
||||||
|
label = "4 Integrity Way, Apt 28",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-18.07856, -583.6725, 79.46569, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_04"] = {
|
||||||
|
label = "4 Integrity Way, Apt 30",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-35.31277, -580.4199, 88.71221, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_05"] = {
|
||||||
|
label = "Dell Perro Heights, Apt 4",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-1468.14, -541.815, 73.4442, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_06"] = {
|
||||||
|
label = "Dell Perro Heights, Apt 7",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-1477.14, -538.7499, 55.5264, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_07"] = {
|
||||||
|
label = "Richard Majestic, Apt 2",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-915.811, -379.432, 113.6748, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_08"] = {
|
||||||
|
label = "Tinsel Towers, Apt 42",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-614.86, 40.6783, 97.60007, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_09"] = {
|
||||||
|
label = "Eclipse Towers, Apt 3",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-773.407, 341.766, 211.397, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_10"] = {
|
||||||
|
label = "3655 Wild Oats Drive",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-169.286, 486.4938, 137.4436, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_11"] = {
|
||||||
|
label = "2044 North Conker Avenue",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(340.9412, 437.1798, 149.3925, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_12"] = {
|
||||||
|
label = "2045 North Conker Avenue",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(373.023, 416.105, 145.7006, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_13"] = {
|
||||||
|
label = "2862 Hillcrest Avenue",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-676.127, 588.612, 145.1698, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_14"] = {
|
||||||
|
label = "2868 Hillcrest Avenue",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-763.107, 615.906, 144.1401, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_15"] = {
|
||||||
|
label = "2874 Hillcrest Avenue",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-857.798, 682.563, 152.6529, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_16"] = {
|
||||||
|
label = "2677 Whispymound Drive",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(120.5, 549.952, 184.097, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["ipl_17"] = {
|
||||||
|
label = "2133 Mad Wayne Thunder",
|
||||||
|
themes = {
|
||||||
|
[0] = {label = "Basic", ipl = "", interiorId = nil, coords = vector4(-1288, 440.748, 97.69459, 20.0), teleportToDoor = false},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
SHELL = {
|
||||||
|
-- [FREE] K4mbi starter housing shells | Download: https://k4mb1maps.com/product/5015840
|
||||||
|
|
||||||
|
["shell_1"] = {
|
||||||
|
label = "Standard Motel",
|
||||||
|
shell = "standardmotel_shell",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_2"] = {
|
||||||
|
label = "Warehouse 1",
|
||||||
|
shell = "shell_warehouse1",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_3"] = {
|
||||||
|
label = "V16 mid",
|
||||||
|
shell = "shell_v16mid",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_4"] = {
|
||||||
|
label = "V16 low",
|
||||||
|
shell = "shell_v16low",
|
||||||
|
zOffset = 1.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_5"] = {
|
||||||
|
label = "Trevor",
|
||||||
|
shell = "shell_trevor",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_6"] = {
|
||||||
|
label = "Trailer",
|
||||||
|
shell = "shell_trailer",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_7"] = {
|
||||||
|
label = "Store 1",
|
||||||
|
shell = "shell_store1",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_8"] = {
|
||||||
|
label = "Ranch",
|
||||||
|
shell = "shell_ranch",
|
||||||
|
zOffset = 1.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_9"] = {
|
||||||
|
label = "Office 1",
|
||||||
|
shell = "shell_office1",
|
||||||
|
zOffset = 1.25,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_10"] = {
|
||||||
|
label = "Michael",
|
||||||
|
shell = "shell_michael",
|
||||||
|
zOffset = 3.75,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_11"] = {
|
||||||
|
label = "Lester",
|
||||||
|
shell = "shell_lester",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_12"] = {
|
||||||
|
label = "Frankaunt",
|
||||||
|
shell = "shell_frankaunt",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_13"] = {
|
||||||
|
label = "Modern Hotel",
|
||||||
|
shell = "modernhotel_shell",
|
||||||
|
zOffset = 0.5,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_14"] = {
|
||||||
|
label = "Furnitured Midapart",
|
||||||
|
shell = "furnitured_midapart",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_15"] = {
|
||||||
|
label = "Container",
|
||||||
|
shell = "container_shell",
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- [FREE] Lynx housing shells | Download: https://github.com/Lynxist/lynx_shells
|
||||||
|
|
||||||
|
["shell_16"] = {
|
||||||
|
label = "T1 Furn",
|
||||||
|
shell = "t1_furn_shell",
|
||||||
|
zOffset = -0.75,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_17"] = {
|
||||||
|
label = "T2 Furn",
|
||||||
|
shell = "t2_furn_shell",
|
||||||
|
zOffset = -1.5,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_18"] = {
|
||||||
|
label = "T3 Furn",
|
||||||
|
shell = "t3_furn_shell",
|
||||||
|
zOffset = -1.5,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_19"] = {
|
||||||
|
label = "T1 Unfurn",
|
||||||
|
shell = "t1_unfurn_shell",
|
||||||
|
zOffset = -0.75,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_20"] = {
|
||||||
|
label = "T2 Unfurn",
|
||||||
|
shell = "t2_unfurn_shell",
|
||||||
|
zOffset = -1.5,
|
||||||
|
},
|
||||||
|
|
||||||
|
["shell_21"] = {
|
||||||
|
label = "T3 Unfurn",
|
||||||
|
shell = "t3_unfurn_shell",
|
||||||
|
zOffset = -1.5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Garages = {
|
||||||
|
IPL = {
|
||||||
|
["garage_1"] = {
|
||||||
|
label = "Garage I.",
|
||||||
|
themes = {
|
||||||
|
[0] = {
|
||||||
|
label = "Basic",
|
||||||
|
ipl = "",
|
||||||
|
interiorId = nil,
|
||||||
|
coords = vector4(178.9558, -1005.3951, -99.0000, 21.3123),
|
||||||
|
teleportToDoor = false,
|
||||||
|
vehicleCoords = {
|
||||||
|
[1] = vector4(175.1855, -1003.7393, -99.4123, 181.5427),
|
||||||
|
[2] = vector4(171.8091, -1003.7794, -99.4124, 181.3861),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["garage_2"] = {
|
||||||
|
label = "Garage II.",
|
||||||
|
themes = {
|
||||||
|
[0] = {
|
||||||
|
label = "Basic",
|
||||||
|
ipl = "",
|
||||||
|
interiorId = nil,
|
||||||
|
coords = vector4(206.9773, -1018.5231, -99.0000, 87.2694),
|
||||||
|
teleportToDoor = false,
|
||||||
|
vehicleCoords = {
|
||||||
|
[1] = vector4(194.1104, -1016.6121, -99.4099, 182.7991),
|
||||||
|
[2] = vector4(198.2034, -1016.4313, -99.4171, 183.3609),
|
||||||
|
[3] = vector4(203.5549, -1016.4313, -99.4116, 184.7148),
|
||||||
|
[4] = vector4(194.4705, -1023.3527, -99.4167, 183.4615),
|
||||||
|
[5] = vector4(198.7118, -1023.0986, -99.4170, 183.6204),
|
||||||
|
[6] = vector4(203.6475, -1022.9459, -99.4167, 180.2281),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["garage_3"] = {
|
||||||
|
label = "Garage III.",
|
||||||
|
themes = {
|
||||||
|
[0] = {
|
||||||
|
label = "Basic",
|
||||||
|
ipl = "",
|
||||||
|
interiorId = nil,
|
||||||
|
coords = vector4(204.5689, -999.7145, -99.0000, 96.2213),
|
||||||
|
teleportToDoor = false,
|
||||||
|
vehicleCoords = {
|
||||||
|
[1] = vector4(203.1431, -997.8181, -99.4099, 180.8668),
|
||||||
|
[2] = vector4(198.3203, -998.0093, -99.4160, 180.2940),
|
||||||
|
[3] = vector4(194.2100, -997.9175, -99.4168, 182.2399),
|
||||||
|
[4] = vector4(194.3332, -1004.3503, -99.4171, 181.8376),
|
||||||
|
[5] = vector4(198.4779, -1004.2313, -99.4099, 179.6543),
|
||||||
|
[6] = vector4(203.1758, -1004.1754, -99.4172, 181.2833),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["garage_4"] = {
|
||||||
|
label = "Garage IV.",
|
||||||
|
themes = {
|
||||||
|
[0] = {
|
||||||
|
label = "Basic",
|
||||||
|
ipl = "",
|
||||||
|
interiorId = nil,
|
||||||
|
coords = vector4(240.6632, -1004.8735, -99.0000, 20.0),
|
||||||
|
teleportToDoor = false,
|
||||||
|
vehicleCoords = {
|
||||||
|
[1] = vector4(233.8019, -1002.8353, -99.5624, 98.0763),
|
||||||
|
[2] = vector4(233.7039, -999.4944, -99.5624, 98.7875),
|
||||||
|
[3] = vector4(233.8993, -996.0872, -99.5627, 102.9313),
|
||||||
|
[4] = vector4(233.8264, -992.7466, -99.5623, 105.2041),
|
||||||
|
[5] = vector4(233.9019, -989.3083, -99.5627, 112.1547),
|
||||||
|
[6] = vector4(233.6418, -986.1068, -99.5621, 112.8488),
|
||||||
|
[7] = vector4(233.5690, -982.7154, -99.5625, 119.0502),
|
||||||
|
[8] = vector4(223.4754, -977.2686, -99.4134, 239.5003),
|
||||||
|
[9] = vector4(223.2184, -981.4578, -99.5619, 237.0337),
|
||||||
|
[10] = vector4(223.2762, -985.4167, -99.5619, 238.9182),
|
||||||
|
[11] = vector4(223.5789, -989.1111, -99.5622, 242.2118),
|
||||||
|
[12] = vector4(223.3941, -992.6294, -99.5619, 245.8700),
|
||||||
|
[13] = vector4(223.2339, -996.2072, -99.5625, 245.0806),
|
||||||
|
[14] = vector4(223.2626, -999.9703, -99.5627, 248.0285),
|
||||||
|
[15] = vector4(223.0869, -1003.8400, -99.5619, 246.7725),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["arcadius_garage"] = {
|
||||||
|
label = "Arcadius Garage",
|
||||||
|
themes = {
|
||||||
|
[0] = {
|
||||||
|
label = "Basic",
|
||||||
|
ipl = "imp_dt1_02_cargarage_a",
|
||||||
|
interiorId = nil,
|
||||||
|
coords = vector4(-198.1888, -580.6741, 136.0006, 283.6408),
|
||||||
|
teleportToDoor = false,
|
||||||
|
vehicleCoords = {
|
||||||
|
[1] = vector4(-173.0641, -583.9653, 135.5904, 76.3288),
|
||||||
|
[2] = vector4(-173.9179, -577.0183, 135.5862, 119.9366),
|
||||||
|
[3] = vector4(-179.1989, -573.1927, 135.5891, 164.5817),
|
||||||
|
[4] = vector4(-186.1283, -573.6585, 135.5884, 205.5771),
|
||||||
|
[5] = vector4(-190.6035, -578.9037, 135.5905, 247.4073),
|
||||||
|
[6] = vector4(-172.9172, -584.2977, 140.9358, 74.9734),
|
||||||
|
[7] = vector4(-173.7856, -577.0521, 140.9302, 118.4581),
|
||||||
|
[8] = vector4(-179.3282, -572.5753, 140.9300, 162.7588),
|
||||||
|
[9] = vector4(-186.5548, -573.2651, 140.9356, 209.7426),
|
||||||
|
[10] = vector4(-190.8909, -579.0132, 140.9296, 251.7935),
|
||||||
|
[11] = vector4(-172.5084, -583.9584, 146.2755, 75.6867),
|
||||||
|
[12] = vector4(-173.6930, -577.0157, 146.2758, 118.3053),
|
||||||
|
[13] = vector4(-179.3384, -572.6110, 146.2757, 164.0221),
|
||||||
|
[14] = vector4(-186.6965, -573.4319, 146.2755, 211.0180),
|
||||||
|
[15] = vector4(-190.7574, -579.1912, 146.2754, 252.5850),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
SHELL = {
|
||||||
|
["shell_1"] = {
|
||||||
|
label = "GarageM",
|
||||||
|
shell = "shell_garagem",
|
||||||
|
maxVehicle = 8,
|
||||||
|
zOffset = 0.0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
73
resources/[housing]/brutal_housing/core/client-core.lua
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
Core = nil
|
||||||
|
defaultVoiceChannel = 0
|
||||||
|
|
||||||
|
if Config.VoiceSytem:upper() == 'SALTYCHAT' then
|
||||||
|
defaultVoiceChannel = "ingame"
|
||||||
|
end
|
||||||
|
|
||||||
|
if Config['Core']:upper() == 'ESX' then
|
||||||
|
local _esx_ = 'new' -- 'new' / 'old'
|
||||||
|
|
||||||
|
if _esx_ then
|
||||||
|
Core = exports['es_extended']:getSharedObject()
|
||||||
|
else
|
||||||
|
while Core == nil do
|
||||||
|
TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
|
||||||
|
Citizen.Wait(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
LoadedEvent = 'esx:playerLoaded'
|
||||||
|
ReviveEvent = 'esx_ambulancejob:revive'
|
||||||
|
JobUpdateEvent = 'esx:setJob'
|
||||||
|
TSCB = Core.TriggerServerCallback
|
||||||
|
|
||||||
|
function GetPlayerJobDatas()
|
||||||
|
return Core.GetPlayerData().job
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayersFunction()
|
||||||
|
return Core.Game.GetPlayers()
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetVehiclePropertiesFunction(vehicle)
|
||||||
|
return Core.Game.GetVehicleProperties(vehicle)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SetVehiclePropertiesFunction(vehicle, properties)
|
||||||
|
return Core.Game.SetVehicleProperties(vehicle, properties)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetClosestVehicleFunction(coords, modelFilter)
|
||||||
|
return Core.Game.GetClosestVehicle(coords, modelFilter)
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif Config['Core']:upper() == 'QBCORE' then
|
||||||
|
Core = exports['qb-core']:GetCoreObject()
|
||||||
|
|
||||||
|
LoadedEvent = 'QBCore:Client:OnPlayerLoaded'
|
||||||
|
ReviveEvent = 'hospital:client:Revive'
|
||||||
|
JobUpdateEvent = 'QBCore:Client:OnJobUpdate'
|
||||||
|
TSCB = Core.Functions.TriggerCallback
|
||||||
|
|
||||||
|
function GetPlayerJobDatas()
|
||||||
|
return Core.Functions.GetPlayerData().job
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayersFunction()
|
||||||
|
return Core.Functions.GetPlayers()
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetVehiclePropertiesFunction(vehicle)
|
||||||
|
return Core.Functions.GetVehicleProperties(vehicle)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SetVehiclePropertiesFunction(vehicle, properties)
|
||||||
|
return Core.Functions.SetVehicleProperties(vehicle, properties)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetClosestVehicleFunction(coords, modelFilter)
|
||||||
|
return Core.Functions.GetClosestVehicle(coords, modelFilter)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
274
resources/[housing]/brutal_housing/core/server-core.lua
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
Core = nil
|
||||||
|
|
||||||
|
if Config['Core']:upper() == 'ESX' then
|
||||||
|
local _esx_ = 'new' -- 'new' / 'old'
|
||||||
|
|
||||||
|
if _esx_ == 'new' then
|
||||||
|
Core = exports['es_extended']:getSharedObject()
|
||||||
|
else
|
||||||
|
Core = nil
|
||||||
|
TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
|
||||||
|
while Core == nil do
|
||||||
|
Citizen.Wait(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
RESCB = Core.RegisterServerCallback
|
||||||
|
GETPFI = Core.GetPlayerFromId
|
||||||
|
RUI = Core.RegisterUsableItem
|
||||||
|
SetJobEvent = 'esx:setJob'
|
||||||
|
onPlayerDeath = 'esx:onPlayerDeath'
|
||||||
|
SQLData = {
|
||||||
|
users = 'users',
|
||||||
|
job = 'job',
|
||||||
|
jobs = 'jobs',
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetIdentifier(source)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
while xPlayer == nil do
|
||||||
|
Citizen.Wait(1000)
|
||||||
|
xPlayer = GETPFI(source)
|
||||||
|
end
|
||||||
|
return xPlayer.identifier
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayerByIdentifier(identifier)
|
||||||
|
return Core.GetPlayerFromIdentifier(identifier)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetAccountMoney(source,account)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if account == 'bank' then
|
||||||
|
return xPlayer.getAccount(account).money
|
||||||
|
elseif account == 'money' then
|
||||||
|
return xPlayer.getMoney()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AddMoneyFunction(source, account, amount)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if account == 'bank' then
|
||||||
|
xPlayer.addAccountMoney('bank', amount)
|
||||||
|
elseif account == 'money' then
|
||||||
|
xPlayer.addMoney(amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function RemoveAccountMoney(source, account, amount)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if account == 'bank' then
|
||||||
|
xPlayer.removeAccountMoney('bank', amount)
|
||||||
|
elseif account == 'money' then
|
||||||
|
xPlayer.removeMoney(amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetItemCount(source, item)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
|
||||||
|
if _esx_ == 'new' then
|
||||||
|
return xPlayer.getInventoryItem(item).count
|
||||||
|
else
|
||||||
|
if string.sub(item, 0, 6):lower() == 'weapon' then
|
||||||
|
local loadoutNum, weapon = xPlayer.getWeapon(item:upper())
|
||||||
|
|
||||||
|
if weapon then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return xPlayer.getInventoryItem(item).count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function RemoveItem(source, item, amount)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if _esx_ == 'new' then
|
||||||
|
xPlayer.removeInventoryItem(item, amount)
|
||||||
|
else
|
||||||
|
if string.sub(item, 0, 6):lower() == 'weapon' then
|
||||||
|
xPlayer.removeWeapon(item)
|
||||||
|
else
|
||||||
|
xPlayer.removeInventoryItem(item, amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AddItem(source, item, count, info)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if _esx_ == 'new' then
|
||||||
|
xPlayer.addInventoryItem(item, count, info)
|
||||||
|
else
|
||||||
|
if string.sub(item, 0, 6):lower() == 'weapon' then
|
||||||
|
xPlayer.addWeapon(item, 90)
|
||||||
|
else
|
||||||
|
xPlayer.addInventoryItem(item, count)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayerNameFunction(source)
|
||||||
|
local name
|
||||||
|
if Config.SteamName then
|
||||||
|
name = GetPlayerName(source) or 'No Data'
|
||||||
|
else
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
name = xPlayer.getName() or 'No Data'
|
||||||
|
end
|
||||||
|
return name
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayerJob(source)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
return xPlayer.job.name
|
||||||
|
end
|
||||||
|
|
||||||
|
function CreateCoreJob(name, label, grades)
|
||||||
|
Core.CreateJob(name, label, grades)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SetCoreJob(source, job, grade)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
xPlayer.setJob(job, grade)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SetCoreJobOffline(identifier, job, grade)
|
||||||
|
MySQL.update('UPDATE users SET job = ?, job_grade = ? WHERE identifier = ?', {job, grade, identifier})
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayersFunction()
|
||||||
|
return Core.GetPlayers()
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif Config['Core']:upper() == 'QBCORE' then
|
||||||
|
|
||||||
|
Core = exports['qb-core']:GetCoreObject()
|
||||||
|
|
||||||
|
RESCB = Core.Functions.CreateCallback
|
||||||
|
GETPFI = Core.Functions.GetPlayer
|
||||||
|
RUI = Core.Functions.CreateUseableItem
|
||||||
|
SetJobEvent = 'QBCore:Server:SetGang'
|
||||||
|
onPlayerDeath = GetResourceState("brutal_ambulancejob") == "started" and 'onPlayerDeath' or 'hospital:server:SetDeathStatus'
|
||||||
|
SQLData = {
|
||||||
|
players = 'players',
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetIdentifier(source)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
while xPlayer == nil do
|
||||||
|
Citizen.Wait(1000)
|
||||||
|
xPlayer = GETPFI(source)
|
||||||
|
end
|
||||||
|
return xPlayer.PlayerData.citizenid
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayerByIdentifier(identifier)
|
||||||
|
return Core.Functions.GetPlayerByCitizenId(identifier)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetAccountMoney(source, account)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if account == 'bank' then
|
||||||
|
return xPlayer.PlayerData.money.bank
|
||||||
|
elseif account == 'money' then
|
||||||
|
return xPlayer.PlayerData.money.cash
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function AddMoneyFunction(source, account, amount)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if account == 'bank' then
|
||||||
|
xPlayer.Functions.AddMoney('bank', amount)
|
||||||
|
elseif account == 'money' then
|
||||||
|
xPlayer.Functions.AddMoney('cash', amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function RemoveAccountMoney(source, account, amount)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
if account == 'bank' then
|
||||||
|
xPlayer.Functions.RemoveMoney('bank', amount)
|
||||||
|
elseif account == 'money' then
|
||||||
|
xPlayer.Functions.RemoveMoney('cash', amount)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetItemCount(source, item)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
local items = xPlayer.Functions.GetItemByName(item)
|
||||||
|
local item_count = 0
|
||||||
|
if items ~= nil then
|
||||||
|
item_count = items.amount
|
||||||
|
else
|
||||||
|
item_count = 0
|
||||||
|
end
|
||||||
|
return item_count
|
||||||
|
end
|
||||||
|
|
||||||
|
function RemoveItem(source, item, amount)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
xPlayer.Functions.RemoveItem(item, amount)
|
||||||
|
end
|
||||||
|
|
||||||
|
function AddItem(source, item, count, info)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
xPlayer.Functions.AddItem(item, count, nil, info)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayerNameFunction(source)
|
||||||
|
local name
|
||||||
|
if Config.SteamName then
|
||||||
|
name = GetPlayerName(source)
|
||||||
|
else
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname
|
||||||
|
end
|
||||||
|
return name
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayerJob(source)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
return xPlayer.PlayerData.gang.name
|
||||||
|
end
|
||||||
|
|
||||||
|
function CreateCoreJob(name, label, grades)
|
||||||
|
Core.Functions.AddGang(name,
|
||||||
|
{
|
||||||
|
label = label,
|
||||||
|
grades = grades,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function UpdateCoreJob(name, label, grades)
|
||||||
|
Core.Functions.UpdateGang(name, {
|
||||||
|
label = label,
|
||||||
|
grades = grades,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function RemoveCoreJob(name)
|
||||||
|
Core.Functions.RemoveGang(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SetCoreJob(source, job, grade)
|
||||||
|
local xPlayer = GETPFI(source)
|
||||||
|
xPlayer.Functions.SetGang(job, grade)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SetCoreJobOffline(identifier, job)
|
||||||
|
local joblabel = "None"
|
||||||
|
if Gangs[job] ~= nil and Gangs[job].label ~= nil then
|
||||||
|
joblabel = Gangs[job].label
|
||||||
|
end
|
||||||
|
|
||||||
|
MySQL.update('UPDATE players SET gang = ? WHERE citizenid = ?', {json.encode({grade = {level = 0, name = "Member"}, name = job, isboss = false, label = joblabel}), identifier})
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetPlayersFunction()
|
||||||
|
return Core.Functions.GetPlayers()
|
||||||
|
end
|
||||||
|
end
|
72
resources/[housing]/brutal_housing/fxmanifest.lua
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
fx_version 'cerulean'
|
||||||
|
games { 'gta5' }
|
||||||
|
lua54 'yes'
|
||||||
|
|
||||||
|
author 'Keres & Dév'
|
||||||
|
description 'Brutal Housing - store.brutalscripts.com'
|
||||||
|
version '1.1.5'
|
||||||
|
|
||||||
|
client_scripts {
|
||||||
|
'config.lua',
|
||||||
|
'configs/furnitures.lua',
|
||||||
|
'configs/interiors.lua',
|
||||||
|
'configs/apartments.lua',
|
||||||
|
'core/client-core.lua',
|
||||||
|
'cl_utils.lua',
|
||||||
|
'client/*.lua',
|
||||||
|
'client/object_placing/gizmo.lua',
|
||||||
|
'client/vendor/freecam/utils.lua',
|
||||||
|
'client/vendor/freecam/config.lua',
|
||||||
|
'client/vendor/freecam/main.lua',
|
||||||
|
'client/vendor/freecam/camera.lua'
|
||||||
|
}
|
||||||
|
|
||||||
|
server_scripts {
|
||||||
|
'@mysql-async/lib/MySQL.lua',
|
||||||
|
'config.lua',
|
||||||
|
'configs/furnitures.lua',
|
||||||
|
'configs/interiors.lua',
|
||||||
|
'configs/apartments.lua',
|
||||||
|
'core/server-core.lua',
|
||||||
|
'sv_utils.lua',
|
||||||
|
'server/*.lua',
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_script {
|
||||||
|
'@ox_lib/init.lua'
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_page "html/index.html"
|
||||||
|
files {
|
||||||
|
"html/index.html",
|
||||||
|
"html/style.css",
|
||||||
|
"html/script.js",
|
||||||
|
"html/assets/**",
|
||||||
|
'locales/*.json',
|
||||||
|
'client/object_placing/dataview.lua'
|
||||||
|
}
|
||||||
|
|
||||||
|
export 'hasKeyToHouse'
|
||||||
|
export 'getPropertyID'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
'ox_lib', -- https://github.com/overextended/ox_lib/releases/latest/download/ox_lib.zip
|
||||||
|
|
||||||
|
'/server:5181', -- ⚠️PLEASE READ⚠️; Requires at least SERVER build 5181
|
||||||
|
'/gameBuild:2189', -- ⚠️PLEASE READ⚠️; Requires at least GAME build 2189.
|
||||||
|
}
|
||||||
|
|
||||||
|
escrow_ignore {
|
||||||
|
'config.lua',
|
||||||
|
'cl_utils.lua',
|
||||||
|
'sv_utils.lua',
|
||||||
|
'core/client-core.lua',
|
||||||
|
'core/server-core.lua',
|
||||||
|
'stream/*.ydr',
|
||||||
|
'stream/*.ytyp',
|
||||||
|
'client/object_placing/dataview.lua',
|
||||||
|
'configs/furnitures.lua',
|
||||||
|
'configs/interiors.lua',
|
||||||
|
'configs/apartments.lua'
|
||||||
|
}
|
||||||
|
dependency '/assetpacks'
|
BIN
resources/[housing]/brutal_housing/html/assets/3d.png
Normal file
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="343" height="73" viewBox="0 0 343 73" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M1 36.5V17C1 8.16344 8.16344 1 17 1H86.25M342 36.5V56C342 64.8366 334.837 72 326 72H256.75" stroke="white" stroke-width="2" stroke-linecap="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 263 B |
52
resources/[housing]/brutal_housing/html/assets/arrows.svg
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<svg width="54" height="35" viewBox="0 0 54 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g filter="url(#filter0_d_229_133)">
|
||||||
|
<mask id="path-1-inside-1_229_133" fill="white">
|
||||||
|
<path d="M6 17.5L17.5 6L29 17.5L17.5 29L6 17.5Z"/>
|
||||||
|
</mask>
|
||||||
|
<path d="M29 17.5L30.4142 18.9142C31.1953 18.1332 31.1953 16.8668 30.4142 16.0858L29 17.5ZM16.0858 7.41421L27.5858 18.9142L30.4142 16.0858L18.9142 4.58579L16.0858 7.41421ZM27.5858 16.0858L16.0858 27.5858L18.9142 30.4142L30.4142 18.9142L27.5858 16.0858Z" fill="#65C95B" mask="url(#path-1-inside-1_229_133)"/>
|
||||||
|
</g>
|
||||||
|
<g filter="url(#filter1_d_229_133)">
|
||||||
|
<mask id="path-3-inside-2_229_133" fill="white">
|
||||||
|
<path d="M15.752 17.5L27.252 6L38.752 17.5L27.252 29L15.752 17.5Z"/>
|
||||||
|
</mask>
|
||||||
|
<path d="M38.752 17.5L40.1662 18.9142C40.9472 18.1332 40.9472 16.8668 40.1662 16.0858L38.752 17.5ZM25.8377 7.41421L37.3377 18.9142L40.1662 16.0858L28.6662 4.58579L25.8377 7.41421ZM37.3377 16.0858L25.8377 27.5858L28.6662 30.4142L40.1662 18.9142L37.3377 16.0858Z" fill="#65C95B" mask="url(#path-3-inside-2_229_133)"/>
|
||||||
|
</g>
|
||||||
|
<g filter="url(#filter2_d_229_133)">
|
||||||
|
<mask id="path-5-inside-3_229_133" fill="white">
|
||||||
|
<path d="M25.5039 17.5L37.0039 6L48.5039 17.5L37.0039 29L25.5039 17.5Z"/>
|
||||||
|
</mask>
|
||||||
|
<path d="M48.5039 17.5L49.9181 18.9142C50.6992 18.1332 50.6992 16.8668 49.9181 16.0858L48.5039 17.5ZM35.5897 7.41421L47.0897 18.9142L49.9181 16.0858L38.4181 4.58579L35.5897 7.41421ZM47.0897 16.0858L35.5897 27.5858L38.4181 30.4142L49.9181 18.9142L47.0897 16.0858Z" fill="#65C95B" mask="url(#path-5-inside-3_229_133)"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<filter id="filter0_d_229_133" x="0.7" y="0.7" width="33.6" height="33.6" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset/>
|
||||||
|
<feGaussianBlur stdDeviation="2.65"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0.395215 0 0 0 0 0.7875 0 0 0 0 0.357656 0 0 0 1 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_229_133"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_229_133" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="filter1_d_229_133" x="10.452" y="0.7" width="33.6" height="33.6" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset/>
|
||||||
|
<feGaussianBlur stdDeviation="2.65"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0.395215 0 0 0 0 0.7875 0 0 0 0 0.357656 0 0 0 1 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_229_133"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_229_133" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="filter2_d_229_133" x="20.2039" y="0.7" width="33.6" height="33.6" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset/>
|
||||||
|
<feGaussianBlur stdDeviation="2.65"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0.395215 0 0 0 0 0.7875 0 0 0 0 0.357656 0 0 0 1 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_229_133"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_229_133" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/automobile.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/axis.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/bike.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/box.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/bubbles.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/buy.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/camera.png
Normal file
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 22 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/desktop.ini
Normal file
BIN
resources/[housing]/brutal_housing/html/assets/door.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
resources/[housing]/brutal_housing/html/assets/flash.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 7 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 5.3 KiB |