# Welcome

**Welcome to Wise Scripts,**

a Service for Fivem Server Owners, to improve and beautify there own Server. Make the Players Experience on the Server better and take the best out of it.&#x20;

Our Service provides, many different Scripts, Standalone Scripts, but also Scripts for popular Frameworks. We look forward to improve the performance for each Script and keep it at its best. \
\
If you have any questions or issues relating to purchases, please contact a Staff Member on our [Discord](https://discord.gg/EBpXBf2zTW) and we will get back to you as soon as possible.


# Wise Garage

The Advanced Garage Script that everyone needs. Multiple parking options, including our "Realistic Parking" System and even more. Configure your Garage to your likings.

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FlFmVSLXrbIrsi3kytp9O%2FWISE_GARAGE_TH.png?alt=media&amp;token=859cb174-0331-4b88-b684-6166be7d862b" alt="" width="563"><figcaption></figcaption></figure></div>

## 💡 Features

* Clean & Simple UI
* For all vehicle types (car & bike, heli, plane, boat)
* Configure to your likings (Colors, Parking Method, etc.)
* Impounds with Job Specific Impounds only for allowed Jobs
* Integrated Impound Job for allowed Jobs
* Display Vehicle Statistics
  * Top Speed
  * Acceleration
  * Braking
  * Traction
  * Trunk Weight (specified in Config for Vehicle Class)
* Multiple Parking Options
  * Realistic Parking
  * Parking Marker
  * Parking via UI
* Hit protection for "Realistic Parking"
* Descriptions for Vehicle Brands or specifically for a Vehicle
* Option to Save Vehicles at parked Garage
* Transfer Vehicles from Garage to another Garage
* Good Performance


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_garage</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_garage.pack.zip</mark> extract the <mark style="color:red;">`wise_garage/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_garage`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>


# Database

{% hint style="danger" %}
ONLY USE THIS if it does not install it **AUTOMATICALLY**
{% endhint %}

> If there are already tables existing, delete those with
>
> ```sql
> DROP TABLE IF EXISTS `owned_vehicles`;
> DROP TABLE IF EXISTS `player_vehicles`;
> ```

```sql
-- USE THIS FOR ESX
ALTER TABLE owned_vehicles ADD COLUMN (
    `favorite` TINYINT(1) DEFAULT 0,
    `nickname` VARCHAR(25) DEFAULT 'NONE',
    `job` VARCHAR(25) DEFAULT NULL,
    `garage` VARCHAR(25) DEFAULT NULL,
    `state` INT(10) DEFAULT 1
);

-- USE THIS FOR QB_CORE
ALTER TABLE player_vehicles ADD COLUMN (
    `favorite` TINYINT(1) DEFAULT '0',
    `nickname` VARCHAR(25) DEFAULT 'NONE',
    `job` VARCHAR(25) DEFAULT NULL
);
```


# Events

{% tabs %}
{% tab title="Server Side" %}

### Put Vehicle in Impound

<pre class="language-lua"><code class="lang-lua"><strong>TriggerEvent("wise_garage:setImpound", "PLATE_NUMBER")
</strong></code></pre>

{% endtab %}
{% endtabs %}


# Example Configs

## Config Categorys

* [<mark style="color:red;">Main</mark>](/scripts/wise-garage/example-configs/main)
* [<mark style="color:red;">Garages</mark>](/scripts/wise-garage/example-configs/garages)
* [<mark style="color:red;">Impounds</mark>](/scripts/wise-garage/example-configs/impounds)


# Main

```lua
Config = {}
Config.Debug = true
Config.Locale = "en"

Config.SpawnVehicleClientSide = false -- Recommended: false | When "true", when Players disconnect the Vehicle will disappear
Config.CheckIfSpawnedVehicleExist = true -- Checks if the Vehicle that is parked out still exists on the (Server / on the Streets)

Config.GarageNpcHash = `a_m_y_business_01`
Config.ImpoundNpcHash = `mp_m_securoguard_01`

Config.Impound = {}
Config.Impound.Price = 3000
Config.Impound.PaymentMethod = "Money" -- Money or Bank | Default: "Money"
Config.Impound.RetrieveVehicleWithDamage = true
Config.Impound.Job = {}
Config.Impound.Job.Active = true
Config.Impound.Job.Reward = {
	Account = "Money", -- Money or Bank | Default: "Money"
	Amount = 50000
}

Config.ParkingInCountdown = 5

Config.ParkingOptions = {}
Config.ParkingOptions.RealisticParking = true
Config.ParkingOptions.UI = true
Config.ParkingOptions.Marker = true

Config.Parking = {}
Config.Parking.HitProtection = true
Config.Parking.LockSpawnedVehicle = false

Config.ParkingIndicator = {}
Config.ParkingIndicator.ParkingPoint = {}
Config.ParkingIndicator.ParkingPoint.Active = true
Config.ParkingIndicator.ParkingPoint.Height = 0.4
Config.ParkingIndicator.ParkingPoint.Color = {
	R = 200,
	G = 0,
	B = 0,
	Alpha = 45
}

Config.ParkingIndicator.Vehicle = {}
Config.ParkingIndicator.Vehicle.Active = true
Config.ParkingIndicator.Vehicle.CanPark = {
	R = 0,
	G = 255,
	B = 0,
	Alpha = 45
}
Config.ParkingIndicator.Vehicle.CanNotPark = {
	R = 255,
	G = 0,
	B = 0,
	Alpha = 45
}

Config.SaveVehicleInGarage = true

Config.Transfer = {}
Config.Transfer.Active = true           -- Can only be used with the Option SaveVehicleInGarage (is true)
Config.Transfer.PaymentMethod = "Money" -- Money or Bank | Default: "Money"
Config.Transfer.VehicleBlacklist = {
	-- "adder",
	-- "t20"
}

Config.Descriptions = {}
Config.Descriptions.Default = "With its roaring engine and sleek design, it's not just a car—it's a declaration of supremacy on wheels."
Config.Descriptions.Manafactures = {
	["mclaren"] = "Meet the McLaren Vortex: where speed meets sophistication in a sleek symphony of power."
}
Config.Descriptions.Vehicles = {
	["t20"] = [[
		The T20: a hellish fusion of speed and chaos, tearing through Los Santos with demonic fury, leaving nothing but shattered dreams and broken records in its wake.
	]]
}

Config.ClassTrunkWeights = {
	[VehicleClass.COMPACT] = 5000,
	[VehicleClass.SEDAN] = 5000,
	[VehicleClass.SUV] = 5000,
	[VehicleClass.COUPES] = 5000,
	[VehicleClass.MUSCLES] = 5000,
	[VehicleClass.CLASSICS] = 5000,
	[VehicleClass.SPORTS] = 5000,
	[VehicleClass.SUPER] = 5000,
	[VehicleClass.MOTORCYCLES] = 0,
	[VehicleClass.OFFROAD] = 5000,
	[VehicleClass.INDUSTRIAL] = 5000,
	[VehicleClass.UTILITY] = 5000,
	[VehicleClass.VANS] = 70000,
	[VehicleClass.BICYCLE] = 0,
	[VehicleClass.BOATS] = 5000,
	[VehicleClass.HELICOPTERS] = 0,
	[VehicleClass.PLANES] = 0,
	[VehicleClass.SERVICE] = 5000,
	[VehicleClass.EMERGENCY] = 90000,
	[VehicleClass.MILITARY] = 90000,
	[VehicleClass.COMMERCIAL] = 160000,
	[VehicleClass.TRAINS] = 0
}

Config.ImpoundBlip = {
	[ImpoundType.CAR_BIKES] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Impound",
		shortRange = true
	},
	[ImpoundType.BOATS] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Boat Impound",
		shortRange = true
	},
	[ImpoundType.PLANES] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Plane Impound",
		shortRange = true
	},
	[ImpoundType.HELICOPTERS] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Helicopter Impound",
		shortRange = true
	}
}


Config.GarageBlip = {
	[GarageType.CAR_BIKES] = {
		sprite = 357,
		scale = 0.9,
		color = 38,
		name = "Garage",
		shortRange = true
	},
	[GarageType.BOATS]  = {
		sprite = 356,
		scale = 0.9,
		color = 38,
		name = "Boat Garage",
		shortRange = true
	},
	[GarageType.PLANES]  = {
		sprite = 359,
		scale = 0.9,
		color = 38,
		name = "Plane Garage",
		shortRange = true
	},
	[GarageType.HELICOPTERS] = {
		sprite = 360,
		scale = 0.9,
		color = 38,
		name = "Helicopter Garage",
		shortRange = true
	},
	[GarageType.JOB_CAR_BIKE] = {
		sprite = 357,
		scale = 0.9,
		color = 38,
		name = "Job Garage",
		shortRange = true
	},
	[GarageType.JOB_BOATS]  = {
		sprite = 356,
		scale = 0.9,
		color = 38,
		name = "Job Boat Garage",
		shortRange = true
	},
	[GarageType.JOB_PLANES]  = {
		sprite = 359,
		scale = 0.9,
		color = 38,
		name = "Job Plane Garage",
		shortRange = true
	},
	[GarageType.JOB_HELICOPTERS] = {
		sprite = 360,
		scale = 0.9,
		color = 38,
		name = "Job Helicopter Garage",
		shortRange = true
	}
}

Config.Notify = function(_type, title, message, time)
	AddTextEntry('WiseGarageNotification', message)
	BeginTextCommandThefeedPost('WiseGarageNotification')
	EndTextCommandThefeedPostTicker(false, true)
end

Config.HelpNotify = function(message, location)
	-- exports.wise_notify:HelpNotify("E", message)
	if location then
		AddTextEntry('WiseGarageFloatingHelpNotification', "~INPUT_CONTEXT~ " .. message)
		SetFloatingHelpTextWorldPosition(1, location + vector3(0.0, 0.0, 1.8))
		SetFloatingHelpTextStyle(1, 1, 2, -1, 3, 0)
		BeginTextCommandDisplayHelp('WiseGarageFloatingHelpNotification')
		EndTextCommandDisplayHelp(2, false, false, -1)
	else
		AddTextEntry('WiseGarageHelpNotification', "~INPUT_CONTEXT~ " .. message)
		BeginTextCommandDisplayHelp('WiseGarageHelpNotification')
		EndTextCommandDisplayHelp(0, false, true, -1)
	end
end

Config.Commands = {}
Config.Commands.ResetVehicle = {}
Config.Commands.ResetVehicle.Active = true
Config.Commands.ResetVehicle.Permission = {
	"admin"
}
```


# Garages

```lua
Config.Garages = {
  ["VespucciBoulevard"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-281.2737, -888.6597, 30.3180, 155.4341),
    Marker = {
      position = vector3(-297.7046, -899.2769, 31.0806),
      color = { r = 255, g = 0, b = 0, alpha = 50 },
      height = 0.8,
      radius = 9.0
    },
    ParkingPoints = {
      vector4(-289.3262, -887.6442, 30.6538, 168.3326),
      vector4(-292.9591, -886.6707, 30.6533, 168.0761),
      vector4(-296.8196, -885.7382, 30.6532, 166.7703),
      vector4(-300.3994, -884.8585, 30.6530, 168.2014),
      vector4(-303.8376, -884.2295, 30.6531, 169.3017)
    }
  },
  ["VehicleGarage2"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-1184.8082, -1510.1483, 3.6493, 308.7324),
    ParkingPoints = {
      vector4(-1182.9225, -1495.5186, 3.3797, 124.4391),
      vector4(-1184.9971, -1492.8241, 3.3797, 128.2506),
      vector4(-1186.4775, -1490.4484, 3.3797, 126.5125),
      vector4(-1188.1830, -1487.6609, 3.3797, 124.0290),
      vector4(-1190.0088, -1485.2574, 3.3797, 121.3981)
    }
  },
  ["JobGarage"] = {
    Type = GarageType.JOB_CAR_BIKE,
    Jobs = { "police" },
    CanTransferVehicles = true,
    ShowBlip = false,
    TransferPrice = 10000,
    InteractionPoint = vector4(393.4704, -1633.0718, 28.2919, 49.5194),
    ParkingPoints = {
      vector4(393.4588, -1628.5911, 28.2919, 49.7105),
      vector4(395.2686, -1626.1876, 28.2919, 51.3226),
      vector4(397.2664, -1623.7968, 28.2919, 49.5357),
      vector4(399.2569, -1621.5566, 28.2919, 51.9322),
      vector4(401.2891, -1619.1069, 28.2919, 50.8291)
    }
  },
  ["VehicleGarage6"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-567.0226, 310.7719, 83.4303, 358.3141),
    ParkingPoints = {
      vector4(-573.9257, 314.4207, 84.1285, 355.0780),
      vector4(-577.0986, 314.6510, 84.2357, 355.9387),
      vector4(-580.6105, 315.1285, 84.3599, 354.2001),
      vector4(-583.9501, 316.0498, 84.4759, 355.3289),
      vector4(-587.2590, 316.4832, 84.5910, 354.0728)
    }
  },
  ["VehicleGarage7"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(213.3340, -809.5040, 30.0149, 336.4026),
    Marker = {
      position = vector3(217.4260, -790.5717, 30.4165),
      color = { r = 255, g = 0, b = 0, alpha = 0 },
      height = 0.8,
      radius = 15.0
    },
    ParkingPoints = {
      vector4(215.4473, -804.3294, 30.3819, 67.8836),
      vector4(216.4445, -801.8696, 30.3819, 66.9018),
      vector4(217.6134, -799.3120, 30.3819, 70.4102),
      vector4(218.3927, -796.8029, 30.3819, 71.4393),
      vector4(219.1927, -794.1615, 30.3819, 71.3161)
    }
  },
  ["VehicleGarage8"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-1538.5250, -442.3141, 34.5919, 323.7970),
    ParkingPoints = {
      vector4(-1535.3207, -434.6856, 35.4421, 223.3738),
      vector4(-1532.8862, -432.3073, 35.4421, 227.4393),
      vector4(-1530.4351, -429.8776, 35.4421, 227.8823),
      vector4(-1528.3076, -427.0571, 35.4421, 230.0373),
      vector4(-1526.1610, -424.3891, 35.4422, 235.7497)
    }
  },
  ["VehicleGarage9"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-1686.1772, 56.0662, 63.1112, 152.1320),
    ParkingPoints = {
      vector4(-1685.2362, 49.6828, 64.0327, 162.2482),
      vector4(-1682.3817, 47.2044, 63.8241, 163.6478),
      vector4(-1679.8312, 44.7176, 63.6412, 158.1182),
      vector4(-1677.4045, 41.9108, 63.0359, 160.9263),
      vector4(-1674.7266, 39.1424, 62.8471, 163.8178)
    }
  },
  ["VehicleGarage10"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(877.5043, -77.1748, 77.8741, 324.8291),
    ParkingPoints = {
      vector4(874.4041, -77.3268, 78.3367, 328.5791),
      vector4(871.3805, -75.5361, 78.3365, 327.0987),
      vector4(8868.4626, -73.7209, 78.3366, 328.2176),
      vector4(865.4337, -71.4874, 78.7642, 325.9083),
      vector4(862.7410, -69.9669, 78.3364, 329.2068)
    }
  },
  ["VehicleGarage11"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(362.3397, 299.0885, 102.8838, 160.5745),
    ParkingPoints = {
      vector4(361.6855, 293.4604, 103.0708, 249.6030),
      vector4(360.4781, 289.8358, 103.0617, 249.1808),
      vector4(359.0222, 286.0490, 103.0473, 248.6110),
      vector4(357.8247, 282.4549, 102.9680, 249.9004),
      vector4(371.1491, 285.2180, 102.8327, 337.9347)
    }
  },
  ["VehicleGarage12"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-73.2631, 911.1243, 234.7587, 207.2989),
    ParkingPoints = {
      vector4(-71.9683, 903.1703, 235.1940, 112.0910),
      vector4(-70.5009, 900.1633, 235.1495, 113.7736),
      vector4(-69.2272, 897.4083, 235.0763, 113.1424),
      vector4(-67.8395, 894.6033, 235.1104, 114.5932),
      vector4(-66.8050, 892.0097, 235.1259, 113.7267)
    }
  },
  ["VehicleGarage13"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(657.7529, 591.7553, 128.0512, 72.4630),
    ParkingPoints = {
      vector4(648.1848, 590.7307, 128.4835, 68.8867),
      vector4(649.5336, 593.9643, 128.4840, 70.0250),
      vector4(650.6724, 597.4305, 128.4834, 70.5229),
      vector4(651.7318, 600.6940, 128.4831, 69.6546),
      vector4(652.9097, 603.9787, 128.4830, 68.6022)
    }
  },
  ["VehicleGarage14"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(1036.7637, -762.6362, 56.9930, 147.0772),
    ParkingPoints = {
      vector4(1023.7770, -756.1136, 57.9865, 222.7975),
      vector4(1020.9519, -758.9218, 57.9923, 223.8658),
      vector4(1018.1779, -761.4280, 57.9754, 218.1854),
      vector4(1015.3297, -763.8111, 57.8917, 225.0971),
      vector4(1016.7662, -769.7897, 57.9185, 307.1381)
    }
  },
  ["VehicleGarage15"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-862.0153, -1271.1735, 4.1502, 327.1397),
    ParkingPoints = {
      vector4(-857.3679, -1267.7085, 5.0002, 297.2523),
      vector4(-854.8346, -1270.1924, 5.0002, 297.9326),
      vector4(-852.1698, -1272.5348, 5.0002, 300.0808),
      vector4(-849.4310, -1274.8109, 5.0002, 299.6418),
      vector4(-847.5628, -1278.3136, 5.0002, 300.1027)
    }
  },
  ["VehicleGarage16"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-1578.3331, -1027.8528, 12.0185, 143.2114),
    ParkingPoints = {
      vector4(-1575.2957, -1029.5586, 13.0183, 201.3328),
      vector4(-1572.8083, -1026.7356, 13.0183, 200.1640),
      vector4(-1570.4530, -1023.5150, 13.0183, 199.0919),
      vector4(-1567.9886, -1020.9490, 13.0183, 208.6044),
      vector4(-1565.5518, -1018.0677, 13.0183, 202.1649)
    }
  },
  ["VehicleGarage17"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-3144.1943, 1121.8016, 19.8497, 247.9527),
    ParkingPoints = {
      vector4(-3141.5095, 1116.9500, 20.7047, 279.2416),
      vector4(-3143.156006, 1113.3333, 20.7043, 280.0381),
      vector4(-3144.3372, 1110.1104, 20.2755, 282.2360),
      vector4(-3145.5659, 1106.8060, 20.2758, 282.5135),
      vector4(-3146.9290, 1103.2808, 20.2765, 281.7104)
    }
  },
  ["VehicleGarage18"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-1148.6783, 2683.3135, 17.0939, 224.9642),
    ParkingPoints = {
      vector4(-1152.1364, 2679.5391, 17.6664, 222.4924),
      vector4(-1154.0922, 2677.2820, 17.6664, 222.2831),
      vector4(-1156.5435, 2675.2014, 17.6662, 221.5183),
      vector4(-1158.7451, 2673.1978, 17.6666, 223.1112),
      vector4(-1161.4196, 2671.0410, 17.6665, 220.9099)
    }
  },
  ["VehicleGarage19"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(1138.5551, 2643.6406, 37.1437, 357.2445),
    ParkingPoints = {
      vector4(1135.3013, 2648.0642, 37.5688, 0.5767),
      vector4(1131.6661, 2648.4343, 37.5688, 359.9518),
      vector4(1127.7023, 2648.3611, 37.5689, 1.9111),
      vector4(1124.0808, 2648.4517, 37.5687, 0.6047),
      vector4(1120.2903, 2647.9155, 37.5685, 0.2695)
    }
  },
  ["VehicleGarage20"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-833.0728, -2351.0686, 13.5706, 268.7591),
    ParkingPoints = {
      vector4(-829.7591, -2356.0439, 14.5707, 324.3136),
      vector4(-826.8560, -2358.0217, 14.5707, 329.0298),
      vector4(-823.7573, -2359.5276, 14.5707, 331.0489),
      vector4(-820.8367, -2361.2852, 14.5707, 327.4803),
      vector4(-817.8660, -2363.0156, 14.5707, 328.2171)
    }
  },
  ["VehicleGarage21"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-2202.3311, 4245.3711, 47.2946, 37.6051),
    ParkingPoints = {
      vector4(-2205.9705, 4248.5889, 47.1398, 36.7514),
      vector4(-2208.5181, 4246.4868, 47.1596, 37.0572),
      vector4(-2210.8220, 4244.7134, 47.1470, 37.7995),
      vector4(-2212.4905, 4241.5166, 47.1567, 36.7388),
      vector4(-2214.9204, 4239.5181, 47.0387, 38.7483)
    }
  },
  ["VehicleGarage22"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(109.7878, 6600.8745, 31.0629, 323.6808),
    ParkingPoints = {
      vector4(117.6620, 6599.5342, 32.0119, 270.9369),
      vector4(121.1063, 6594.3940, 32.0363, 271.4020),
      vector4(126.2758, 6590.0391, 31.9448, 269.9892),
      vector4(131.5208, 6585.0718, 31.9638, 270.8312),
      vector4(135.8551, 6580.0093, 32.0279, 273.4382)
    }
  },
  ["VehicleGarage23"] = {
    Type = GarageType.CAR_BIKES,
    InteractionPoint = vector4(1695.4661, 4785.3760, 40.9968, 94.8297),
    ParkingPoints = {
      vector4(1691.0919, 4788.2319, 41.4940, 88.7306),
      vector4(1690.9962, 4782.1177, 41.4942, 90.7765),
      vector4(1690.4430, 4778.4297, 41.4941, 89.6992),
      vector4(1690.7854, 4774.3311, 41.4945, 90.0399),
      vector4(1690.5939, 4770.2983, 41.4943, 91.0624)
    }
  },
  ["VehicleGarage24"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(1967.7085, 3766.0601, 31.1926, 33.7332),
    ParkingPoints = {
      vector4(1962.8987, 3766.8464, 31.7712, 27.6873),
      vector4(1959.2097, 3764.8291, 31.7722, 30.8483),
      vector4(1956.0415, 3763.0791, 31.7745, 30.1095),
      vector4(1952.9081, 3761.2205, 31.7766, 28.9511),
      vector4(1949.2092, 3759.4878, 31.7792, 28.2056)
    }
  },
  ["BoatGarage1"] = {
    Type = GarageType.BOATS,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-864.4397, -1488.9628, 0.6, 118.3765),
    ParkingPoints = {
      vector4(-855.9249, -1494.5980, 0.0620, 288.9270),
      vector4(-859.1083, -1486.3040, 0.3491, 289.9573),
      vector4(-862.1542, -1477.7483, 0.0585, 290.8152)
    }
  },
  ["BoatGarage2"] = {
    Type = GarageType.BOATS,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-846.4449, -1333.2173, 0.6052, 286.1644),
    ParkingPoints = {
      vector4(-855.6284, -1327.0311, 0.0831, 109.4242),
      vector4(-852.6716, -1335.5789, 0.0878, 109.2054),
      vector4(-849.4216, -1344.0732, 0.0923, 110.4798),
      vector4(-846.2582, -1352.4041, 0.0512, 109.8354),
      vector4(-843.5163, -1360.8591, 0.1026, 109.6366)
    }
  },
  ["HelicopterGarage"] = {
    Type = GarageType.HELICOPTERS,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-707.9766, -1462.6105, 4.0427, 51.2003),
    ParkingPoints = {
      vector4(-697.2078, -1450.1188, 6.1268, 49.6421),
      vector4(-717.7498, -1476.4124, 6.1271, 48.6089),
      vector4(-767.4398, -1449.7616, 6.1307, 229.8354),
      vector4(-748.8340, -1431.0404, 6.1261, 229.7807)
    }
  },
  ["PlaneGarage"] = {
    Type = GarageType.PLANES,
    CanTransferVehicles = true,
    ShowBlip = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-943.8182, -2954.6924, 12.9451, 148.9825),
    ParkingPoints = {
      vector4(-961.2805, -2963.8330, 14.5475, 149.8033),
      vector4(-945.1094, -2976.2424, 14.5481, 149.7807),
      vector4(-962.0237, -3006.5649, 14.7526, 330.1454),
      vector4(-979.8175, -2996.2966, 14.2915, 328.7162)
    }
  }

}

```


# Impounds

```lua
Config.Impounds = {
  ["GangImpound"] = {
    InteractionPoint = vector4(408.7257, -1623.3463, 28.2919, 214.2660),
    Type = ImpoundType.CAR_BIKES,
    ShowBlip = false,
    AllowedJobs = {
      "police"
    },
    ParkingPoints = {
      vector4(416.8553, -1628.1161, 29.2920, 141.0262),
      vector4(419.2605, -1630.1384, 29.2919, 139.3000),
      vector4(420.3629, -1635.8816, 29.2919, 88.2781),
      vector4(420.4494, -1638.9232, 29.2919, 88.5103),
      vector4(420.0555, -1642.1398, 29.2920, 96.6371)
    }
  },
  ["Impound1"] = {
    InteractionPoint = vector4(1524.131836, 3774.092286, 33.503296, 223.937012),
    Type = ImpoundType.CAR_BIKES,
    ShowBlip = true,
    ParkingPoints = {
      vector4(1523.498902, 3767.472412, 34.048340, 223.937012),
      vector4(1517.024170, 3763.068116, 34.014648, 198.425202)
    }
  },
  ["Impound2"] = {
    InteractionPoint = vector4(-58.167034, 6522.540528, 30.487182, 320.314972),
    Type = ImpoundType.CAR_BIKES,
    ShowBlip = true,
    ParkingPoints = {
      vector4(-56.610988, 6533.472656, 31.487182, 223.937012),
      vector4(-50.123078, 6541.213378, 31.487182, 223.937012)
    }
  },
}

```


# Wise Hud

Upgrade your FiveM experience with a sleek HUD: real-time cash, player stats, voice, server info, and detailed vehicle dashboard.

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FWiHg4HEcm0Yl39aaBv84%2FWISE_HUD_TH.png?alt=media&amp;token=b4a32286-9681-4664-930c-3c6a81d06081" alt="" width="563"><figcaption></figcaption></figure></div>

## 💡 Features

* Cash & Bank Balance: View balances with /cash command
* Gun UI: Realistic shooting with vibration effects
* Server Info: See date, time, and player ID
* Location Info: Always know your current position
* Smooth UI Effects: Enjoy seamless, visually appealing gameplay
* Voice: Display voice activity and voice range
* Player Stats
  * Hunger
  * Thirst
  * Stress
  * Stamina
* Vehicle Dashboard
  * Speed
  * Engine Status
  * Headlights


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_hud</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_hud.pack.zip</mark> extract the <mark style="color:red;">`wise_hud/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_hud`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>

####


# Example Configs

## Config Categorys

* [<mark style="color:red;">Main</mark>](/scripts/wise-hud/example-configs/main)


# Main

```lua
Config = {}
Config.Performance = false -- Performance Option, for better performance, non clean UI changes

Config.Timezone = "Europe/Berlin"

Config.Logo = {
    enable = false,
    src = "./imgs/logo.png"
}

Config.Tutorials = {
    enable = true,
    setup = {
        ["F1"] = "shop",
        ["C"] = "chat",
        ["M"] = "menu",
        ["F2"] = "action",
        ["F3"] = "call"
    }
}

Config.ToggleStatus = {
    hunger = true,
    thirst = true,
    stress = true,
    stamina = true
}

Config.VoiceRange = {}
Config.VoiceRange.Marker = {
    enable = true,
    height = 0.5,
    colors = {
        r = 255,
        g = 0,
        b = 0,
        alpha = 100
    }
}
Config.VoiceRange.Index = {
    [0] = 5, -- Total voice__value
    [1] = 10,
    [2] = 15,
    [3] = 19
}

---@type "saltychat" | "pma-voice"
Config.VoiceClient = "saltychat"

Config.UseRPM = true
Config.UseMPH = false             -- If true speed math will be done as MPH, if false KPH will be used (YOU HAVE TO CHANGE CONTENT IN UI.HTML TO DISPLAY THE CORRECT TEXT)
--Stress
Config.StressChance = 0.1         -- Default: 10% -- Percentage Stress Chance When Shooting (0-1)
Config.MinimumStress = 50         -- Minimum Stress Level For Screen Shaking
Config.MinimumSpeedUnbuckled = 50 -- Going Over This Speed Will Cause Stress
Config.MinimumSpeed = 100         -- Going Over This Speed Will Cause Stress
Config.DisablePoliceStress = true -- If true will disable stress for people with the police job
Config.StreesAdd = math.random(1, 3)
Config.InfoPos = 'left'           -- or 'right'

-- Stress
Config.WhitelistedWeaponArmed = { -- weapons specifically whitelisted to not show armed mode
    -- miscellaneous
    `weapon_petrolcan`,
    `weapon_hazardcan`,
    `weapon_fireextinguisher`,
    -- melee
    `weapon_dagger`,
    `weapon_bat`,
    `weapon_bottle`,
    `weapon_crowbar`,
    `weapon_flashlight`,
    `weapon_golfclub`,
    `weapon_hammer`,
    `weapon_hatchet`,
    `weapon_knuckle`,
    `weapon_knife`,
    `weapon_machete`,
    `weapon_switchblade`,
    `weapon_nightstick`,
    `weapon_wrench`,
    `weapon_battleaxe`,
    `weapon_poolcue`,
    `weapon_briefcase`,
    `weapon_briefcase_02`,
    `weapon_garbagebag`,
    `weapon_handcuffs`,
    `weapon_bread`,
    `weapon_stone_hatchet`,
    -- throwables
    `weapon_grenade`,
    `weapon_bzgas`,
    `weapon_molotov`,
    `weapon_stickybomb`,
    `weapon_proxmine`,
    `weapon_snowball`,
    `weapon_pipebomb`,
    `weapon_ball`,
    `weapon_smokegrenade`,
    `weapon_flare`
}

Config.WhitelistedWeaponStress = {
    `weapon_petrolcan`,
    `weapon_hazardcan`,
    `weapon_fireextinguisher`
}

Config.Lang = {
    ['stress_gain'] = { label = "Gained Stress", type = "error", time = 5000 },
    ['stress_removed'] = { label = "Stress removed", type = "success", time = 5000 },
}

Config.MaxPlayer = GetConvarInt('sv_maxclients', 48)

Config.ZoneName = {
    ['AIRP'] = 'Los Santos International Airport',
    ['ALAMO'] = 'Alamo Sea',
    ['ALTA'] = 'Alta',
    ['ARMYB'] = 'Fort Zancudo',
    ['BANHAMC'] = 'Banham Canyon Dr',
    ['BANNING'] = 'Banning',
    ['BEACH'] = 'Vespucci Beach',
    ['BHAMCA'] = 'Banham Canyon',
    ['BRADP'] = 'Braddock Pass',
    ['BRADT'] = 'Braddock Tunnel',
    ['BURTON'] = 'Burton',
    ['CALAFB'] = 'Calafia Bridge',
    ['CANNY'] = 'Raton Canyon',
    ['CCREAK'] = 'Cassidy Creek',
    ['CHAMH'] = 'Chamberlain Hills',
    ['CHIL'] = 'Vinewood Hills',
    ['CHU'] = 'Chumash',
    ['CMSW'] = 'Chiliad Mountain State Wilderness',
    ['CYPRE'] = 'Cypress Flats',
    ['DAVIS'] = 'Davis',
    ['DELBE'] = 'Del Perro Beach',
    ['DELPE'] = 'Del Perro',
    ['DELSOL'] = 'La Puerta',
    ['DESRT'] = 'Grand Senora Desert',
    ['DOWNT'] = 'Downtown',
    ['DTVINE'] = 'Downtown Vinewood',
    ['EAST_V'] = 'East Vinewood',
    ['EBURO'] = 'El Burro Heights',
    ['ELGORL'] = 'El Gordo Lighthouse',
    ['ELYSIAN'] = 'Elysian Island',
    ['GALFISH'] = 'Galilee',
    ['GOLF'] = 'GWC and Golfing Society',
    ['GRAPES'] = 'Grapeseed',
    ['GREATC'] = 'Great Chaparral',
    ['HARMO'] = 'Harmony',
    ['HAWICK'] = 'Hawick',
    ['HORS'] = 'Vinewood Racetrack',
    ['HUMLAB'] = 'Humane Labs and Research',
    ['JAIL'] = 'Bolingbroke Penitentiary',
    ['KOREAT'] = 'Little Seoul',
    ['LACT'] = 'Land Act Reservoir',
    ['LAGO'] = 'Lago Zancudo',
    ['LDAM'] = 'Land Act Dam',
    ['LEGSQU'] = 'Legion Square',
    ['LMESA'] = 'La Mesa',
    ['LOSPUER'] = 'La Puerta',
    ['MIRR'] = 'Mirror Park',
    ['MORN'] = 'Morningwood',
    ['MOVIE'] = 'Richards Majestic',
    ['MTCHIL'] = 'Mount Chiliad',
    ['MTGORDO'] = 'Mount Gordo',
    ['MTJOSE'] = 'Mount Josiah',
    ['MURRI'] = 'Murrieta Heights',
    ['NCHU'] = 'North Chumash',
    ['NOOSE'] = 'N.O.O.S.E',
    ['OCEANA'] = 'Pacific Ocean',
    ['PALCOV'] = 'Paleto Cove',
    ['PALETO'] = 'Paleto Bay',
    ['PALFOR'] = 'Paleto Forest',
    ['PALHIGH'] = 'Palomino Highlands',
    ['PALMPOW'] = 'Palmer-Taylor Power Station',
    ['PBLUFF'] = 'Pacific Bluffs',
    ['PBOX'] = 'Pillbox Hill',
    ['PROCOB'] = 'Procopio Beach',
    ['RANCHO'] = 'Rancho',
    ['RGLEN'] = 'Richman Glen',
    ['RICHM'] = 'Richman',
    ['ROCKF'] = 'Rockford Hills',
    ['RTRAK'] = 'Redwood Lights Track',
    ['SANAND'] = 'San Andreas',
    ['SANCHIA'] = 'San Chianski Mountain Range',
    ['SANDY'] = 'Sandy Shores',
    ['SKID'] = 'Mission Row',
    ['SLAB'] = 'Stab City',
    ['STAD'] = 'Maze Bank Arena',
    ['STRAW'] = 'Strawberry',
    ['TATAMO'] = 'Tataviam Mountains',
    ['TERMINA'] = 'Terminal',
    ['TEXTI'] = 'Textile City',
    ['TONGVAH'] = 'Tongva Hills',
    ['TONGVAV'] = 'Tongva Valley',
    ['VCANA'] = 'Vespucci Canals',
    ['VESP'] = 'Vespucci',
    ['VINE'] = 'Vinewood',
    ['WINDF'] = 'Ron Alternates Wind Farm',
    ['WVINE'] = 'West Vinewood',
    ['ZANCUDO'] = 'Zancudo River',
    ['ZP_ORT'] = 'Port of South Los Santos',
    ['ZQ_UAR'] = 'Davis Quartz',
    ['PROL'] = 'Prologue / North Yankton',
    ['ISHeist'] = 'Cayo Perico Island',
}

```


# Wise Hunting

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FUXXHZVjpaG8kFwBiOjoi%2FWISE_HUNTING.png?alt=media&amp;token=e13e25ce-bc02-40ff-b186-20a52fa96369" alt="" width="563"><figcaption></figcaption></figure></div>

## 💡 Features

* Good Performance (0.00 ms)
* Setup Infinite Zones
* Hunting Gadgets
* Market (Sell Loot, Buy Gadgets)
* Change Animals Loot, Aggressiveness, Health, Loot Drop Chance, etc.


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_hunting</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_hunting.pack.zip</mark> extract the <mark style="color:red;">`wise_hunting/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_hunting`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>

####


# Example Configs

## Config Categorys

* [<mark style="color:red;">Main</mark>](/scripts/wise-hunting/example-configs/main)
* [<mark style="color:red;">Animals</mark>](/scripts/wise-hunting/example-configs/animals)
* [<mark style="color:red;">Huntareas</mark>](/scripts/wise-hunting/example-configs/huntareas)
* [<mark style="color:red;">Market</mark>](/scripts/wise-hunting/example-configs/market)


# Main

```lua
Config = {}

Config.Debug = true

Config.Locale = "en"

Config.Notify = function(msg)
  AddTextEntry('Notification', msg)
  BeginTextCommandThefeedPost('Notification')
  EndTextCommandThefeedPostTicker(false, true)
end

Config.HelpNotify = function(msg)
  AddTextEntry('huntingHelpNotify', "~INPUT_CONTEXT~ " .. msg)
  DisplayHelpTextThisFrame('huntingHelpNotify', false)
end

---@param duration number in ms
Config.ProgressBar = function (duration)

end

Config.Use3DWorldText = true

Config.Keys = {
  ButcherAnimal = "G"
}

Config.Butcher = {}
Config.Butcher.Minigame = {}
Config.Butcher.Minigame.Active = false
Config.Butcher.Minigame.MaxPressedKeys = 5
Config.Butcher.Minigame.LookAtKeys = true
Config.Butcher.Minigame.DisplayOnScreenEye = true -- only works when 'LookAtKeys' is also true
Config.Butcher.Minigame.KeyList = {
  "G",
  "E",
  "F"
}

Config.Gadgets = {
  Grill = {
    Model = "wise_bbq", -- VANILLA: gr_prop_gr_hobo_stove_01
    CookingTimePerItem = 10, -- in Secondes
    Price = 1000
  },
  Tracker = {
    Duration = 20, -- in Secondes
    Price = 600
  },
  Bait = {
    RadialBlip = true,
    Duration = 30, -- in Secondes
    Radius = 80,
    Price = 700
  }
}

Config.GrillList = {
  {
    label = "Grilled Deer Meat",
    from = "deer_meat",
    to = "grilled_deer_meat"
  },
  {
    label = "Grilled Boar Meat",
    from = "boar_meat",
    to = "grilled_boar_meat"
  },
  {
    label = "Grilled Pork",
    from = "pork",
    to = "grilled_pork"
  },
  {
    label = "Grilled Beef",
    from = "beef",
    to = "grilled_beef"
  },
  {
    label = "Grilled Chicken Wings",
    from = "chicken_wings",
    to = "grilled_chicken_wings"
  },
  {
    label = "Grilled Lion Meat",
    from = "lion_meat",
    to = "grilled_lion_meat"
  },
  {
    label = "Grilled Rabbit Meat",
    from = "rabbit_meat",
    to = "grilled_rabbit_meat"
  }
}
```


# Animals

```lua
Config.Animals = {
  {
    name = "Deer",
    health = 300,
    model = "a_c_deer",
    aggressive = false,
    loot = {
      { item = "animalskin",        amount = 8,  dropChance = 0.90 },
      { item = "peltdeer1stargold", amount = 4,  dropChance = 0.35 },
      { item = "peltdeer2stargold", amount = 3,  dropChance = 0.25 },
      { item = "peltdeer3stargold", amount = 2,  dropChance = 0.15 },
      { item = "peltdeer3starred",  amount = 1,  dropChance = 0.10 },
      { item = "deerantler",        amount = 1,  dropChance = 0.10 },
      { item = "deer_meat",         amount = 10, dropChance = 1.00 }
    }
  },
  {
    name = "Boar",
    health = 500,
    model = "a_c_boar",
    aggressive = true,
    loot = {
      { item = "animalskin",        amount = 8,  dropChance = 0.90 },
      { item = "peltboar1stargold", amount = 4,  dropChance = 0.35 },
      { item = "peltboar2stargold", amount = 3,  dropChance = 0.25 },
      { item = "peltboar3stargold", amount = 2,  dropChance = 0.15 },
      { item = "peltboar3starred",  amount = 1,  dropChance = 0.10 },
      { item = "boar_meat",         amount = 13, dropChance = 1.00 }
    }
  },
  {
    name = "Pig",
    health = 200,
    model = "a_c_pig",
    aggressive = false,
    loot = {
      { item = "animalskin",            amount = 8, dropChance = 0.90 },
      { item = "pelthousepig1stargold", amount = 4, dropChance = 0.35 },
      { item = "pelthousepig2stargold", amount = 3, dropChance = 0.25 },
      { item = "pelthousepig3stargold", amount = 2, dropChance = 0.15 },
      { item = "pelthousepig3starred",  amount = 1, dropChance = 0.10 },
      { item = "pork",                  amount = 5, dropChance = 1.00 }
    }
  },
  {
    name = "Cow",
    health = 300,
    model = "a_c_cow",
    aggressive = false,
    loot = {
      { item = "animalskin",       amount = 8, dropChance = 0.90 },
      { item = "peltcow1stargold", amount = 4, dropChance = 0.35 },
      { item = "peltcow2stargold", amount = 3, dropChance = 0.25 },
      { item = "peltcow3stargold", amount = 2, dropChance = 0.15 },
      { item = "peltcow3starred",  amount = 1, dropChance = 0.10 },
      { item = "beef",             amount = 6, dropChance = 1.00 }
    }
  },
  {
    name = "Lion",
    health = 850,
    model = "a_c_mtlion",
    aggressive = true,
    loot = {
      { item = "animalskin",      amount = 8,  dropChance = 0.90 },
      { item = "petlion1starred", amount = 4,  dropChance = 0.35 },
      { item = "petlion2starred", amount = 3,  dropChance = 0.25 },
      { item = "petlion3starred", amount = 1,  dropChance = 0.10 },
      { item = "lion_meat",       amount = 25, dropChance = 1.00 }
    }
  },
  {
    name = "Coyote",
    health = 350,
    model = "a_c_coyote",
    aggressive = true,
    loot = {
      { item = "animalskin",          amount = 8,  dropChance = 0.90 },
      { item = "coyotepelt1stargold", amount = 4,  dropChance = 0.35 },
      { item = "coyotepelt2stargold", amount = 3,  dropChance = 0.25 },
      { item = "coyotepelt3stargold", amount = 2,  dropChance = 0.15 },
      { item = "coyotepelt3starred",  amount = 1,  dropChance = 0.10 },
      { item = "meat",                amount = 10, dropChance = 1.00 }
    }
  },
  {
    name = "Chicken",
    health = 200,
    model = "a_c_hen",
    aggressive = false,
    loot = {
      { item = "animalskin",           amount = 8,  dropChance = 0.90 },
      { item = "peltchicken1stargold", amount = 4,  dropChance = 0.35 },
      { item = "peltchicken2stargold", amount = 3,  dropChance = 0.25 },
      { item = "peltchicken3stargold", amount = 2,  dropChance = 0.15 },
      { item = "peltchicken3starred",  amount = 1,  dropChance = 0.10 },
      { item = "chicken_wings",        amount = 10, dropChance = 1.00 }
    }
  },

  {
    name = "Cat",
    health = 200,
    model = "a_c_cat_01",
    aggressive = false,
    loot = {
      { item = "animalskin",      amount = 8,  dropChance = 0.90 },
      { item = "peltcat1starred", amount = 4,  dropChance = 0.35 },
      { item = "peltcat2starred", amount = 3,  dropChance = 0.25 },
      { item = "peltcat3starred", amount = 1,  dropChance = 0.10 },
      { item = "meat",            amount = 10, dropChance = 1.00 }
    }
  },
  {
    name = "Rabbit",
    health = 200,
    model = "a_c_rabbit_01",
    aggressive = false,
    loot = {
      { item = "animalskin",          amount = 8,  dropChance = 0.90 },
      { item = "peltrabbit1stargold", amount = 4,  dropChance = 0.35 },
      { item = "peltrabbit2stargold", amount = 3,  dropChance = 0.25 },
      { item = "peltrabbit3stargold", amount = 2,  dropChance = 0.15 },
      { item = "peltrabbit3starred",  amount = 1,  dropChance = 0.10 },
      { item = "rabbit_meat",         amount = 10, dropChance = 1.00 }
    }
  },
}

```


# Huntareas

```lua
Config.HuntAreas = {
  {
    name = "Cow/Deer Area",
    spawnInterval = 5,
    maxAnimals = 20,
    position = vector3(-1453.1859, 4640.0811, 51.2587),
    radius = 150,
    blip = {
      active = true,
      radialblip = true,
      color = 50,
      size = 1.4,
      sprite = 141
    },
    animals = {
      "deer",
      "cow"
    },
    weaponWhitelist = {
     "weapon_sniperrifle",
     "weapon_assaultrifle",
     "weapon_wise_hunting_shotgun",
     "weapon_wise_hunting_sniper",
     "weapon_wise_hunting_sniper2"
    }
  },
  {
    name = "Lion Area",
    spawnInterval = 3,
    maxAnimals = 10,
    position = vector3(-179.6747, 4674.1865, 171.2702),
    radius = 100,
    blip = {
      active = true,
      radialblip = true,
      color = 60,
      size = 1.4,
      sprite = 463
    },
    animals = {
      "lion"
    },
    weaponWhitelist = {
     "weapon_sniperrifle",
     "weapon_wise_hunting_shotgun",
     "weapon_wise_hunting_sniper",
     "weapon_wise_hunting_sniper2"
    }
  }
}
```


# Market

```lua
Config.Market = {
  Active = true,
  position = vector4(-1630.4707, 4738.9683, 53.1014, 314.4129),
  model = "g_m_m_casrn_01",
  blip = {
    text = "Hunting Market",
    color = 50,
    size = 1.4, 
    sprite = 480
  },
  
  Sell = {
	["Other"] = {
      {
        label = "Meat",
        description = "Sell Meat",
        item = "meat",
        price = 200
      },
      {
        label = "Animalskin",
        description = "Sell Animal Fur",
        item = "animalskin",
        price = 500
      },
    },
    ["Deer"] = {
      {
        label = "Deer Fur quality 1",
        description = "Sell Deer Pelt quality 1",
        item = "peltdeer1stargold",
        price = 200
      },
      {
        label = "Deer Fur quality 2",
        description = "Sell Deer Pelt quality 2",
        item = "peltdeer2stargold",
        price = 500
      },
      {
        label = "Deer Fur quality 3",
        description = "Sell Deer Pelt quality 1",
        item = "peltdeer3stargold",
        price = 700
      },
	        {
        label = "Deer Fur illegal quality 1",
        description = "Sell Deer illegal Pelt quality 1",
        item = "peltdeer1starred",
        price = 1000
      },
      {
        label = "Deer Fur illegal quality 2",
        description = "Sell Deer illegal Pelt quality 2",
        item = "peltdeer2starred",
        price = 1300
      },
      {
        label = "Deer Fur illegal quality 3",
        description = "Sell Deer illegal Pelt quality 1",
        item = "peltdeer2starred",
        price = 1600
      }
    },
    ["Boar"] = {
      {
        label = "Boar Fur quality 1",
        description = "Sell Boar Pelt quality 1",
        item = "peltboar1stargold",
        price = 200
      },
      {
        label = "Boar Fur quality 2",
        description = "Sell Boar Pelt quality 2",
        item = "peltboar2stargold",
        price = 500
      },
      {
        label = "Boar Fur quality 3",
        description = "Sell Boar Pelt quality 1",
        item = "peltboar3stargold",
        price = 700
      },
	        {
        label = "Boar Fur illegal quality 1",
        description = "Sell Boar illegal Pelt quality 1",
        item = "peltboar1starred",
        price = 1000
      },
      {
        label = "Boar Fur illegal quality 2",
        description = "Sell Boar illegal Pelt quality 2",
        item = "peltboar2starred",
        price = 1300
      },
      {
        label = "Boar Fur illegal quality 3",
        description = "Sell Boar illegal Pelt quality 1",
        item = "peltboar3starred",
        price = 1600
      }
    },
    ["Pig"] = {
      {
        label = "Pig Fur quality 1",
        description = "Sell Pig Pelt quality 1",
        item = "pelthousepig1stargold",
        price = 200
      },
      {
        label = "Pig Fur quality 2",
        description = "Sell Pig Pelt quality 2",
        item = "pelthousepig2stargold",
        price = 500
      },
      {
        label = "Pig Fur quality 3",
        description = "Sell Pig Pelt quality 1",
        item = "pelthousepig3stargold",
        price = 700
      },
	        {
        label = "Pig Fur illegal quality 1",
        description = "Sell Pig illegal Pelt quality 1",
        item = "pelthousepig1starred",
        price = 1000
      },
      {
        label = "Pig Fur illegal quality 2",
        description = "Sell Pig illegal Pelt quality 2",
        item = "pelthousepig2starred",
        price = 1300
      },
      {
        label = "Pig Fur illegal quality 3",
        description = "Sell Pig illegal Pelt quality 1",
        item = "pelthousepig3starred",
        price = 1600
      }
    },
    ["Cow"] = {
      {
        label = "Cow Fur quality 1",
        description = "Sell Cow Pelt quality 1",
        item = "peltcow1stargold",
        price = 200
      },
      {
        label = "Cow Fur quality 2",
        description = "Sell Cow Pelt quality 2",
        item = "peltcow2stargold",
        price = 500
      },
      {
        label = "Cow Fur quality 3",
        description = "Sell Cow Pelt quality 1",
        item = "peltcow3stargold",
        price = 700
      },
	        {
        label = "Cow Fur illegal quality 1",
        description = "Sell Cow illegal Pelt quality 1",
        item = "peltcow1starred",
        price = 1000
      },
      {
        label = "Cow Fur illegal quality 2",
        description = "Sell Cow illegal Pelt quality 2",
        item = "peltcow2starred",
        price = 1300
      },
      {
        label = "Cow Fur illegal quality 3",
        description = "Sell Cow illegal Pelt quality 1",
        item = "peltcow3starred",
        price = 1600
      }
    },
    ["Rabbit"] = {
      {
        label = "Rabbit Fur quality 1",
        description = "Sell Rabbit Pelt quality 1",
        item = "peltrabbit1stargold",
        price = 200
      },
      {
        label = "Rabbit Fur quality 2",
        description = "Sell Rabbit Pelt quality 2",
        item = "peltrabbit2stargold",
        price = 500
      },
      {
        label = "Rabbit Fur quality 3",
        description = "Sell Rabbit Pelt quality 1",
        item = "peltrabbit3stargold",
        price = 700
      },
	        {
        label = "Rabbit Fur illegal quality 1",
        description = "Sell Rabbit illegal Pelt quality 1",
        item = "peltrabbit1starred",
        price = 1000
      },
      {
        label = "Rabbit Fur illegal quality 2",
        description = "Sell Rabbit illegal Pelt quality 2",
        item = "peltrabbit2starred",
        price = 1300
      },
      {
        label = "Rabbit Fur illegal quality 3",
        description = "Sell Rabbit illegal Pelt quality 1",
        item = "peltrabbit3starred",
        price = 1600
      }
    },
    ["Chicken"] = {
      {
        label = "Chicken Fur quality 1",
        description = "Sell Chicken Pelt quality 1",
        item = "peltchicken1stargold",
        price = 200
      },
      {
        label = "Chicken Fur quality 2",
        description = "Sell Chicken Pelt quality 2",
        item = "peltchicken2stargold",
        price = 500
      },
      {
        label = "Chicken Fur quality 3",
        description = "Sell Chicken Pelt quality 1",
        item = "peltchicken3stargold",
        price = 700
      },
	        {
        label = "Chicken Fur illegal quality 1",
        description = "Sell Chicken illegal Pelt quality 1",
        item = "peltchicken1starred",
        price = 1000
      },
      {
        label = "Chicken Fur illegal quality 2",
        description = "Sell Chicken illegal Pelt quality 2",
        item = "peltchicken2starred",
        price = 1300
      },
      {
        label = "Chicken Fur illegal quality 3",
        description = "Sell Chicken illegal Pelt quality 1",
        item = "peltchicken3starred",
        price = 1600
      }
    },
    ["Coyote"] = {
      {
        label = "Coyote Fur quality 1",
        description = "Sell Coyote Pelt quality 1",
        item = "peltcow1stargold",
        price = 200
      },
      {
        label = "Coyote Fur quality 2",
        description = "Sell Coyote Pelt quality 2",
        item = "peltcow2stargold",
        price = 500
      },
      {
        label = "Coyote Fur quality 3",
        description = "Sell Coyote Pelt quality 1",
        item = "peltcow3stargold",
        price = 700
      },
	        {
        label = "Coyote Fur illegal quality 1",
        description = "Sell Coyote illegal Pelt quality 1",
        item = "peltcow1starred",
        price = 1000
      },
      {
        label = "Coyote Fur illegal quality 2",
        description = "Sell Coyote illegal Pelt quality 2",
        item = "peltcow2starred",
        price = 1300
      },
      {
        label = "Coyote Fur illegal quality 3",
        description = "Sell Coyote illegal Pelt quality 1",
        item = "peltcow3starred",
        price = 1600
      }
    },
	["Cat"] = {
      {
        label = "Cat Fur quality 1",
        description = "Sell Cat Pelt quality 1",
        item = "peltcat1stargold",
        price = 200
      },
      {
        label = "Cat Fur quality 2",
        description = "Sell Cat Pelt quality 2",
        item = "peltcat2stargold",
        price = 500
      },
      {
        label = "Cat Fur quality 3",
        description = "Sell Cat Pelt quality 1",
        item = "peltcat3stargold",
        price = 700
      },
	        {
        label = "Cat Fur illegal quality 1",
        description = "Sell Cat illegal Pelt quality 1",
        item = "peltcat1starred",
        price = 1000
      },
      {
        label = "Cat Fur illegal quality 2",
        description = "Sell Cat illegal Pelt quality 2",
        item = "peltcat2starred",
        price = 1300
      },
      {
        label = "Cat Fur illegal quality 3",
        description = "Sell Cat illegal Pelt quality 1",
        item = "peltcat3starred",
        price = 1600
      }
    },
    ["Lion"] = {
      {
        label = "Lion Fur quality 1",
        description = "Sell Lion Pelt quality 1",
        item = "peltlion1stargold",
        price = 200
      },
      {
        label = "Lion Fur quality 2",
        description = "Sell Lion Pelt quality 2",
        item = "peltlion2stargold",
        price = 500
      },
      {
        label = "Lion Fur quality 3",
        description = "Sell Lion Pelt quality 1",
        item = "peltlion3stargold",
        price = 700
      },
	        {
        label = "Lion Fur illegal quality 1",
        description = "Sell Lion illegal Pelt quality 1",
        item = "peltlion1starred",
        price = 1000
      },
      {
        label = "Lion Fur illegal quality 2",
        description = "Sell Lion illegal Pelt quality 2",
        item = "peltlion2starred",
        price = 1300
      },
      {
        label = "Lion Fur illegal quality 3",
        description = "Sell Lion illegal Pelt quality 1",
        item = "peltlion3starred",
        price = 1600
      }
    }
  }
}
```


# Wise Gungame

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FV1L8xT1YtDm1botczlM8%2FWISE_GUNGAME_THUMBNAIL.png?alt=media&amp;token=a57d4be0-11f9-4874-b1ee-377a4477c0d3" alt="" width="563"><figcaption></figcaption></figure></div>

## 💡 Features

* Configure UI Colors
* Configure Ingame Stuff (Marker, Ped, etc.)
* Add as many Lobbys as you like
* Random Spawn: player spawns are fully random
* Set how many kills are needed to receive the next weapon
* Set different weapons, the weapon order and how many weapons for each Zone
* Set min/max players for each lobby (Lobby will automatically start if it reaches the required minimum player count)


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_gungame</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_gungame.pack.zip</mark> extract the <mark style="color:red;">`wise_gungame/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_gungame`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>

####


# Setup for Ambulancejob

## Block PlayerDeath

### Example with [esx\_ambulancejob](https://github.com/esx-framework/esx_ambulancejob)

1. Open Directory <mark style="color:red;">`client/`</mark>
2. Open File <mark style="color:red;">`main.lua`</mark>
3. Search for <mark style="color:red;">`esx:onPlayerDeath`</mark> (STRG+F)
4. Replace <mark style="color:red;">`AddEventHandler`</mark> with the example below

```lua
AddEventHandler('esx:onPlayerDeath', function(data)
  if GetResourceState('wise_gungame') == 'started' then 
	if not exports.wise_gungame:inLobby() then 
	  OnPlayerDeath()
	end
  else
    OnPlayerDeath()
  end
end)
```

### Example with [qb-ambulancejob](https://github.com/qbcore-framework/qb-ambulancejob)

1. Open Directory <mark style="color:red;">`client/`</mark>
2. Open File <mark style="color:red;">`dead.lua`</mark>
3. Search <mark style="color:red;">`gameEventTriggered`</mark> for (STRG+F)
4. Replace <mark style="color:red;">`AddEventHandler`</mark> with example below

```lua
AddEventHandler('gameEventTriggered', function(event, data)
    local inFight = false
    if GetResourceState('wise_gungame') == 'started' then 
        if exports.wise_gungame:inLobby() then
            ResetAll()
            inFight = true 
        end
    end


    if event == "CEventNetworkEntityDamage" and not inFight then
        local victim, attacker, victimDied, weapon = data[1], data[2], data[4], data[7]
        if not IsEntityAPed(victim) then return end
        if victimDied and NetworkGetPlayerIndexFromPed(victim) == PlayerId() and IsEntityDead(PlayerPedId()) then
            if not InLaststand then
                SetLaststand(true)
            elseif InLaststand and not isDead then
                SetLaststand(false)
                local playerid = NetworkGetPlayerIndexFromPed(victim)
                local playerName = GetPlayerName(playerid) .. " " .. "("..GetPlayerServerId(playerid)..")" or Lang:t('info.self_death')
                local killerId = NetworkGetPlayerIndexFromPed(attacker)
                local killerName = GetPlayerName(killerId) .. " " .. "("..GetPlayerServerId(killerId)..")" or Lang:t('info.self_death')
                local weaponLabel = QBCore.Shared.Weapons[weapon].label or 'Unknown'
                local weaponName = QBCore.Shared.Weapons[weapon].name or 'Unknown'
                TriggerServerEvent("qb-log:server:CreateLog", "death", Lang:t('logs.death_log_title', {playername = playerName, playerid = GetPlayerServerId(playerid)}), "red", Lang:t('logs.death_log_message', {killername = killerName, playername = playerName, weaponlabel = weaponLabel, weaponname = weaponName}))
                deathTime = Config.DeathTime
                OnDeath()
                DeathTimer()
            end
        end
    end
end)
```


# Wise Faction

A Advanced Gang System with a build in Creator to directly build and edit all Gangs live on your Server

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2Fg9kVG3JWS3sgxsuFfpow%2FWISE_FACTION_PREV2.png?alt=media&amp;token=19aa0495-cbb8-4d29-86b9-f797a97ade43" alt="" width="563"><figcaption></figcaption></figure></div>

## 💡 Features

### :desktop: Menu

* Use build in Colors and Color Picker to select the Factions Color
* **Main Tab**, contains a Progress Bar and the Faction Level, an Invite Box, the Colors to choose from and Buttons to open the Factions Warehouse, Money, Shop, FFA
* **Logs Tab**, for all Changes made to the Faction, search for Actions or Player who made the changes
* **Members Tab**, to set rank for each Faction Member or kick the Member (Uprank, Derank, Kick)
* **Settings Tab**, to edit Permissions for each Rank and change the Rank Names
* **Missions Tab**, displays the Faction Missions and a List of Missions to choose from that refreshes everytime after a specific time

### 🎨 Creator

* **Edit Position**, changes the Faction Position for the Menu and the Garage and also the Model for each NPC
* **Edit Color**, changes the Color for the Faction directly in the Creator itself
* **Garage/Member List**, displays all Vehicles/Members of the Faction, also can remove Member/Vehicle from the List
* **Amount of Ranks**, sets the amount of Ranks the Factions should have
* **Warehousespace**, sets the amount of Items the Warehouse is able to store
* **Enable/Disable Robbery/Gangwar**, can be set to enable or disable the Robberys/Gangwars for the Faction

### :house: Warehouse

* **Store Items**, in the Factions Warehouse if you the member has permissions to do so
* **Filter Weapons**, can be set in the Config, if the Weapons and Items should be seperated

### :vs: FFA

* **Select Weapons**, can be used by Members with the permission to select weapons for FFA can select Weapons that should be used in the FFA , the Weapons that can be selected from can be set in the Config
* **Set Position**, for the FFA in the Config or set if the FFA should be on the Faction Position

### :gun: Gangwar

* **Start a War**, by attacking a Zone that got captured by another Faction
* **Conquer**, the Zone by winning the Gangwar against the other Faction
* **Rewards**, the Faction that wins the Gangwar. Rewards can be set in the Config

### :moneybag: Robbery

* **Informant**, randomly appears on different Spots that can be set through the Config, he gives you the Information for the next Robbery
* **Start a Robbery**, by going to the Location the Informant gave u and Press E in the Marker
* **Rob together**, by simply going into the Marker of the started Robbery, but participants can also not leave the Robbery once they have joined

### :dart: MISSIONS **\[NEW]**

* **Create Missions**, create your own Missions for the Factions, all Missions can be combined with extern Scripts, set the Loot for each Mission, etc.
* **Available List**, displays all random Missions (Amount of Missions can be set in the Config). The List Updates after a specific time, the refresh time can be set in the Config

## 📹 Videos

{% embed url="<https://www.youtube.com/watch?v=APSZ_AEbcgY>" %}
Wise Faction Trailer Video
{% endembed %}

{% embed url="<https://www.youtube.com/watch?t=5s&v=Z6krCsDCLDU>" %}
Wise Faction Showcase Video
{% endembed %}

## 📹 Little Preview GIFs

<div data-full-width="false"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FJdzlrdKbK0dGTz6aDBEj%2FWISE_FACTION_GIF_GANGWAR.gif?alt=media&amp;token=dfb1f618-b3ea-4334-9357-9c2e033d0dd4" alt="" width="450"><figcaption><p>Gangwar Zone Color changing</p></figcaption></figure> <figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FZOGzomjmOnrBR6MPYzW2%2FWISE_FACTION_GIF_MISSIONS.gif?alt=media&amp;token=a13db2fe-f34d-400b-8713-701c6bc2e403" alt="" width="450"><figcaption><p>Mission accept and claim</p></figcaption></figure></div>

<div><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FPVHZXGyizo3nH2gQ43Cu%2FWISE_FACTION_GIF_COLORS.gif?alt=media&amp;token=76108cc8-132e-46c6-9b8f-41b760e42e60" alt="" width="450"><figcaption><p>Menu Color Picker</p></figcaption></figure> <figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FSTT8Sh9tiVEdne6ktqpL%2FWISE_FACTION_GIF_CREATOR.gif?alt=media&amp;token=5a389180-6e7a-4646-ba70-6e3cd9ad7444" alt="" width="450"><figcaption><p>Creator set Faction  Color</p></figcaption></figure></div>

<div><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FJ6YUChScMXGmIFSYPAwm%2FWISE_FACTION_GIF_ROBBERY.gif?alt=media&amp;token=45ae4c6a-3be6-4054-bcd8-884d0d32a31c" alt="" width="450"><figcaption><p>Entering Faction Robbery and leaving (Robbery fails)</p></figcaption></figure> <figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2F7QbSWdK3gJMZmBXwcSPY%2FWISE_FACTION_GIF_FFA.gif?alt=media&amp;token=be4025aa-0c09-42cf-9408-1a3caabb7575" alt="" width="450"><figcaption><p>FFA out of Zone Death</p></figcaption></figure></div>


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_faction</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_faction.pack.zip</mark> extract the <mark style="color:red;">`wise_faction/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Database</mark>

If there are already tables existing, delete those with:

```sql
DROP TABLE IF EXISTS `wise_faction_factions`;
DROP TABLE IF EXISTS `wise_faction_garage`;
```

{% hint style="warning" %}
Do not start the Resource without adding the Tables to the Database first
{% endhint %}

```sql
CREATE TABLE `wise_faction_factions` (
	`name` VARCHAR(50) NULL DEFAULT NULL UNIQUE,
	`color` VARCHAR(50) NULL DEFAULT 'red',
	`settings` TEXT NULL,
	`members` TEXT NULL,
	`accounts` TEXT NULL,
	`warehouse` TEXT NULL,
	`ranksettings` TEXT NULL,
	`logs` LONGTEXT NULL,
	`position` TEXT NULL,
	`progress` TEXT NULL,
	`missions` TEXT NULL
);

CREATE TABLE `wise_faction_garage` (
	`faction` VARCHAR(50) NULL DEFAULT NULL,
	`name` VARCHAR(50) NULL DEFAULT NULL,
	`plate` VARCHAR(50) NULL DEFAULT NULL UNIQUE,
	`vehicle` LONGTEXT NULL,
	`stored` INT NULL
);
```

***

## Step 4: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_faction`, restart your server and done.<br>

***

## Step 5: <mark style="color:red;">Enjoy!</mark>


# Exports

{% hint style="info" %}
For all exports it is important to use <mark style="color:red;">exports.wise\_faction:</mark> before the export Name
{% endhint %}

## Client

<table><thead><tr><th width="374" align="center">Export</th><th align="center">Arguments</th><th data-hidden>Description </th></tr></thead><tbody><tr><td align="center">inFFA() => <mark style="color:red;"><code>boolean</code></mark></td><td align="center"><mark style="color:red;"><code>none</code></mark></td><td></td></tr><tr><td align="center">inGangwar() => <mark style="color:red;"><code>boolean</code></mark></td><td align="center"><mark style="color:red;"><code>none</code></mark></td><td></td></tr><tr><td align="center">getFaction() => <mark style="color:red;"><code>string</code></mark></td><td align="center"><mark style="color:red;"><code>none</code></mark></td><td></td></tr><tr><td align="center">getFactionRank() => <mark style="color:red;"><code>string</code></mark></td><td align="center"><mark style="color:red;"><code>none</code></mark></td><td></td></tr><tr><td align="center">getFactionLevel() => <mark style="color:red;"><code>integer</code></mark></td><td align="center"><mark style="color:red;"><code>none</code></mark></td><td></td></tr><tr><td align="center">getFactionXP() => <mark style="color:red;"><code>integer</code></mark></td><td align="center"><mark style="color:red;"><code>none</code></mark></td><td></td></tr></tbody></table>

## Server

<table><thead><tr><th width="407.3333333333333" align="center">Export</th><th align="center">Arguments</th><th data-hidden>Description </th></tr></thead><tbody><tr><td align="center">getPlayerFaction(playerId) => <mark style="color:red;"><code>Faction</code></mark></td><td align="center">playerId => <mark style="color:red;"><code>integer</code></mark></td><td></td></tr><tr><td align="center">getFaction(factionName) => <mark style="color:red;"><code>Faction</code></mark></td><td align="center">factionName => <mark style="color:red;"><code>string</code></mark></td><td></td></tr><tr><td align="center">getFactionLevel(factionName) => <mark style="color:red;"><code>integer</code></mark></td><td align="center">factionName => <mark style="color:red;"><code>string</code></mark></td><td></td></tr><tr><td align="center">getFactionXP(factionName) => <mark style="color:red;"><code>integer</code></mark></td><td align="center">factionName => <mark style="color:red;"><code>string</code></mark></td><td></td></tr><tr><td align="center">addFactionXP(factionName, amount) => <mark style="color:red;"><code>void</code></mark></td><td align="center">factionName => <mark style="color:red;"><code>string</code></mark><br>amount => <mark style="color:red;"><code>integer</code></mark></td><td></td></tr></tbody></table>


# Events

{% tabs %}
{% tab title="Client Side" %}

### Park out faction Vehicle

```lua
AddEventHandler("wise_faction:garage:parkOut", function (plate)
  -- Example for giving Vehicle Keys to player 
  TriggerEvent("vehiclekeys:client:SetOwner", plate)
end)
```

{% endtab %}

{% tab title="Server Side" %}

### Added Member to Faction

```lua
AddEventHandler("wise_faction:faction:memberAdded", function(factionName, playerId)
    -- Example for updating ESX xPlayer Job
    local xPlayer = ESX.GetPlayerFromId(playerId)
    if not xPlayer then 
        print("ERROR: Player not found")
        return 
    end    

    xPlayer.setJob(factionName, 1)
end)
```

### Removed Member from Faction

```lua
AddEventHandler("wise_faction:faction:memberRemoved", function(factionName, playerId)
    -- Example for updating ESX xPlayer Job
    local xPlayer = ESX.GetPlayerFromId(playerId)
    if not xPlayer then 
        print("ERROR: Player not found")
        return 
    end
    
    xPlayer.setJob("unemployed", 0)
end)
```

{% endtab %}
{% endtabs %}


# Setup FFA & Gangwar

## Block PlayerDeath (FFA and Gangwar)

### Example with [esx\_ambulancejob](https://github.com/esx-framework/esx_ambulancejob)

1. Open Directory <mark style="color:red;">`client/`</mark>
2. Open File <mark style="color:red;">`main.lua`</mark>
3. Search for <mark style="color:red;">`esx:onPlayerDeath`</mark> (STRG+F)
4. Replace <mark style="color:red;">`AddEventHandler`</mark> with the example below

```lua
AddEventHandler('esx:onPlayerDeath', function(data)
  if GetResourceState('wise_faction') == 'started' then 
	if not exports.wise_faction.inFight() then 
	  OnPlayerDeath()
	end
  else
    OnPlayerDeath()
  end
end)
```

### Example with [qb-ambulancejob](https://github.com/qbcore-framework/qb-ambulancejob)

1. Open Directory <mark style="color:red;">`client/`</mark>
2. Open File <mark style="color:red;">`dead.lua`</mark>
3. Search <mark style="color:red;">`gameEventTriggered`</mark> for (STRG+F)
4. Replace <mark style="color:red;">`AddEventHandler`</mark> with example below

```lua
AddEventHandler('gameEventTriggered', function(event, data)
    local inFight = false
    if GetResourceState('wise_faction') == 'started' then 
        if exports.wise_faction.inFight() then
            ResetAll()
            inFight = true 
        end
    end


    if event == "CEventNetworkEntityDamage" and not inFight then
        local victim, attacker, victimDied, weapon = data[1], data[2], data[4], data[7]
        if not IsEntityAPed(victim) then return end
        if victimDied and NetworkGetPlayerIndexFromPed(victim) == PlayerId() and IsEntityDead(PlayerPedId()) then
            if not InLaststand then
                SetLaststand(true)
            elseif InLaststand and not isDead then
                SetLaststand(false)
                local playerid = NetworkGetPlayerIndexFromPed(victim)
                local playerName = GetPlayerName(playerid) .. " " .. "("..GetPlayerServerId(playerid)..")" or Lang:t('info.self_death')
                local killerId = NetworkGetPlayerIndexFromPed(attacker)
                local killerName = GetPlayerName(killerId) .. " " .. "("..GetPlayerServerId(killerId)..")" or Lang:t('info.self_death')
                local weaponLabel = QBCore.Shared.Weapons[weapon].label or 'Unknown'
                local weaponName = QBCore.Shared.Weapons[weapon].name or 'Unknown'
                TriggerServerEvent("qb-log:server:CreateLog", "death", Lang:t('logs.death_log_title', {playername = playerName, playerid = GetPlayerServerId(playerid)}), "red", Lang:t('logs.death_log_message', {killername = killerName, playername = playerName, weaponlabel = weaponLabel, weaponname = weaponName}))
                deathTime = Config.DeathTime
                OnDeath()
                DeathTimer()
            end
        end
    end
end)
```


# Example Configs

## Config Categorys

* [<mark style="color:red;">Main</mark>](/scripts/wise-faction/example-configs/main)
* [<mark style="color:red;">FFA</mark>](/scripts/wise-faction/example-configs/ffa)
* [<mark style="color:red;">Gangwar</mark>](/scripts/wise-faction/example-configs/gangwar)
* [<mark style="color:red;">Robbery</mark>](/scripts/wise-faction/example-configs/robbery)
* [<mark style="color:red;">Shop</mark>](/scripts/wise-faction/example-configs/shop)
* [<mark style="color:red;">Missions</mark>](/scripts/wise-faction/example-configs/missions)


# Main

{% code lineNumbers="true" %}

```lua
Config = {}

Config.Debug = true

Config.Locale = "en"

---@alias NotifyTypes
---| '"ffa"' # Free for all Notification Type
---| '"gangwar"' # Gangwar Notification Type
---| '"robbery"' # Robbery Notification Type
---| '"info"' # Information Notification Type
---| '"success"' # Success Notification Type
---| '"error"' # Error Notification Type
---@param type NotifyTypes
Config.Notify = function(type, title, message, time)
	TriggerEvent("wise_faction:notify:send", type, title, message, time)
end

Config.HelpNotify = function(key, msg)
	exports.wise_faction:HelpNotify(key, msg)
end

-- Admin that can use the Commands (Faction Creator, Add XP, etc.)
Config.Admins = {
	"license:05a6dc85bf661b0631a26f773e002e7bd7a120ed",
	"discord:245575887326543874",
	-- ADD MORE ("license:" or "discord:" or "xbl:" or "steam:")
}

Config.Factions = {
	reloadcmd = "reloadf",  -- Reload Faction (Get Client Faction Data)
	showlevelcmd = "flevel", -- Reload Faction (Get Client Faction Data)
	CanChangeColors = true, 
	Npc = true,             -- Use NPCs for the Faction Menus
	NpcAnimation = true,		-- Plays Animations for NPC
	MaxXP = 3000,           -- Maxmimum XP that is need for the next Level
	BlipSize = 0.8,
	Leveling = {
		-- All Options what happens after leveling the Faction (adding more in the next Update)
		Warehouse = {
			AddSpace = 2 -- Space to add for each Level
		}
	}
}

Config.Warehouse = {
	SeparateItemTypes = false  -- The Slider in the Warehouse that filters Weapons and Items
}

Config.FactionCreator = {
	LiveUpdate = true -- Live Updates Faction Postions, etc. (Be carefull, this might cause Problems. Only use if testing)
}

Config.Garage = {
	UseFactionColor = true -- Use the Color of the Faction for the Vehicles
}

Config.Actions = {
	RegisterKeyMappings = true, -- Bind Commands to Keys
	Keys = {
		Handcuff = "NUMPAD4",
		PutInVehicle = "NUMPAD5",
		OutOfVehicle = "NUMPAD6",
		Drag = "NUMPAD7",
	}
}

Config.blipColorByName = {
	["red"] = 1,
	["green"] = 2,
	["blue"] = 3,
	["white"] = 4,
	["yellow"] = 5,
	["purple"] = 27,
	["orange"] = 81,
	["orangered"] = 51,
	["pink"] = 61,
	["black"] = 40,
  	["aqua"] = 26,
  	["azure"] = 63,
  	["beige"] = 36,
  	["bisque"] = 33,
  	["chartreuse"] = 24,
  	["chocolate"] = 21,
  	["coral"] = 17,
  	["crimson"] = 6,
  	["darkcyan"] = 30,
  	["darkgoldenrod"] = 28,
  	["darkgreen"] = 52,
  	["darkorange"] = 64,
  	["lightorange"] = 9,
  	["darkred"] = 76,
  	["deeppink"] = 61,
  	["firebrick"] = 76,
  	["forestgreen"] = 25,
 	["fuchsia"] = 48,
  	["gold"] = 46,
  	["gray"] = 39,
  	["lavender"] = 50,
  	["magenta"] = 27,
	["miami-color"] = 9,
	-- ADD MORE (Color Names, need to be available in wise_fw/settings)
	-- In wise_fw/settings you can set the HexColor for the ColorName
}
```

{% endcode %}


# FFA

<pre class="language-lua" data-line-numbers><code class="lang-lua">Config.FFA = {
	Active = true, -- If Factions can use ffa (Hides Button in Menu)
	NeededLevel = 50, -- Faction Level that is needed to use the FFA
<strong>	QuitCmd = "quitffa", -- Command for quiting the FFA
</strong>	FactionPos = true,  -- If true FFA will be on the Factions Position
<strong>	Position = vector3(960.9371, -138.0735, 74.4541),-- ONLY if factionpos => false
</strong>	Radius = 80, -- Zone size for the Faction FFA
	Weapons = {  -- Weapons that are used in the Faction FFA
		"weapon_assaultrifle",
		"weapon_pistol"
	},
	RespawnTime = 5, -- in Secondes
	OutOfZoneCountdown = 5 -- in Secondes (set to -1 to disable)
}
</code></pre>


# Gangwar

{% code lineNumbers="true" %}

```lua
Config.Gangwar = {
	SpawnOnFactionPos = false, -- Spawn on the Factions Position (on death or joining)
	UseOwnLoadout = false,    -- Uses the own Loadout for the Gangwar
	Weapons = {               -- The Weapons that you receive in the Gangwar if UseOwnLoadout = false
		"weapon_assaultrifle",
		"weapon_revolver",
		"weapon_musket"
	},
	RespawnTime = 5,
	Time = 5,           -- The duration of the Gangwar (in Minutes)
	MaxPoints = 2,     -- Maximum Points that the Gangwar stops
	MaxMembersOnline = 0, -- Max Online Members to start a Gangwar
	Points = {
		Kill = 1,          -- Points per Kill
		CaptureFlag = 3,   -- Points for each Flag capture
		Suicide = -3,      -- Points for Suicide
		KillOutZone = -5,  -- Points for Kill out of the Gangwar Zone
		TeamKill = -2      -- Points for a TeamKill
	},
	Rewards = {
		items = { -- Item Rewards for winning the Gangwar (saved in Warehouse)
			{ label = "Fish", name = "fish", amount = 100, type = "item" }
		},
		XP = 50000 -- XP for winning the Gangwar
	},

	ShowZonesForEveryone = true,
	
	Zones = {
		-- All Gangwar Zones
		["TESTAREA"] = {
			pos = vector3(1122.3441, 94.5993, 81.0037), -- Position of the Zone
			spawnpoints = {
				defender = vector3(1067.5055, 132.9569, 82.1907), --Spawnpoint for the Defender
				attacker = vector3(1194.1893, 59.8264, 82.1245) -- Spawnpoint for the Attacker
			},
			radius = 200 -- Size/Radius of the Zone
		},
		["VAGOS"] = {
			pos = vector3(960.2690, -1743.1628, 31.1402),    -- Position of the Zone
			spawnpoints = {
				defender = vector3(962.3804, -1713.0392, 30.3955), -- Spawnpoint for the Defender
				attacker = vector3(961.0892, -1730.8610, 30.9457) -- Spawnpoint for the Attacker
			},
			radius = 100 -- Size/Radius of the Zone
		},
		["Bloods"] = {
			pos = vector3(934.6163, -1348.3361, 12.3806),    -- Position of the Zone
			spawnpoints = {
				defender = vector3(962.3804, -1713.0392, 30.3955), -- Spawnpoint for the Defender
				attacker = vector3(961.0892, -1730.8610, 30.9457) -- Spawnpoint for the Attacker
			},
			radius = 100 -- Size/Radius of the Zone
		}
	}
}
```

{% endcode %}


# Robbery

{% code lineNumbers="true" %}

```lua
Config.Robbery = {
	PoliceJob = "police",   -- Name of the Police Job to check Online Police
	PoliceBlipActive = true, -- Shows the Location of the Robbery for the Police on the Map
	interval = function()
		return math.random(1, 2)
	end, -- Interval for every new Informant that Spawns ( in Minutes ) [Time or Random Function]
	NpcStays = 15, -- The Informant waits and then goes away (in Minutes)
	NpcPositions = {  -- Informant spawn Postions
		vector4(785.5665, -1370.1862, 26.6272, 268.7043)
	},
	NeededFactionLevel = {
		BankRob = 25 -- Banks can only be robbed at a specific Faction Level.
	},

	Shops = { -- All Shop Robberys
		{
		position = vector3(257.0605, 214.9562, 106.2868),					-- Shop Position
		name = "TwentyForSeven",																	-- Shop Name
		loot = {																									
			-- The Loot after successful Robbery and bringing the Items successfully to the faction
			xp = 1000,																								-- The XP the Faction is receiving after the Robbery
			blackmoney = 100000,										
			items = {
				{ label = "Burger", name = "burger", amount = 2 },
				{ label = "Fish", name = "fish", amount = 100 }
			}	
		},														
		radius = 20,													-- Zone Size that the Player (that started the Robbery) can not leave
		time = 0.5,														-- Time to Rob (in Minutes)
		minimumCops = 3,												-- needed cops to start the Robbery (set to 0 if no cops needed)
		}
	},
	Banks = {
		{
		position = vector3(257.0605, 214.9562, 106.2868), -- Bank Position
		name = "The Bank", -- Bank Name
		loot = {
			-- The Loot after successful Robbery and bringing the Items successfully to the faction
			xp = 5000,
			blackmoney = 100000000,
			items = {
				{ label = "Burger", name = "burger", amount = 200 },
				{ label = "Bread",  name = "bread",  amount = 100 }
			}
		},
		radius = 50, -- Zone Size that the Player (that started the Robbery) can not leave
		time = 3, -- Time to Rob (in Minutes)
		minimumCops = 1, -- needed cops to start the Robbery (set to 0 if no cops needed)
		}
	}
}
```

{% endcode %}

{% content-ref url="/spaces/d6JYrbhmfQ1NjfSCIOod/pages/Ihu8BCJlRFPjisPLwX8q" %}
[Robbery](/scripts/wise-faction/example-configs/robbery)
{% endcontent-ref %}


# Shop

{% code lineNumbers="true" %}

```lua
-- Factions Shop Items
Config.Shop =
{
	Active = true, -- Factions can use Shop (Hides Button in Menu)
	Items = {
		{
			label = "Fish",
			name  = "fish",
			type  = "item",
			price = 120,
			img   = "sandwich-5380235-4497584.png",

		},
		{
			label = "Phone",
			name  = "phone",
			type  = "item",
			price = 1000,
			img   = "phone.png",
		},
		{
			label = "Sandwich",
			name  = "sandwich",
			type  = "item",
			price = 50,
			img   = "sandwich-5380235-4497584.png",
		}
	}
}
```

{% endcode %}


# Missions

{% code lineNumbers="true" %}

```lua
---@alias MissionTypes
---| "KILL"
---| "COLLECT"
---| "DELIVER"

Config.Missions = {
	Active = true, -- Show/Hide Missions Button in Menu
	RefreshList = {
		Time = 60, -- in Minutes
		Size = 6 -- Mission List Size
	},
	List = {
		{
			title = "Kill %s Players in FFA", -- Title of the Mission
			type = "KILL",											-- Mission Type, see: @alias MissionTypes
			goal = 5,														-- The Goal to reach
			listeners = {
				"wise_faction:ffa:mission:kill"	-- The Events to listen to, per Trigger counts +1
			},
			rewards = {													-- Rewards when Mission rewards getting claimed
				xp = 40500,
				money = 4000,
				items = {
					{ label = "Phone", name = "phone", amount = 100},
					{ label = "Bread", name = "bread", amount = 2}
				}
			}
		},
		{
			title = "Kill %s Players in Gangwar",
			type = "KILL",
			goal = 5,
			listeners = {
				"wise_faction:gangwar:mission:kill"
			},
			rewards = {
				xp = 4500,
				money = 200000,
				items = {
					{ label = "Phone", name = "phone", amount = 500}
				}
			}
		},
		{
			title = "Deliver %s Fish",
			type = "DELIVER",
			goal = 5,
			listeners = {
				"wise_faction:mission:deliver:fish"
			},
			rewards = {
				xp = 2500,
				money = 3000,
				items = {
					{ label = "diamond", name = "Diamant", amount = 25}
				}
			}
		},
		{
			title = "Win %s Gangwar",
			type = "COLLECT",
			goal = 5,
			listeners = {
				"wise_faction:mission:gangwar:win"
			},
			rewards = {
				xp = 2500,
				money = 322000,
				items = {
					{ label = "diamond", name = "Diamant", amount = 125}
				}
			}
		}
	},

	LevelMissions = {
		["Level-50"] = {
			{
				title = "Deliver %s Fish",
				type = "DELIVER",
				goal = 20,
				listeners = {
					"wise_faction:mission:deliver:fish"
				},
				rewards = {
					xp = 2500,
					money = 32000,
					items = {}
				}
			},
			{
				title = "Win %s Gangwar",
				type = "COLLECT",
				goal = 15,
				listeners = {
					"wise_faction:mission:gangwar:win"
				},
				rewards = {
					xp = 22500,
					money = 3000,
					items = {
						{ label = "diamond", name = "Diamant", amount = 125}
					}
				}
			}
		},

		["Level-80"] = {
			{
				title = "Kill %s People in FFA",
				type = "KILL",
				goal = 15,
				listeners = {
					"wise_faction:ffa:mission:kill"
				},
				rewards = {
					xp = 2500,
					money = 3000,
					items = {
						{ label = "diamond", name = "Diamant", amount = 25}
					}
				}
			}
		}
	}
}
```

{% endcode %}


# Wise Notify

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FokFyxDshtyQytqWeqPCo%2FWISE_NOTIFY_THUMBNAIL.png?alt=media&amp;token=901e36d8-98a6-458a-b6a5-6246a64c8634" alt="" width="375"><figcaption></figcaption></figure></div>

## 💡 Features

* 4 Types of Notification
* 2 Types of Announces
* Teamchat
* LifeInvader Notify
* Help Notify
* TX Warn


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_notify</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_notify.pack.zip</mark> extract the <mark style="color:red;">`wise_notify/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_notify`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>

####


# Exports & Triggers

Here you have all Exports & Triggers you can use in other Scripts

## Exports

{% hint style="info" %}
For all exports it is important to use <mark style="color:red;">exports.wise\_notify:</mark> before the export Name

e.g: <mark style="color:red;">exports.wise\_notify:Notify(type, title, message, time)</mark>
{% endhint %}

<table><thead><tr><th width="401" align="center">Export</th><th align="center">Arguments</th></tr></thead><tbody><tr><td align="center">Notify(type, title, message, time) => <mark style="color:red;"><code>void</code></mark></td><td align="center">type => <mark style="color:red;"><code>string</code></mark> <br>title => <mark style="color:red;"><code>string</code></mark><br>message => <mark style="color:red;"><code>string</code></mark><br>time => <mark style="color:red;"><code>number</code></mark></td></tr><tr><td align="center">Announce(title, message, time) => <mark style="color:red;"><code>void</code></mark></td><td align="center">title => <mark style="color:red;"><code>string</code></mark><br>message => <mark style="color:red;"><code>string</code></mark><br>time => <mark style="color:red;"><code>number</code></mark></td></tr><tr><td align="center">PoliceAnnounce(title, message, time) => <mark style="color:red;"><code>void</code></mark></td><td align="center">title => <mark style="color:red;"><code>string</code></mark><br>message => <mark style="color:red;"><code>string</code></mark><br>time => <mark style="color:red;"><code>number</code></mark></td></tr><tr><td align="center">Warn(title, message, time) => <mark style="color:red;"><code>void</code></mark></td><td align="center">message => <mark style="color:red;"><code>string</code></mark><br>time => <mark style="color:red;"><code>number</code></mark></td></tr><tr><td align="center">HelpNotify(key, message) => <mark style="color:red;"><code>void</code></mark></td><td align="center">key => <mark style="color:red;"><code>string</code></mark><br>time => <mark style="color:red;"><code>number</code></mark></td></tr></tbody></table>

## Notify Types

* info <img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FD1XQUxynBkgiV28uWfls%2Fimage.png?alt=media&amp;token=fc24341c-8deb-427c-94ee-c8ae54c97bad" alt="" data-size="line">
* warn <img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FrjF721XbX5ohYj5XL7GV%2Fimage-removebg-preview.png?alt=media&amp;token=44a848b7-755c-4217-b3a2-d9d9ff52540d" alt="" data-size="line">
* success <img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FC9Zt097NLbgJHBM2j94p%2Fimage.png?alt=media&amp;token=228909f3-19a6-417c-8e71-af1605bdf6cd" alt="" data-size="line">
* error <img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2F5YaK9kdW25aX0K8Ra6kF%2Fimage-removebg-preview.png?alt=media&amp;token=c5145478-e1c6-4b5a-834e-3f5af68ab20f" alt="" data-size="line">

## Color Codes

```lua
~r~ = Red
~b~ = Blue
~g~ = Green
~y~ = Yellow
~p~ = Purple
~c~ = Grey
~m~ = Dark Grey
~u~ = Black
~o~ = Orange
~s~ = Reset
```

## Examples

{% tabs %}
{% tab title="Client Side" %}
{% code fullWidth="true" %}

```lua
local message = "I ~r~LOVE~s~ WiseScripts"
local time = 5000

-- NOTIFY
local notifyType = "info"
exports.wise_notify:Notify(notifyType, "Information", message, time)
TriggerEvent("wise_notify", notifyType, "Information", message, time)

-- ANNOUNCE
exports.wise_notify:Announce("Announce", message, time)
TriggerEvent("wise_announce", "Announce", message, time)

-- POLICE ANNOUNCE
exports.wise_notify:PoliceAnnounce("Police Announce", message, time)
TriggerEvent("wise_policenotify", "Police Announce", message, time)

-- WARN
exports.wise_notify:Warn("Server Name", message, time)
TriggerEvent("wise_warn", "Server Name", message, time)

-- LIFEINVADER
local phonenumber = 123
TriggerEvent("wise_lifeinvader", "Server Name", phonenumber, time)

-- HELPNOTIFY ONLY USE IN LOOP (in use ~0.05ms)
exports.wise_notify:HelpNotify("E", message)
TriggerEvent("wise_helpnotify", "E", message)
```

{% endcode %}
{% endtab %}

{% tab title="Server Side" %}

<pre class="language-lua" data-full-width="true"><code class="lang-lua">local message = "I ~r~LOVE~s~ WiseScripts"
local time = 5000

<strong>-- NOTIFY
</strong><strong>TriggerClientEvent("wise_notify", playerId, "info", "Title", message, time)
</strong><strong>
</strong><strong>-- ANNOUNCE
</strong>TriggerClientEvent("wise_announce", -1, "ANNOUNCE", message, time)

-- POLICE ANNOUNCE
TriggerClientEvent("wise_policenotify", -1, "Police Announce", message, time)

-- WARN
TriggerClientEvent("wise_warn", playerId, "Server Name", message, time)

-- LIFEINVADER
TriggerClientEvent("wise_lifeinvader", playerId, "Server Name", 123, time)
</code></pre>

{% endtab %}
{% endtabs %}


# ESX Replacements

## Replace ShowNotification

1. Open Directory <mark style="color:red;">`client/`</mark>
2. Open File <mark style="color:red;">`functions.lua`</mark>
3. Search for <mark style="color:red;">`ESX.ShowNotification`</mark> (STRG+F)
4. Replace function with example the below

```lua
function ESX.ShowNotification(message, type, length)
    exports.wise_notify:Notify(type, "Information", message, length)
end
```

## Replace ShowHelpNotification

1. Open Directory <mark style="color:red;">`client/`</mark>
2. Open File <mark style="color:red;">`functions.lua`</mark>
3. Search for <mark style="color:red;">`ESX.ShowHelpNotification`</mark> (STRG+F)
4. Replace function with the example below

```lua
function ESX.ShowHelpNotification(msg, thisFrame, beep, duration)
    exports.wise_notify:HelpNotify(msg)
end
```


# Wise Report

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2F5RMjcPjhdyl1f0epDsf3%2FWISE_REPORT_THUMBNAIL.jpg?alt=media&amp;token=8a271024-3991-4e22-a225-3aa9c31d93de" alt="" width="375"><figcaption></figcaption></figure></div>

## 📜Description

Report Players to the Admin Team of the Server.\
Give your Community the chance to help you keep your Server fun to play.

There Functions that will definetly help you and your Team find out if the reported player is really breaking the Server Rules.

## 💡 Features

* Report Players
* Goto
* Bring
* Screenshot of Reported Player
* Spectate
* Revive
* Kick
* Discord Webhooks


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_report</mark> and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_report.pack.zip</mark> extract the <mark style="color:red;">`wise_report/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_report`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>

####


# Wise Lifeinvader

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FeIZTUBYCWFi6yq3ywbR2%2FWISE_LIFEINVADER_THUMBNAIL.png?alt=media&amp;token=487ac7a2-0da2-451c-bb34-b87b9bc7d02b" alt="" width="563"><figcaption></figcaption></figure></div>

## 💡 Features

* Completely Editable
* Change Notification&#x20;
* Change HelpNotification
* Change price of public and private Ads
* Change Language for UI etc.
* Discord Notification with Webhooks
* Webhook dumping safe
* All Ads stored in a json


# Installation

## Step 1: <mark style="color:red;">Download from Keymaster</mark>

Goto your [Keymaster Granted Assets](https://keymaster.fivem.net/asset-grants), search for the <mark style="color:red;">wise\_lifeinvader</mark> script and download.

***

## Step 2: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_lifeinvader.pack.zip</mark> extract the <mark style="color:red;">`wise_lifeinvader/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 3: <mark style="color:red;">Start Resource</mark>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_lifeinvader`, restart your server and done.

***

## Step 4: <mark style="color:red;">Enjoy!</mark>

####


# Wise Info

A Discord Bot to get different Informations of Players and other Stuff of your FiveM Server

<div align="left"><figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2F0kIHZVBXM5hvAuDsK6IE%2FWISE_INFO_THUMBNAIL.png?alt=media&amp;token=debd63ff-cbbb-4d7a-82ae-11562fa334be" alt="" width="375"><figcaption></figcaption></figure></div>

## 💡 Features

* &#x20;Show and delete player cars&#x20;
* Edit player via Edit User&#x20;
* Warn / Ban / Kick&#x20;
* Give user a vehicle directly into the garage&#x20;
* Vehicle info to view vehicle stats, anyone can use it&#x20;
* Server info to see economy and weapons on your server&#x20;
* Show/Edit **Players Weapons**
* Show/Edit **Players Inventory**
* **Report System** - \[ ingame (/report) ]
* Make **Screenshots** of Players on the Server \[ requires screenshot-basic ]
* **Logs** for executed Actions


# Installation

## Step 1: <mark style="color:red;">Check E-Mails</mark>

Check your E-Mails for a <mark style="color:red;">`Token`</mark> that you have received after buying the <mark style="color:red;">Wise Info</mark> Script.

***

## Step 2: <mark style="color:red;">Claim the Script</mark>

Join our [Discord](https://discord.gg/EBpXBf2zTW), in the [<mark style="color:red;">#bot-commands</mark>](https://discord.com/channels/935879131630018562/1026113323655249941) channel you can claim the Script with <mark style="color:red;">`/claim wise_info`</mark> and your <mark style="color:red;">Token</mark> and the Bot sends you the Script via DM.

{% hint style="warning" %}
Your Discord `Direct Messages` need to be open for you to receive the Script
{% endhint %}

***

## Step 3: <mark style="color:red;">Setup Discord Bot</mark>

Goto [Discord Developer Applications](https://discord.com/login?redirect_to=%2Fdevelopers%2Fapplications), click on <mark style="color:red;">`New Application`</mark> in the Top-Right, put in the Name of the Bot and click <mark style="color:red;">`Create`</mark> \
After that click in the left List on <mark style="color:red;">`Bot`</mark> and click <mark style="color:red;">`Add Bot`</mark>. \
Accept all <mark style="color:red;">`Priviliged Gateway Intents`</mark> => <mark style="color:red;">`Presence Intent`</mark> -> <mark style="color:red;">`Server Members Intent`</mark> -> <mark style="color:red;">`Message Content Intent`</mark> and <mark style="color:red;">`Save Changes`</mark>

<figure><img src="https://1255150271-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd6JYrbhmfQ1NjfSCIOod%2Fuploads%2FCJbR8Z91ILbygkdbnXeO%2Fimage_2023-10-24_005622791.png?alt=media&amp;token=fb64bc3f-0d51-42d0-8d72-8625de5d642c" alt=""><figcaption></figcaption></figure>

***

## Step 4: <mark style="color:red;">Invite the Bot</mark>

Goto <mark style="color:red;">`OAuth2`</mark> -> <mark style="color:red;">`URL Generator`</mark> . Under <mark style="color:red;">`Scopes`</mark> select <mark style="color:red;">`bot`</mark> . Under <mark style="color:red;">`Permissions`</mark> select <mark style="color:red;">`Administrator`</mark> . After that you copy the URL at the bottom and paste in your browser search bar, select the server and confirm.

***

## Step 5: <mark style="color:red;">Put into Resources</mark>

Open the <mark style="color:red;">wise\_info.zip</mark> extract the <mark style="color:red;">`wise_info/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

## Step 6: <mark style="color:red;">Setup Script Config</mark>

In the <mark style="color:red;">`config.json`</mark> in <mark style="color:red;">`DISCORD_ID`</mark> you put in your UserId of your Discord Account and for <mark style="color:red;">`GUILD_ID`</mark> you put in the Id of your Discord Server

```json
{
 "discordID": "DISCORD_ID",
 "dcserverID": "GUILD_ID"
}
```

***

## Step 7: <mark style="color:red;">Install Node</mark>

{% hint style="warning" %}
You dont need to do this if you have already installed `Node`, you can check if you have already installed it, by typing in the console <mark style="color:red;">`node -v`</mark> and check if the version is above <mark style="color:red;">`v16.x.x`</mark>
{% endhint %}

{% tabs %}
{% tab title="Windows" %}
Follow step by step

1. Goto [NodeJS](https://nodejs.org/en) and download the latest version.&#x20;
2. Press <mark style="color:red;">`Windows+R`</mark> type in <mark style="color:red;">`cmd`</mark> and click <mark style="color:red;">`OK`</mark>.&#x20;
3. In the open console you type in <mark style="color:red;">`node -v`</mark> and check if it installed the latest version.
4. Done!
   {% endtab %}

{% tab title="Linux" %}
Follow step by step

1. Open your Linux Server Console
2. Type/Copy <mark style="color:red;">`apt-get install curl`</mark> -> ENTER
3. Type/Copy <mark style="color:red;">`curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash`</mark> -> ENTER
4. Type/Copy <mark style="color:red;">`export NVM_DIR="$HOME/.nvm"`</mark> -> ENTER
5. Type/Copy <mark style="color:red;">`[-s "SNVM DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"`</mark> -> ENTER
6. Type/Copy <mark style="color:red;">`Is "SNVM_DIR/bash_completion" ] && . "SNVM_DIR/bash_completion"`</mark> -> ENTER
7. Type/Copy <mark style="color:red;">`nvm install v16`</mark> -> ENTER
8. Type/Copy <mark style="color:red;">`apt-get install nodejs`</mark> -> ENTER
9. Done!
   {% endtab %}
   {% endtabs %}

***

## Step 8: <mark style="color:red;">Install NPM Modules</mark>

{% tabs %}
{% tab title="Windows" %}
Follow step by step

1. Open <mark style="color:red;">`wise_info/`</mark> directory
2. Click in the top-left on <mark style="color:red;">`File`</mark>
3. Click on <mark style="color:red;">`Open Windows Powershell`</mark>
4. In the Powershell Console you type <mark style="color:red;">`npm i`</mark> and press enter
5. Done!
   {% endtab %}

{% tab title="Linux" %}
Follow step by step

1. Open your Linux Server Console
2. Go to the `wise_info/` directory by using `cd {YOUR_PATH}/wise_info`, `YOUR_PATH` is just a placeholder, you need to put in your path to the wise\_info script
3. Now you type `npm i` and press enter
4. Done!
   {% endtab %}
   {% endtabs %}

***

## Step 9: <mark style="color:red;">Start Resource</mark>

{% hint style="warning" %}
Before starting the resource, you must <mark style="color:red;">stop</mark> the '<mark style="color:red;">yarn</mark>' resource.
{% endhint %}

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark>  with `ensure wise_info`, restart your server and done.

***

## Step 10: <mark style="color:red;">Enjoy!</mark>

####


# Wise Ore Props Pack

**Installation**

### Step 1: Download from Keymaster <a href="#step-1-download-from-keymaster" id="step-1-download-from-keymaster"></a>

Goto your [<mark style="color:red;">Keymaster Granted Assets</mark>](https://keymaster.fivem.net/asset-grants), search for the wise\_ores\_prop\_packand download

***

### Step 2: Put into Resources <a href="#step-2-put-into-resources" id="step-2-put-into-resources"></a>

Open the <mark style="color:red;">wise\_ores\_prop\_pack.pack.zip</mark> extract the <mark style="color:red;">`wise_ores_prop_pack/`</mark>directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

### Step 3: Start Resource <a href="#step-3-start-resource" id="step-3-start-resource"></a>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark> with <mark style="color:red;">`ensure wise_ores_prop_pack`</mark> restart your server and done

***

### Step 4: Use a prop spawning tool of your choice to use the following props: <a href="#step-3-start-resource" id="step-3-start-resource"></a>

* <mark style="color:red;">`ore1`</mark>
* <mark style="color:red;">`ore2`</mark>
* <mark style="color:red;">`ore3`</mark>
* <mark style="color:red;">`ore4`</mark>
* <mark style="color:red;">`ore5`</mark>
* <mark style="color:red;">`ore6`</mark>
* <mark style="color:red;">`ore7`</mark>
* <mark style="color:red;">`ore8`</mark>
* <mark style="color:red;">`ore9`</mark>
* <mark style="color:red;">`ore10`</mark>
* <mark style="color:red;">`ore11`</mark>
* <mark style="color:red;">`ore12`</mark>

### Step 5: Enjoy! <a href="#step-4-enjoy" id="step-4-enjoy"></a>

***


# Wise Crystal Props Pack

**Installation**

### Step 1: Download from Keymaster <a href="#step-1-download-from-keymaster" id="step-1-download-from-keymaster"></a>

Goto your [<mark style="color:red;">Keymaster Granted Assets</mark>](https://keymaster.fivem.net/asset-grants), search for the wise\_crystal\_prop\_packand download

***

### Step 2: Put into Resources <a href="#step-2-put-into-resources" id="step-2-put-into-resources"></a>

Open the <mark style="color:red;">wise\_crystal\_prop\_pack.pack.zip</mark> extract the <mark style="color:red;">`wise_crystal_prop_pack/`</mark> directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

### Step 3: Start Resource <a href="#step-3-start-resource" id="step-3-start-resource"></a>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark> with <mark style="color:red;">`ensure wise_crystal_prop_pack`</mark>, restart your server and done

***

### Step 4: Use a prop spawning tool of your choice to use the following props: <a href="#step-3-start-resource" id="step-3-start-resource"></a>

* <mark style="color:red;">`crystal1`</mark>
* <mark style="color:red;">`crystal2`</mark>
* <mark style="color:red;">`crystal3`</mark>
* <mark style="color:red;">`crystal4`</mark>
* <mark style="color:red;">`crystal5`</mark>
* <mark style="color:red;">`crystal6`</mark>

### Step 5: Enjoy! <a href="#step-4-enjoy" id="step-4-enjoy"></a>

***


# Page 1


# HALLOWEEN Pumpkin Monster

**Installation**

### Step 1: Download from Keymaster <a href="#step-1-download-from-keymaster" id="step-1-download-from-keymaster"></a>

Goto your [<mark style="color:red;">Keymaster Granted Assets</mark>](https://keymaster.fivem.net/asset-grants), search for the `wise_pumpkinmonster` download

***

### Step 2: Put into Resources <a href="#step-2-put-into-resources" id="step-2-put-into-resources"></a>

Open the <mark style="color:red;">wise\_pumpkinmonster.pack.zip</mark> extract the `wise_pumpkinmonster`<mark style="color:red;">`/`</mark>directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

### Step 3: Start Resource <a href="#step-3-start-resource" id="step-3-start-resource"></a>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark> with <mark style="color:red;">`ensure`</mark>`wise_pumpkinmonster` restart your server and done

***

### Step 4: Use a PED spawning/changer tool of your choice to use the following Ped Name: <a href="#step-3-start-resource" id="step-3-start-resource"></a>

* wise\_pumpkinmonster

### Step 5: Enjoy! <a href="#step-4-enjoy" id="step-4-enjoy"></a>

***


# HALLOWEEN MR Bright

**Installation**

### Step 1: Download from Keymaster <a href="#step-1-download-from-keymaster" id="step-1-download-from-keymaster"></a>

Goto your [<mark style="color:red;">Keymaster Granted Assets</mark>](https://keymaster.fivem.net/asset-grants), search for the `wise_mrbright` download

***

### Step 2: Put into Resources <a href="#step-2-put-into-resources" id="step-2-put-into-resources"></a>

Open the <mark style="color:red;">`wise_mrbright`</mark><mark style="color:red;">.pack.zip</mark> extract the wise\_mrbright<mark style="color:red;">`/`</mark>directory and move the directory into your <mark style="color:red;">`resources/`</mark> directory on your server

***

### Step 3: Start Resource <a href="#step-3-start-resource" id="step-3-start-resource"></a>

Now implement the resource into the <mark style="color:red;">`server.cfg`</mark> with <mark style="color:red;">`ensure`</mark>`wise_mrbright` restart your server and done

***

### Step 4: Use a PED spawning/changer tool of your choice to use the following Ped Name: <a href="#step-3-start-resource" id="step-3-start-resource"></a>

* wise\_mrbright

### Step 5: Enjoy! <a href="#step-4-enjoy" id="step-4-enjoy"></a>

***


