local firstspawn = 0
AddEventHandler('playerSpawned', function(spawn)
if firstspawn == 0 then
firstspawn = 1
else
TriggerServerEvent('player_state:setdefaultneeds')
end
end)
RegisterNetEvent('player_state:death')
AddEventHandler('player_state:death', function()
SetEntityHealth(GetPlayerPed(-1), 0)
end)
-- FOOD
RegisterNetEvent('player_state:set')
AddEventHandler('player_state:set', function(state)
SendNUIMessage({ state = json.encode({food = state.food, water = state.water, needs = state.needs})
})
end)
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-- EMOTES
-------------------------------------------------------------------------
-------------------------------------------------------------------------
RegisterNetEvent('player_state:drink')
AddEventHandler('player_state:drink', function()
local bone = GetPedBoneIndex(GetPlayerPed(-1), 28422)
local bottleProp = 0
local bottleModel = "prop_ld_flow_bottle"
function newBottleProp()
local x,y,z = table.unpack(GetEntityCoords(GetPlayerPed(-1), true))
RequestModel(bottleModel)
while not HasModelLoaded(bottleModel) do
Citizen.Wait(100)
end
return CreateObject(bottleModel, 1.0, 1.0, 1.0, 1, 1, 0)
end
bottleProp = newBottleProp()
TriggerEvent("player:looseItem", item, 1)
AttachEntityToEntity(bottleProp, GetPlayerPed(-1), bone, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 0, 0, 2, 1)
RequestModel("prop_ld_flow_bottle")
ped = GetPlayerPed(-1)
if ped then
Citizen.CreateThread(function()
RequestAnimDict('amb@world_human_drinking_fat@beer@male@idle_a')
local pedid = PlayerPedId()
TaskPlayAnim(pedid, 'amb@world_human_drinking_fat@beer@male@idle_a', 'idle_a', 8.0, -8, -1, 16, 0, 0, 0, 0)
Citizen.Wait(300)
TaskPlayAnim(pedid, 'amb@world_human_drinking_fat@beer@male@idle_a', 'idle_b', 8.0, -8, -1, 16, 0, 0, 0, 0)
Citizen.Wait(300)
TaskPlayAnim(pedid, 'amb@world_human_drinking_fat@beer@male@idle_a', 'idle_c', 8.0, -8, -1, 16, 0, 0, 0, 0)
end)
end
Citizen.Wait(3000)
ClearPedTasks(ped)
DeleteEntity(bottleProp)
end)
--//////////////
RegisterNetEvent('player_state:eat')
AddEventHandler('player_state:eat', function()
local bone = GetPedBoneIndex(GetPlayerPed(-1), 28422)
local tacosProp = 0
local tacosModel = "prop_food_bs_burger2"
function newTacosProp()
local x,y,z = table.unpack(GetEntityCoords(GetPlayerPed(-1), true))
RequestModel(tacosModel)
while not HasModelLoaded(tacosModel) do
Citizen.Wait(100)
end
return CreateObject(tacosModel, 1.0, 1.0, 1.0, 1, 1, 0)
end
tacosProp = newTacosProp()
AttachEntityToEntity(tacosProp, GetPlayerPed(-1), bone, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 0, 0, 2, 1)
RequestModel("prop_food_bs_burger2")
ped = GetPlayerPed(-1)
if ped then
Citizen.CreateThread(function()
RequestAnimDict('amb@code_human_wander_eating_donut@male@idle_a')
local pedid = PlayerPedId()
TaskPlayAnim(pedid, 'amb@code_human_wander_eating_donut@male@idle_a', 'idle_c', 8.0, -8, -1, 16, 0, 0, 0, 0)
Citizen.Wait(5000)
ClearPedTasks(ped)
end)
end
Citizen.Wait(5000)
DeleteEntity(tacosProp)
end)
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-- EMOTES END
-------------------------------------------------------------------------
-------------------------------------------------------------------------
RegisterNetEvent('player_state:pee')
AddEventHandler('player_state:pee', function()
ped = GetPlayerPed(-1)
local hashSkin = GetHashKey("mp_m_freemode_01")
if IsPedInAnyVehicle(GetPlayerPed(-1), true) == false then
if ped then
if(GetEntityModel(GetPlayerPed(-1)) ~= hashSkin) then
Citizen.CreateThread(function()
RequestAnimDict('missfbi3ig_0')
local pedid = PlayerPedId()
TaskPlayAnim(pedid, 'missfbi3ig_0', 'shit_loop_trev', 8.0, 8, -1, 0, 0, 0, 0, 0)
ClearPedTasks(ped)
end)
else
Citizen.CreateThread(function()
RequestAnimDict('misscarsteal2peeing')
local pedid = PlayerPedId()
TaskPlayAnim(pedid, 'misscarsteal2peeing', 'peeing_intro', 8.0, -8, -1, 0, 0, 0, 0, 0)
Citizen.Wait(GetAnimDuration('misscarsteal2peeing', 'peeing_intro'))
TaskPlayAnim(pedid, 'misscarsteal2peeing', 'peeing_loop', 8.0, -8, -1, 0, 0, 0, 0, 0)
Citizen.Wait(GetAnimDuration('misscarsteal2peeing', 'peeing_loop'))
TaskPlayAnim(pedid, 'misscarsteal2peeing', 'peeing_outro', 8.0, -8, -1, 0, 0, 0, 0, 0)
ClearPedTasks(ped)
end)
end
end
else
--TriggerEvent("es_freeroam:notify", "CHAR_MP_STRIPCLUB_PR", 1, "Mairie", false, "ca serai pas mieux en dehors du vehicule?")
end
end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if IsPauseMenuActive() then
SendNUIMessage({ pause = true })
else
SendNUIMessage({ pause = false })
end
end
end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(120000)
TriggerServerEvent('player_state:check')
end
end)
bG9jYWwgZmlyc3RzcGF3biA9IDAKQWRkRXZlbnRIYW5kbGVyKCdwbGF5ZXJTcGF3bmVkJywgZnVuY3Rpb24oc3Bhd24pCiAgICBpZiBmaXJzdHNwYXduID09IDAgdGhlbgogICAgICAgIGZpcnN0c3Bhd24gPSAxCiAgICBlbHNlCiAgICAgICAgVHJpZ2dlclNlcnZlckV2ZW50KCdwbGF5ZXJfc3RhdGU6c2V0ZGVmYXVsdG5lZWRzJykKICAgIGVuZAplbmQpCiAKUmVnaXN0ZXJOZXRFdmVudCgncGxheWVyX3N0YXRlOmRlYXRoJykKQWRkRXZlbnRIYW5kbGVyKCdwbGF5ZXJfc3RhdGU6ZGVhdGgnLCBmdW5jdGlvbigpCiAgICBTZXRFbnRpdHlIZWFsdGgoR2V0UGxheWVyUGVkKC0xKSwgMCkKZW5kKQogCi0tIEZPT0QKUmVnaXN0ZXJOZXRFdmVudCgncGxheWVyX3N0YXRlOnNldCcpCkFkZEV2ZW50SGFuZGxlcigncGxheWVyX3N0YXRlOnNldCcsIGZ1bmN0aW9uKHN0YXRlKQogICAgU2VuZE5VSU1lc3NhZ2UoeyBzdGF0ZSA9IGpzb24uZW5jb2RlKHtmb29kID0gc3RhdGUuZm9vZCwgd2F0ZXIgPSBzdGF0ZS53YXRlciwgbmVlZHMgPSBzdGF0ZS5uZWVkc30pCiAgICB9KQplbmQpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSBFTU9URVMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJlZ2lzdGVyTmV0RXZlbnQoJ3BsYXllcl9zdGF0ZTpkcmluaycpCkFkZEV2ZW50SGFuZGxlcigncGxheWVyX3N0YXRlOmRyaW5rJywgZnVuY3Rpb24oKQogICAgbG9jYWwgYm9uZSA9IEdldFBlZEJvbmVJbmRleChHZXRQbGF5ZXJQZWQoLTEpLCAyODQyMikKICAgIGxvY2FsIGJvdHRsZVByb3AgPSAwCiAgICBsb2NhbCBib3R0bGVNb2RlbCA9ICJwcm9wX2xkX2Zsb3dfYm90dGxlIgogICAgZnVuY3Rpb24gbmV3Qm90dGxlUHJvcCgpCiAgICAgICAgbG9jYWwgeCx5LHogPSB0YWJsZS51bnBhY2soR2V0RW50aXR5Q29vcmRzKEdldFBsYXllclBlZCgtMSksIHRydWUpKQogICAgICAgIFJlcXVlc3RNb2RlbChib3R0bGVNb2RlbCkKICAgICAgICB3aGlsZSBub3QgSGFzTW9kZWxMb2FkZWQoYm90dGxlTW9kZWwpIGRvCiAgICAgICAgICAgIENpdGl6ZW4uV2FpdCgxMDApCiAgICAgICAgZW5kCiAgICAgICAgcmV0dXJuIENyZWF0ZU9iamVjdChib3R0bGVNb2RlbCwgMS4wLCAxLjAsIDEuMCwgMSwgMSwgMCkKICAgIGVuZAogICAgYm90dGxlUHJvcCA9IG5ld0JvdHRsZVByb3AoKQogICAgVHJpZ2dlckV2ZW50KCJwbGF5ZXI6bG9vc2VJdGVtIiwgaXRlbSwgMSkKICAgIEF0dGFjaEVudGl0eVRvRW50aXR5KGJvdHRsZVByb3AsIEdldFBsYXllclBlZCgtMSksIGJvbmUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEsIDEsIDAsIDAsIDIsIDEpCiAgICBSZXF1ZXN0TW9kZWwoInByb3BfbGRfZmxvd19ib3R0bGUiKQogICAgcGVkID0gR2V0UGxheWVyUGVkKC0xKQogICAgaWYgcGVkIHRoZW4KICAgICAgICBDaXRpemVuLkNyZWF0ZVRocmVhZChmdW5jdGlvbigpCiAgICAgICAgICAgIFJlcXVlc3RBbmltRGljdCgnYW1iQHdvcmxkX2h1bWFuX2RyaW5raW5nX2ZhdEBiZWVyQG1hbGVAaWRsZV9hJykKICAgICAgICAgICAgbG9jYWwgcGVkaWQgPSBQbGF5ZXJQZWRJZCgpCiAgICAgICAgICAgIFRhc2tQbGF5QW5pbShwZWRpZCwgJ2FtYkB3b3JsZF9odW1hbl9kcmlua2luZ19mYXRAYmVlckBtYWxlQGlkbGVfYScsICdpZGxlX2EnLCA4LjAsIC04LCAtMSwgMTYsIDAsIDAsIDAsIDApCiAgICAgICAgICAgIENpdGl6ZW4uV2FpdCgzMDApCiAgICAgICAgICAgIFRhc2tQbGF5QW5pbShwZWRpZCwgJ2FtYkB3b3JsZF9odW1hbl9kcmlua2luZ19mYXRAYmVlckBtYWxlQGlkbGVfYScsICdpZGxlX2InLCA4LjAsIC04LCAtMSwgMTYsIDAsIDAsIDAsIDApCiAgICAgICAgICAgIENpdGl6ZW4uV2FpdCgzMDApCiAgICAgICAgICAgIFRhc2tQbGF5QW5pbShwZWRpZCwgJ2FtYkB3b3JsZF9odW1hbl9kcmlua2luZ19mYXRAYmVlckBtYWxlQGlkbGVfYScsICdpZGxlX2MnLCA4LjAsIC04LCAtMSwgMTYsIDAsIDAsIDAsIDApCiAgICAgICAgZW5kKQogICAgZW5kCiAgICBDaXRpemVuLldhaXQoMzAwMCkKICAgIENsZWFyUGVkVGFza3MocGVkKQogICAgRGVsZXRlRW50aXR5KGJvdHRsZVByb3ApCmVuZCkKLS0vLy8vLy8vLy8vLy8vLwpSZWdpc3Rlck5ldEV2ZW50KCdwbGF5ZXJfc3RhdGU6ZWF0JykKQWRkRXZlbnRIYW5kbGVyKCdwbGF5ZXJfc3RhdGU6ZWF0JywgZnVuY3Rpb24oKQogICAgbG9jYWwgYm9uZSA9IEdldFBlZEJvbmVJbmRleChHZXRQbGF5ZXJQZWQoLTEpLCAyODQyMikKICAgIGxvY2FsIHRhY29zUHJvcCA9IDAKICAgIGxvY2FsIHRhY29zTW9kZWwgPSAicHJvcF9mb29kX2JzX2J1cmdlcjIiCiAgICBmdW5jdGlvbiBuZXdUYWNvc1Byb3AoKQogICAgICAgIGxvY2FsIHgseSx6ID0gdGFibGUudW5wYWNrKEdldEVudGl0eUNvb3JkcyhHZXRQbGF5ZXJQZWQoLTEpLCB0cnVlKSkKICAgICAgICBSZXF1ZXN0TW9kZWwodGFjb3NNb2RlbCkKICAgICAgICB3aGlsZSBub3QgSGFzTW9kZWxMb2FkZWQodGFjb3NNb2RlbCkgZG8KICAgICAgICAgICAgQ2l0aXplbi5XYWl0KDEwMCkKICAgICAgICBlbmQKICAgICAgICByZXR1cm4gQ3JlYXRlT2JqZWN0KHRhY29zTW9kZWwsIDEuMCwgMS4wLCAxLjAsIDEsIDEsIDApCiAgICBlbmQKICAgIHRhY29zUHJvcCA9IG5ld1RhY29zUHJvcCgpCiAgICBBdHRhY2hFbnRpdHlUb0VudGl0eSh0YWNvc1Byb3AsIEdldFBsYXllclBlZCgtMSksIGJvbmUsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDEsIDEsIDAsIDAsIDIsIDEpCiAgICBSZXF1ZXN0TW9kZWwoInByb3BfZm9vZF9ic19idXJnZXIyIikKICAgIHBlZCA9IEdldFBsYXllclBlZCgtMSkKICAgIGlmIHBlZCB0aGVuCiAgICAgICAgQ2l0aXplbi5DcmVhdGVUaHJlYWQoZnVuY3Rpb24oKQogICAgICAgICAgICBSZXF1ZXN0QW5pbURpY3QoJ2FtYkBjb2RlX2h1bWFuX3dhbmRlcl9lYXRpbmdfZG9udXRAbWFsZUBpZGxlX2EnKQogICAgICAgICAgICBsb2NhbCBwZWRpZCA9IFBsYXllclBlZElkKCkKICAgICAgICAgICAgVGFza1BsYXlBbmltKHBlZGlkLCAnYW1iQGNvZGVfaHVtYW5fd2FuZGVyX2VhdGluZ19kb251dEBtYWxlQGlkbGVfYScsICdpZGxlX2MnLCA4LjAsIC04LCAtMSwgMTYsIDAsIDAsIDAsIDApCiAgICAgICAgICAgIENpdGl6ZW4uV2FpdCg1MDAwKQogICAgICAgICAgICBDbGVhclBlZFRhc2tzKHBlZCkKICAgICAgICBlbmQpCiAgICBlbmQKICAgIENpdGl6ZW4uV2FpdCg1MDAwKQogICAgRGVsZXRlRW50aXR5KHRhY29zUHJvcCkKZW5kKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gRU1PVEVTIEVORAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmVnaXN0ZXJOZXRFdmVudCgncGxheWVyX3N0YXRlOnBlZScpCkFkZEV2ZW50SGFuZGxlcigncGxheWVyX3N0YXRlOnBlZScsIGZ1bmN0aW9uKCkKICAgIHBlZCA9IEdldFBsYXllclBlZCgtMSkKICAgIGxvY2FsIGhhc2hTa2luID0gR2V0SGFzaEtleSgibXBfbV9mcmVlbW9kZV8wMSIpCiAgICBpZiBJc1BlZEluQW55VmVoaWNsZShHZXRQbGF5ZXJQZWQoLTEpLCB0cnVlKSA9PSBmYWxzZSB0aGVuCiAgICAgICAgaWYgcGVkIHRoZW4KICAgICAgICAgICAgaWYoR2V0RW50aXR5TW9kZWwoR2V0UGxheWVyUGVkKC0xKSkgfj0gaGFzaFNraW4pIHRoZW4KICAgICAgICAgICAgICAgIENpdGl6ZW4uQ3JlYXRlVGhyZWFkKGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0QW5pbURpY3QoJ21pc3NmYmkzaWdfMCcpCiAgICAgICAgICAgICAgICAgICAgbG9jYWwgcGVkaWQgPSBQbGF5ZXJQZWRJZCgpCiAgICAgICAgICAgICAgICAgICAgVGFza1BsYXlBbmltKHBlZGlkLCAnbWlzc2ZiaTNpZ18wJywgJ3NoaXRfbG9vcF90cmV2JywgOC4wLCA4LCAtMSwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgICAgICAgICAgICBDbGVhclBlZFRhc2tzKHBlZCkKICAgICAgICAgICAgICAgIGVuZCkKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgQ2l0aXplbi5DcmVhdGVUaHJlYWQoZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RBbmltRGljdCgnbWlzc2NhcnN0ZWFsMnBlZWluZycpCiAgICAgICAgICAgICAgICAgICAgbG9jYWwgcGVkaWQgPSBQbGF5ZXJQZWRJZCgpCiAgICAgICAgICAgICAgICAgICAgVGFza1BsYXlBbmltKHBlZGlkLCAnbWlzc2NhcnN0ZWFsMnBlZWluZycsICdwZWVpbmdfaW50cm8nLCA4LjAsIC04LCAtMSwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgICAgICAgICAgICBDaXRpemVuLldhaXQoR2V0QW5pbUR1cmF0aW9uKCdtaXNzY2Fyc3RlYWwycGVlaW5nJywgJ3BlZWluZ19pbnRybycpKQogICAgICAgICAgICAgICAgICAgIFRhc2tQbGF5QW5pbShwZWRpZCwgJ21pc3NjYXJzdGVhbDJwZWVpbmcnLCAncGVlaW5nX2xvb3AnLCA4LjAsIC04LCAtMSwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgICAgICAgICAgICBDaXRpemVuLldhaXQoR2V0QW5pbUR1cmF0aW9uKCdtaXNzY2Fyc3RlYWwycGVlaW5nJywgJ3BlZWluZ19sb29wJykpCiAgICAgICAgICAgICAgICAgICAgVGFza1BsYXlBbmltKHBlZGlkLCAnbWlzc2NhcnN0ZWFsMnBlZWluZycsICdwZWVpbmdfb3V0cm8nLCA4LjAsIC04LCAtMSwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgICAgICAgICAgICBDbGVhclBlZFRhc2tzKHBlZCkKICAgICAgICAgICAgICAgIGVuZCkKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICBlbHNlCiAgICAgICAgLS1UcmlnZ2VyRXZlbnQoImVzX2ZyZWVyb2FtOm5vdGlmeSIsICJDSEFSX01QX1NUUklQQ0xVQl9QUiIsIDEsICJNYWlyaWUiLCBmYWxzZSwgImNhIHNlcmFpIHBhcyBtaWV1eCBlbiBkZWhvcnMgZHUgdmVoaWN1bGU/IikKICAgIGVuZAplbmQpCiAKQ2l0aXplbi5DcmVhdGVUaHJlYWQoZnVuY3Rpb24oKQogICAgd2hpbGUgdHJ1ZSBkbwogICAgICAgIENpdGl6ZW4uV2FpdCgwKQogICAgICAgIGlmIElzUGF1c2VNZW51QWN0aXZlKCkgdGhlbgogICAgICAgICAgICBTZW5kTlVJTWVzc2FnZSh7IHBhdXNlID0gdHJ1ZSB9KQogICAgICAgIGVsc2UKICAgICAgICAgICAgU2VuZE5VSU1lc3NhZ2UoeyBwYXVzZSA9IGZhbHNlIH0pCiAgICAgICAgZW5kCiAgICBlbmQKZW5kKQpDaXRpemVuLkNyZWF0ZVRocmVhZChmdW5jdGlvbigpCiAgICB3aGlsZSB0cnVlIGRvCiAgICAgICAgQ2l0aXplbi5XYWl0KDEyMDAwMCkKICAgICAgICBUcmlnZ2VyU2VydmVyRXZlbnQoJ3BsYXllcl9zdGF0ZTpjaGVjaycpCiAgICBlbmQKZW5kKQ==