From 1bf20334e6c0e10578dfb9b5d70b5fddc99de913 Mon Sep 17 00:00:00 2001 From: MViper <70104096+MViper@users.noreply.github.com> Date: Tue, 1 Mar 2022 15:52:12 +0100 Subject: [PATCH] Add files via upload --- client/main.lua | 143 +++++++ config.lua | 2 + esx_basicneeds.sql | 6 + fxmanifest.lua | 38 ++ locales/br.lua | 4 + locales/de.lua | 66 +++ locales/en.lua | 4 + locales/fi.lua | 4 + locales/fr.lua | 4 + locales/pl.lua | 4 + locales/sv.lua | 4 + localization/br_esx_basicneeds.sql | 6 + localization/cs_esx_basicneeds.sql | 6 + localization/de_esx_basicneeds.sql | 6 + localization/fi_esx_basicneeds.sql | 6 + localization/pl_esx_basicneeds.sql | 6 + localization/sv_esx_basicneeds.sql | 6 + server/main.lua | 622 +++++++++++++++++++++++++++++ 18 files changed, 937 insertions(+) create mode 100644 client/main.lua create mode 100644 config.lua create mode 100644 esx_basicneeds.sql create mode 100644 fxmanifest.lua create mode 100644 locales/br.lua create mode 100644 locales/de.lua create mode 100644 locales/en.lua create mode 100644 locales/fi.lua create mode 100644 locales/fr.lua create mode 100644 locales/pl.lua create mode 100644 locales/sv.lua create mode 100644 localization/br_esx_basicneeds.sql create mode 100644 localization/cs_esx_basicneeds.sql create mode 100644 localization/de_esx_basicneeds.sql create mode 100644 localization/fi_esx_basicneeds.sql create mode 100644 localization/pl_esx_basicneeds.sql create mode 100644 localization/sv_esx_basicneeds.sql create mode 100644 server/main.lua diff --git a/client/main.lua b/client/main.lua new file mode 100644 index 0000000..f52a471 --- /dev/null +++ b/client/main.lua @@ -0,0 +1,143 @@ +ESX = nil +local IsDead = false +local IsAnimated = false + +Citizen.CreateThread(function() + while ESX == nil do + TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + Citizen.Wait(0) + end +end) + +AddEventHandler('esx_basicneeds:resetStatus', function() + TriggerEvent('esx_status:set', 'hunger', 500000) + TriggerEvent('esx_status:set', 'thirst', 500000) +end) + +RegisterNetEvent('esx_basicneeds:healPlayer') +AddEventHandler('esx_basicneeds:healPlayer', function() + -- restore hunger & thirst + TriggerEvent('esx_status:set', 'hunger', 1000000) + TriggerEvent('esx_status:set', 'thirst', 1000000) + + -- restore hp + local playerPed = PlayerPedId() + SetEntityHealth(playerPed, GetEntityMaxHealth(playerPed)) +end) + +AddEventHandler('esx:onPlayerDeath', function() + IsDead = true +end) + +AddEventHandler('esx:onPlayerSpawn', function(spawn) + if IsDead then + TriggerEvent('esx_basicneeds:resetStatus') + end + + IsDead = false +end) + +AddEventHandler('esx_status:loaded', function(status) + + TriggerEvent('esx_status:registerStatus', 'hunger', 1000000, '#CFAD0F', function(status) + return false + end, function(status) + status.remove(100) + end) + + TriggerEvent('esx_status:registerStatus', 'thirst', 1000000, '#0C98F1', function(status) + return false + end, function(status) + status.remove(75) + end) + + Citizen.CreateThread(function() + while true do + Citizen.Wait(1000) + + local playerPed = PlayerPedId() + local prevHealth = GetEntityHealth(playerPed) + local health = prevHealth + + TriggerEvent('esx_status:getStatus', 'hunger', function(status) + if status.val == 0 then + if prevHealth <= 150 then + health = health - 5 + else + health = health - 1 + end + end + end) + + TriggerEvent('esx_status:getStatus', 'thirst', function(status) + if status.val == 0 then + if prevHealth <= 150 then + health = health - 5 + else + health = health - 1 + end + end + end) + + if health ~= prevHealth then + SetEntityHealth(playerPed, health) + end + end + end) +end) + +AddEventHandler('esx_basicneeds:isEating', function(cb) + cb(IsAnimated) +end) + +RegisterNetEvent('esx_basicneeds:onEat') +AddEventHandler('esx_basicneeds:onEat', function(prop_name) + if not IsAnimated then + prop_name = prop_name or 'prop_cs_burger_01' + IsAnimated = true + + Citizen.CreateThread(function() + local playerPed = PlayerPedId() + local x,y,z = table.unpack(GetEntityCoords(playerPed)) + local prop = CreateObject(GetHashKey(prop_name), x, y, z + 0.2, true, true, true) + local boneIndex = GetPedBoneIndex(playerPed, 18905) + AttachEntityToEntity(prop, playerPed, boneIndex, 0.12, 0.028, 0.001, 10.0, 175.0, 0.0, true, true, false, true, 1, true) + + ESX.Streaming.RequestAnimDict('mp_player_inteat@burger', function() + TaskPlayAnim(playerPed, 'mp_player_inteat@burger', 'mp_player_int_eat_burger_fp', 8.0, -8, -1, 49, 0, 0, 0, 0) + + Citizen.Wait(3000) + IsAnimated = false + ClearPedSecondaryTask(playerPed) + DeleteObject(prop) + end) + end) + + end +end) + +RegisterNetEvent('esx_basicneeds:onDrink') +AddEventHandler('esx_basicneeds:onDrink', function(prop_name) + if not IsAnimated then + prop_name = prop_name or 'prop_ld_flow_bottle' + IsAnimated = true + + Citizen.CreateThread(function() + local playerPed = PlayerPedId() + local x,y,z = table.unpack(GetEntityCoords(playerPed)) + local prop = CreateObject(GetHashKey(prop_name), x, y, z + 0.2, true, true, true) + local boneIndex = GetPedBoneIndex(playerPed, 18905) + AttachEntityToEntity(prop, playerPed, boneIndex, 0.12, 0.028, 0.001, 10.0, 175.0, 0.0, true, true, false, true, 1, true) + + ESX.Streaming.RequestAnimDict('mp_player_intdrink', function() + TaskPlayAnim(playerPed, 'mp_player_intdrink', 'loop_bottle', 1.0, -1.0, 2000, 0, 1, true, true, true) + + Citizen.Wait(3000) + IsAnimated = false + ClearPedSecondaryTask(playerPed) + DeleteObject(prop) + end) + end) + + end +end) \ No newline at end of file diff --git a/config.lua b/config.lua new file mode 100644 index 0000000..3e48f9c --- /dev/null +++ b/config.lua @@ -0,0 +1,2 @@ +Config = {} +Config.Locale = 'de' \ No newline at end of file diff --git a/esx_basicneeds.sql b/esx_basicneeds.sql new file mode 100644 index 0000000..aee4e24 --- /dev/null +++ b/esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Pain', 1), + ('water', 'Eau', 1) +; diff --git a/fxmanifest.lua b/fxmanifest.lua new file mode 100644 index 0000000..6865e0e --- /dev/null +++ b/fxmanifest.lua @@ -0,0 +1,38 @@ +fx_version 'adamant' + +game 'gta5' + +description 'ESX Basic Needs' + +version '1.0.1' + +server_scripts { + '@es_extended/locale.lua', + 'locales/de.lua', + 'locales/br.lua', + 'locales/en.lua', + 'locales/fi.lua', + 'locales/fr.lua', + 'locales/sv.lua', + 'locales/pl.lua', + 'config.lua', + 'server/main.lua' +} + +client_scripts { + '@es_extended/locale.lua', + 'locales/de.lua', + 'locales/br.lua', + 'locales/en.lua', + 'locales/fi.lua', + 'locales/fr.lua', + 'locales/sv.lua', + 'locales/pl.lua', + 'config.lua', + 'client/main.lua' +} + +dependencies { + 'es_extended', + 'esx_status' +} diff --git a/locales/br.lua b/locales/br.lua new file mode 100644 index 0000000..dd51d06 --- /dev/null +++ b/locales/br.lua @@ -0,0 +1,4 @@ +Locales['br'] = { + ['used_bread'] = 'você comeu ~y~1x~s~ ~b~pão~s~', + ['used_water'] = 'você tomou ~y~1x~s~ ~b~água~s~', +} \ No newline at end of file diff --git a/locales/de.lua b/locales/de.lua new file mode 100644 index 0000000..7e2e98f --- /dev/null +++ b/locales/de.lua @@ -0,0 +1,66 @@ +Locales['de'] = { + ['used_bread'] = 'du hast ~y~1x~s~ ~b~Brot gegessen~s~', + ['used_hamburger'] = 'du hast ~y~1x~s~ ~b~Hamburger gegessen~s~', + ['used_mcbigmac'] = 'du hast ~y~1x~s~ ~b~Big Mac gegessen~s~', + ['used_mcbigtastybacon'] = 'du hast ~y~1x~s~ ~b~Big Tasty Bacon gegessen~s~', + ['used_mcfreshvegants'] = 'du hast ~y~1x~s~ ~b~Fresh Vegants gegessen~s~', + ['used_mcdoublecilicheese'] = 'du hast ~y~1x~s~ ~b~Double Cili Cheese gegessen~s~', + ['used_mcdoublecheeseburger'] = 'du hast ~y~1x~s~ ~b~Double Cheeseburger gegessen~s~', + ['used_mc4nuggets'] = 'du hast ~y~1x~s~ ~b~4er Nuggets gegessen~s~', + ['used_mc6nuggets'] = 'du hast ~y~1x~s~ ~b~6er Nuggets gegessen~s~', + ['used_mc9nuggets'] = 'du hast ~y~1x~s~ ~b~9er Nuggets gegessen~s~', + ['used_mc20nuggets'] = 'du hast ~y~1x~s~ ~b~20er Nuggets gegessen~s~', + ['used_mcpommesm'] = 'du hast ~y~1x~s~ ~b~Pommes gegessen~s~', + ['used_mcpommesg'] = 'du hast ~y~1x~s~ ~b~Pommes gegessen~s~', + ['used_mchamburgerroyalts'] = 'du hast ~y~1x~s~ ~b~Hamburger Royal TS gegessen~s~', + ['used_mcmcrib'] = 'du hast ~y~1x~s~ ~b~MC Rib gegessen~s~', + ['used_donut'] = 'du hast ~y~1x~s~ ~b~Donut gegessen~s~', + ['used_pizza'] = 'du hast ~y~1x~s~ ~b~Pizza gegessen~s~', + ['used_apple'] = 'du hast ~y~1x~s~ ~b~Apfel gegessen~s~', + ['used_ice'] = 'du hast ~y~1x~s~ ~b~Eis gegessen~s~', + ['used_fanta'] = 'du hast ~y~1x~s~ ~b~Fanta getrunken~s~', + ['used_grapperaisin'] = 'du hast ~y~1x~s~ ~b~Weintrauben gegessen~s~', + ['used_water'] = 'du hast ~y~1x~s~ ~b~Wasser getrunken~s~', + ['used_icetea'] = 'du hast ~y~1x~s~ ~b~Monster getrunken~s~', + ['used_redbull'] = 'du hast ~y~1x~s~ ~b~Redbull getrunken~s~', + ['used_mcsprite'] = 'du hast ~y~1x~s~ ~b~Sprite getrunken~s~', + ['used_mcicetea'] = 'du hast ~y~1x~s~ ~b~IceTea getrunken~s~', + ['used_mcapfelschorle'] = 'du hast ~y~1x~s~ ~b~Apfelschorle getrunken~s~', + ['used_mckaffee'] = 'du hast ~y~1x~s~ ~b~Kaffee getrunken~s~', + ['used_mcorangensaft'] = 'du hast ~y~1x~s~ ~b~Orangensaft getrunken~s~', + ['used_icetea'] = 'du hast ~y~1x~s~ ~b~Ice Tea getrunken~s~', + ['used_jusfruit'] = 'du hast ~y~1x~s~ ~b~Fruchtsaft getrunken~s~', + ['used_beer'] = 'du hast ~y~1x~s~ ~b~Bier getrunken~s~', + ['used_mccolalight'] = 'du hast ~y~1x~s~ ~b~Cola Light getrunken~s~', + ['used_mcfanta'] = 'du hast ~y~1x~s~ ~b~Fanta getrunken~s~', + ['used_mccola'] = 'du hast ~y~1x~s~ ~b~Cola getrunken~s~', + ['used_engine_monster'] = 'du hast ~y~1x~s~ ~b~Monster Energy getrunken~s~', + ['used_peach_juice'] = 'du hast ~y~1x~s~ ~b~Pfirsichsaft getrunken~s~', + ['used_swsandvic'] = 'du hast ~y~1x~s~ ~b~Sandwitch gegessen~s~', + ['used_drpepper'] = 'du hast ~y~1x~s~ ~b~Dr Pepper getrunken~s~', + ['used_cupcake'] = 'du hast ~y~1x~s~ ~b~Cupcake gegessen~s~', + ['used_saucisson'] = 'du hast ~y~1x~s~ ~b~Cupcake gegessen~s~', + ['used_bacardi'] = 'du hast ~y~1x~s~ ~b~Bacardi getrunken~s~', + ['used_cheesebows'] = 'du hast ~y~1x~s~ ~b~Pasta gegessen~s~', + ['used_chips'] = 'du hast ~y~1x~s~ ~b~Chips gegessen~s~', + ['used_chocolate'] = 'du hast ~y~1x~s~ ~b~Schokolade gegessen~s~', + ['used_cokolad_zmrzlina'] = 'du hast ~y~1x~s~ ~b~Schokoladen Eis gegessen~s~', + ['used_coleczka'] = 'du hast ~y~1x~s~ ~b~Cola getrunken~s~', + ['used_cubalibre'] = 'du hast ~y~1x~s~ ~b~Cuba Libre getrunken~s~', + ['used_golem'] = 'du hast ~y~1x~s~ ~b~Golem getrunken~s~', + ['used_lasana'] = 'du hast ~y~1x~s~ ~b~Lasangne gegessen~s~', + ['used_kinderbueno'] = 'du hast ~y~1x~s~ ~b~Kinderbueno gegessen~s~', + ['used_jager'] = 'du hast ~y~1x~s~ ~b~Jägermeister getrunken~s~', + ['used_martini'] = 'du hast ~y~1x~s~ ~b~Martini getrunken~s~', + ['used_rhum'] = 'du hast ~y~1x~s~ ~b~Rum getrunken~s~', + ['used_soda'] = 'du hast ~y~1x~s~ ~b~Soda getrunken~s~', + ['used_tequila'] = 'du hast ~y~1x~s~ ~b~Tequila getrunken~s~', + ['used_vanil_smot'] = 'du hast ~y~1x~s~ ~b~Vanilleshake getrunken~s~', + ['used_vine'] = 'du hast ~y~1x~s~ ~b~Vine getrunken~s~', + ['used_vodka'] = 'du hast ~y~1x~s~ ~b~Wodka getrunken~s~', + ['used_vodkaenergy'] = 'du hast ~y~1x~s~ ~b~Wodka Energy getrunken~s~', + ['used_vodkafruit'] = 'du hast ~y~1x~s~ ~b~Wodkafruit getrunken~s~', + ['used_wine'] = 'du hast ~y~1x~s~ ~b~Wein getrunken~s~', + ['used_whiskycoca'] = 'du hast ~y~1x~s~ ~b~Whisky Cola getrunken~s~', + ['used_whisky'] = 'du hast ~y~1x~s~ ~b~Whisky getrunken~s~', +} \ No newline at end of file diff --git a/locales/en.lua b/locales/en.lua new file mode 100644 index 0000000..9d67181 --- /dev/null +++ b/locales/en.lua @@ -0,0 +1,4 @@ +Locales['en'] = { + ['used_bread'] = 'you have used ~y~1x~s~ ~b~bread~s~', + ['used_water'] = 'you have used ~y~1x~s~ ~b~water~s~', +} \ No newline at end of file diff --git a/locales/fi.lua b/locales/fi.lua new file mode 100644 index 0000000..6d76ff1 --- /dev/null +++ b/locales/fi.lua @@ -0,0 +1,4 @@ +Locales['fi'] = { + ['used_bread'] = 'sinä söit ~y~1x~s~ ~b~leipä~s~', + ['used_water'] = 'sinä joit ~y~1x~s~ ~b~vesi~s~', +} \ No newline at end of file diff --git a/locales/fr.lua b/locales/fr.lua new file mode 100644 index 0000000..996aa77 --- /dev/null +++ b/locales/fr.lua @@ -0,0 +1,4 @@ +Locales['fr'] = { + ['used_bread'] = 'vous avez utilisé ~y~1x~s~ ~b~pain~s~', + ['used_water'] = 'vous avez utilisé ~y~1x~s~ ~b~eau~s~', +} \ No newline at end of file diff --git a/locales/pl.lua b/locales/pl.lua new file mode 100644 index 0000000..ee618aa --- /dev/null +++ b/locales/pl.lua @@ -0,0 +1,4 @@ +Locales['pl'] = { + ['used_bread'] = 'zjadłeś/aś ~y~1x~s~ ~b~chleb~s~', + ['used_water'] = 'wypiłeś/aś ~y~1x~s~ ~b~woda~s~', +} \ No newline at end of file diff --git a/locales/sv.lua b/locales/sv.lua new file mode 100644 index 0000000..86d6a8c --- /dev/null +++ b/locales/sv.lua @@ -0,0 +1,4 @@ +Locales['sv'] = { + ['used_bread'] = 'du käkade upp en bit ~b~bröd~s~', + ['used_water'] = 'du drack upp en ~b~vattenflaska~s~', +} \ No newline at end of file diff --git a/localization/br_esx_basicneeds.sql b/localization/br_esx_basicneeds.sql new file mode 100644 index 0000000..47dd907 --- /dev/null +++ b/localization/br_esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Pao', 1), + ('water', 'Agua', 1) +; diff --git a/localization/cs_esx_basicneeds.sql b/localization/cs_esx_basicneeds.sql new file mode 100644 index 0000000..81b773a --- /dev/null +++ b/localization/cs_esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Chleba', 1), + ('water', 'Voda', 1) +; diff --git a/localization/de_esx_basicneeds.sql b/localization/de_esx_basicneeds.sql new file mode 100644 index 0000000..01b9f44 --- /dev/null +++ b/localization/de_esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Brot', 1), + ('water', 'Wasser', 1) +; diff --git a/localization/fi_esx_basicneeds.sql b/localization/fi_esx_basicneeds.sql new file mode 100644 index 0000000..331efe4 --- /dev/null +++ b/localization/fi_esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Leipä', 1), + ('water', 'Vesi', 1) +; diff --git a/localization/pl_esx_basicneeds.sql b/localization/pl_esx_basicneeds.sql new file mode 100644 index 0000000..6ca345d --- /dev/null +++ b/localization/pl_esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Chleb', 1), + ('water', 'Woda', 1) +; diff --git a/localization/sv_esx_basicneeds.sql b/localization/sv_esx_basicneeds.sql new file mode 100644 index 0000000..d330196 --- /dev/null +++ b/localization/sv_esx_basicneeds.sql @@ -0,0 +1,6 @@ +USE `es_extended`; + +INSERT INTO `items` (`name`, `label`, `weight`) VALUES + ('bread', 'Bröd', 1), + ('water', 'Vatten', 1) +; diff --git a/server/main.lua b/server/main.lua new file mode 100644 index 0000000..19e36bf --- /dev/null +++ b/server/main.lua @@ -0,0 +1,622 @@ +ESX = nil + +TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + +ESX.RegisterUsableItem('bread', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('bread', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source) + xPlayer.showNotification(_U('used_bread')) +end) + +ESX.RegisterUsableItem('swsandvic', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('swsandvic', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source) + xPlayer.showNotification(_U('used_swsandvic')) +end) + +ESX.RegisterUsableItem('hamburger', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('hamburger', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_hamburger')) +end) + +ESX.RegisterUsableItem('mcbigmac', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcbigmac', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mcbigmac')) +end) + +ESX.RegisterUsableItem('mc4nuggets', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mc4nuggets', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_cb_nugets') + xPlayer.showNotification(_U('used_mc4nuggets')) +end) + +ESX.RegisterUsableItem('mcpommesm', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcpommesm', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 100000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_cb_nugets') + xPlayer.showNotification(_U('used_mcpommesm')) +end) + +ESX.RegisterUsableItem('mcpommesg', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcpommesg', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_cb_nugets') + xPlayer.showNotification(_U('used_mcpommesg')) +end) + +ESX.RegisterUsableItem('mc6nuggets', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mc6nuggets', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_cb_nugets') + xPlayer.showNotification(_U('used_mc6nuggets')) +end) + +ESX.RegisterUsableItem('saucisson', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('saucisson', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source) + xPlayer.showNotification(_U('used_saucisson')) +end) + +ESX.RegisterUsableItem('mc9nuggets', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mc9nuggets', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_cb_nugets') + xPlayer.showNotification(_U('used_mc9nuggets')) +end) + +ESX.RegisterUsableItem('mc20nuggets', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mc20nuggets', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_cb_nugets') + xPlayer.showNotification(_U('used_mc20nuggets')) +end) + +ESX.RegisterUsableItem('mcmcrib', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcmcrib', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mcmcrib')) +end) + +ESX.RegisterUsableItem('mchamburgerroyalts', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mchamburgerroyalts', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mchamburgerroyalts')) +end) + +ESX.RegisterUsableItem('mcdoublecheeseburger', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcdoublecheeseburger', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mcdoublecheeseburger')) +end) + +ESX.RegisterUsableItem('mcdoublecilicheese', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcdoublecilicheese', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mcdoublecilicheese')) +end) + +ESX.RegisterUsableItem('mcbigtastybacon', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcbigtastybacon', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mcbigtastybacon')) +end) + +ESX.RegisterUsableItem('mcfreshvegants', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcfreshvegants', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_burger_01') + xPlayer.showNotification(_U('used_mcfreshvegants')) +end) + +ESX.RegisterUsableItem('ice', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('ice', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 30000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'p_ice_box_proxy_col') + xPlayer.showNotification(_U('used_ice')) +end) + +ESX.RegisterUsableItem('pizza', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('pizza', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 200000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_pizza_box_02') + xPlayer.showNotification(_U('used_pizza')) +end) + +ESX.RegisterUsableItem('apple', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('apple', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 50000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_cs_apple') + xPlayer.showNotification(_U('used_apple')) +end) + +ESX.RegisterUsableItem('donut', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('donut', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 50000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_amb_donut') + xPlayer.showNotification(_U('used_donut')) +end) + +ESX.RegisterUsableItem('ice', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('ice', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 50000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_bar_ice_01') + xPlayer.showNotification(_U('used_ice')) +end) + +ESX.RegisterUsableItem('cokolad_zmrzlina', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('cokolad_zmrzlina', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 50000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_bar_ice_01') + xPlayer.showNotification(_U('used_cokolad_zmrzlina')) +end) + +ESX.RegisterUsableItem('cupcake', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('cupcake', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 50000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_burg1') + xPlayer.showNotification(_U('used_cupcake')) +end) + +ESX.RegisterUsableItem('grapperaisin', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('grapperaisin', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 150000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_grapes_01') + xPlayer.showNotification(_U('used_grapperaisin')) +end) + +ESX.RegisterUsableItem('cheesebows', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('cheesebows', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 190000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_food_bs_burg1') + xPlayer.showNotification(_U('used_cheesebows')) +end) + +ESX.RegisterUsableItem('chips', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('chips', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 190000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'ng_proc_food_chips01b') + xPlayer.showNotification(_U('used_chips')) +end) + +ESX.RegisterUsableItem('lasana', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('lasana', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 190000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_bar_zitronen') + xPlayer.showNotification(_U('used_lasana')) +end) + +ESX.RegisterUsableItem('chocolate', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('chocolate', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 100000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_choc_ego') + xPlayer.showNotification(_U('used_chocolate')) +end) + +ESX.RegisterUsableItem('kinderbueno', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('kinderbueno', 1) + + TriggerClientEvent('esx_status:add', source, 'hunger', 100000) + TriggerClientEvent('esx_basicneeds:onEat', source, 'prop_choc_meto') + xPlayer.showNotification(_U('used_kinderbueno')) +end) + +ESX.RegisterUsableItem('water', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('water', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_water')) +end) + +ESX.RegisterUsableItem('bacardi', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('bacardi', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 20000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_beer_bottle') + xPlayer.showNotification(_U('used_bacardi')) +end) + +ESX.RegisterUsableItem('drpepper', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('drpepper', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_drpepper')) +end) + +ESX.RegisterUsableItem('mcsprite', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcsprite', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mcsprite')) +end) + +ESX.RegisterUsableItem('mcicetea', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcicetea', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mcicetea')) +end) + +ESX.RegisterUsableItem('jusfruit', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('jusfruit', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_jusfruit')) +end) + + +ESX.RegisterUsableItem('mcfanta', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcfanta', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mcfanta')) +end) + +ESX.RegisterUsableItem('mccola', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mccola', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mccola')) +end) + +ESX.RegisterUsableItem('coleczka', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('coleczka', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_coleczka')) +end) + +ESX.RegisterUsableItem('mcsprite', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcsprite', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mcsprite')) +end) + +ESX.RegisterUsableItem('mcorangensaft', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcorangensaft', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mcorangensaft')) +end) + +ESX.RegisterUsableItem('mcapfelschorle', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mcapfelschorle', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mcapfelschorle')) +end) + +ESX.RegisterUsableItem('mccolalight', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mccolalight', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mccolalight')) +end) + +ESX.RegisterUsableItem('mckaffee', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('mckaffee', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ecola_can') + xPlayer.showNotification(_U('used_mckaffee')) +end) + +ESX.RegisterUsableItem('fanta', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('fanta', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_fanta')) +end) + +ESX.RegisterUsableItem('icetea', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('icetea', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_icetea')) +end) + +ESX.RegisterUsableItem('redbull', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('redbull', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 20000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_redbull')) +end) + +ESX.RegisterUsableItem('engine_monster', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('engine_monster', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 20000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_engine_monster')) +end) + +ESX.RegisterUsableItem('peach_juice', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('peach_juice', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 20000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_peach_juice')) +end) + +ESX.RegisterUsableItem('icetea', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('icetea', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_icetea')) +end) + +ESX.RegisterUsableItem('beer', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('beer', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 10000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_amb_beer_bottle') + xPlayer.showNotification(_U('used_beer')) +end) + +ESX.RegisterUsableItem('cubalibre', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('cubalibre', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 10000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ld_flow_bottle') + xPlayer.showNotification(_U('used_cubalibre')) +end) + +ESX.RegisterUsableItem('golem', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('golem', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 10000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_ld_flow_bottle') + xPlayer.showNotification(_U('used_golem')) +end) + +ESX.RegisterUsableItem('jusfruit', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('jusfruit', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source) + xPlayer.showNotification(_U('used_jusfruit')) +end) + +ESX.RegisterUsableItem('jager', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('jager', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_bottle_cognac') + xPlayer.showNotification(_U('used_jager')) +end) + +ESX.RegisterUsableItem('martini', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('martini', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_bottle_cognac') + xPlayer.showNotification(_U('used_martini')) +end) + +ESX.RegisterUsableItem('rhum', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('rhum', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_rum_bottle') + xPlayer.showNotification(_U('used_rhum')) +end) + +ESX.RegisterUsableItem('tequila', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('tequila', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_tequila_bottle') + xPlayer.showNotification(_U('used_tequila')) +end) + +ESX.RegisterUsableItem('vanil_smot', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('vanil_smot', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_bar_cockshaker') + xPlayer.showNotification(_U('used_vanil_smot')) +end) + +ESX.RegisterUsableItem('vine', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('vine', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_wine_bot_02') + xPlayer.showNotification(_U('used_vine')) +end) + +ESX.RegisterUsableItem('wine', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('wine', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_wine_bot_02') + xPlayer.showNotification(_U('used_wine')) +end) + +ESX.RegisterUsableItem('vodka', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('vodka', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_vodka_bottle') + xPlayer.showNotification(_U('used_vodka')) +end) + +ESX.RegisterUsableItem('whiskycoca', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('whiskycoca', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'p_whiskey_bottle_s') + xPlayer.showNotification(_U('used_whiskycoca')) +end) + +ESX.RegisterUsableItem('whisky', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('whisky', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'p_whiskey_bottle_s') + xPlayer.showNotification(_U('used_whisky')) +end) + +ESX.RegisterUsableItem('vodkaenergy', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('vodkaenergy', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_vodka_bottle') + xPlayer.showNotification(_U('used_vodkaenergy')) +end) + +ESX.RegisterUsableItem('vodkafruit', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('vodkafruit', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'prop_vodka_bottle') + xPlayer.showNotification(_U('used_vodkafruit')) +end) + +ESX.RegisterUsableItem('soda', function(source) + local xPlayer = ESX.GetPlayerFromId(source) + xPlayer.removeInventoryItem('soda', 1) + + TriggerClientEvent('esx_status:add', source, 'thirst', 200000) + TriggerClientEvent('esx_basicneeds:onDrink', source, 'ng_proc_sodacan_01b') + xPlayer.showNotification(_U('used_soda')) +end) + +ESX.RegisterCommand('heal', 'admin', function(xPlayer, args, showError) + args.playerId.triggerEvent('esx_basicneeds:healPlayer') + args.playerId.triggerEvent('chat:addMessage', {args = {'^5HEAL', 'You have been healed.'}}) +end, true, {help = 'Heal a player, or yourself - restores thirst, hunger and health.', validate = true, arguments = { + {name = 'playerId', help = 'the player id', type = 'player'} +}}) + + +print("^0======================================================================^7") +print("^0[^4Author^0] ^7:^0 ^0M_Viper^7") +print("^0[^3Version^0] ^7:^0 1.0.3^7") +print("^0[^2Discord^0] ^7:^0 ^5dc.Difficult-Knights.de") +print("^0[^1YouTube^0] ^7:^0 ^5https://www.youtube.com/channel/UCmTXYM0rY7VlVlNrOA-O63A^7") +print("^0======================================================================^7") \ No newline at end of file