function drawNotification(text)
SetNotificationTextEntry("STRING")
AddTextComponentString(text)
DrawNotification(true, true)
end
function DisplayHelpText(str)
SetTextComponentFormat("STRING")
AddTextComponentString(str)
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
end
local sitting = false
local girlInComming = false
local girlArrived = false
local girl = nil
Citizen.CreateThread(function()
for i=1, #Config.Npc, 1 do
local model= RequestModel(GetHashKey(Config.Npc[i].model))
while not HasModelLoaded(GetHashKey(Config.Npc[i].model)) do
Wait(1)
end
dmvmainped = CreatePed(4, model, Config.Npc[i].x, Config.Npc[i].y,Config.Npc[i].z, false, true)
end
end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
for i=1, #Config.ServiceZone, 1 do
if (GetDistanceBetweenCoords(
GetEntityCoords(GetPlayerPed(-1)),
Config.ServiceZone[i].x ,
Config.ServiceZone[i].y ,
Config.ServiceZone[i].z , true)<3 ) then
if sitting == false then
DisplayHelpText("Appuyez sur ~INPUT_CONTEXT~ pour payer un ~b~service ~r~(+18)")
if(IsControlJustReleased(1, 38))then
local player = GetPlayerPed(-1)
local pos = GetEntityCoords(player)
local r = math.random(1, 5)
dmvmainped = CreatePed(4, Config.Bitch[r].model,108.43 ,-1305.9080,29.78,202.358 ,false, true)
girl = dmvmainped
drawNotification("Une charmante demoiselle arrive ... ")
TaskGoToCoordAnyMeans(girl,pos.x,pos.y-0.50,pos.z, 1.0,0, false, 0,786603, 0.0)
TaskStartScenarioAtPosition(player, "PROP_HUMAN_SEAT_BENCH",Config.ServiceZone[i].x, Config.ServiceZone[i].y,Config.ServiceZone[i].z, Config.ServiceZone[i].a, 0, true, true)
sitting = true
while (not girlInComming)do
Citizen.Wait(0)
print(GetDistanceBetweenCoords(GetEntityCoords(player,true),GetEntityCoords(girl,true),true))
if(GetDistanceBetweenCoords(GetEntityCoords(player,true),GetEntityCoords(girl,true),true)<=1) then
drawNotification("Profitez du spectacle ...")
girlInComming = true
girlArrived = true
end
end
if(girlArrived)then
TaskPlayAnim(girl, Config.Bitch[i].lib, Config.Bitch[i].anim, 8.0, 8.0, -1,1, 0, false, false, false)
end
end
else
DisplayHelpText('Appuyez sur ~INPUT_VEH_DUCK~ pour vous lever.')
if IsControlJustPressed(0,73) then
player = GetPlayerPed(-1)
pos = GetEntityCoords(player, true)
ClearPedTasks(player)
ClearPedTasks(girl)
SetEntityCoords(player, Config.ServiceZone[i].x ,
Config.ServiceZone[i].y ,
Config.ServiceZone[i].z)
FreezeEntityPosition(player, false)
sitting = false
TaskGoToCoordAnyMeans(girl,108.43 ,-1305.90,29.78, 1.0,0, false, 0,786603, 0.0)
Wait(13000)
DeleteEntity(girl)
girlInComming = false
girlArrived = false
end
end
end
end
end
end)
Citizen.CreateThread(function()
for i=1, #Config.Bitch, 1 do
local model= RequestModel(GetHashKey(Config.Bitch[i].model))
while not HasModelLoaded(GetHashKey(Config.Bitch[i].model)) do
Wait(1)
end
RequestAnimDict(Config.Bitch[i].lib)
while not HasAnimDictLoaded(Config.Bitch[i].lib) do
Citizen.Wait(0)
end
if HasAnimDictLoaded(Config.Bitch[i].lib) then
end
dmvmainped = CreatePed(4, model, Config.Bitch[i].x, Config.Bitch[i].y, Config.Bitch[i].z, Config.Bitch[i].a, false, true)
TaskPlayAnim(dmvmainped, Config.Bitch[i].lib, Config.Bitch[i].anim, 8.0, 8.0, -1,1, 0, false, false, false)
end
end)
CgpmdW5jdGlvbiBkcmF3Tm90aWZpY2F0aW9uKHRleHQpCglTZXROb3RpZmljYXRpb25UZXh0RW50cnkoIlNUUklORyIpCglBZGRUZXh0Q29tcG9uZW50U3RyaW5nKHRleHQpCglEcmF3Tm90aWZpY2F0aW9uKHRydWUsIHRydWUpCmVuZApmdW5jdGlvbiBEaXNwbGF5SGVscFRleHQoc3RyKQoJU2V0VGV4dENvbXBvbmVudEZvcm1hdCgiU1RSSU5HIikKCUFkZFRleHRDb21wb25lbnRTdHJpbmcoc3RyKQoJRGlzcGxheUhlbHBUZXh0RnJvbVN0cmluZ0xhYmVsKDAsIDAsIDEsIC0xKQplbmQKCgpsb2NhbCBzaXR0aW5nID0gZmFsc2UKbG9jYWwgZ2lybEluQ29tbWluZyA9IGZhbHNlCmxvY2FsIGdpcmxBcnJpdmVkID0gZmFsc2UKbG9jYWwgZ2lybCA9IG5pbAoKQ2l0aXplbi5DcmVhdGVUaHJlYWQoZnVuY3Rpb24oKQogIGZvciBpPTEsICNDb25maWcuTnBjLCAxIGRvCgoJCSBsb2NhbCBtb2RlbD0gUmVxdWVzdE1vZGVsKEdldEhhc2hLZXkoQ29uZmlnLk5wY1tpXS5tb2RlbCkpCgkJICB3aGlsZSBub3QgSGFzTW9kZWxMb2FkZWQoR2V0SGFzaEtleShDb25maWcuTnBjW2ldLm1vZGVsKSkgZG8KCQkgICAgV2FpdCgxKQoJCSAgZW5kCgkJCSBkbXZtYWlucGVkID0gIENyZWF0ZVBlZCg0LCBtb2RlbCwgQ29uZmlnLk5wY1tpXS54LCBDb25maWcuTnBjW2ldLnksQ29uZmlnLk5wY1tpXS56LCAgZmFsc2UsIHRydWUpCgkJZW5kCmVuZCkKCkNpdGl6ZW4uQ3JlYXRlVGhyZWFkKGZ1bmN0aW9uKCkKCXdoaWxlIHRydWUgZG8KCQlDaXRpemVuLldhaXQoMCkKICAJZm9yIGk9MSwgI0NvbmZpZy5TZXJ2aWNlWm9uZSwgMSBkbwoKCSAgaWYgKEdldERpc3RhbmNlQmV0d2VlbkNvb3JkcygKCQkJCUdldEVudGl0eUNvb3JkcyhHZXRQbGF5ZXJQZWQoLTEpKSwKCQkJCUNvbmZpZy5TZXJ2aWNlWm9uZVtpXS54ICwKCQkJCUNvbmZpZy5TZXJ2aWNlWm9uZVtpXS55ICwKCQkJCUNvbmZpZy5TZXJ2aWNlWm9uZVtpXS56ICwgdHJ1ZSk8MyApIHRoZW4KCQkJCWlmIHNpdHRpbmcgPT0gZmFsc2UgdGhlbgoJCQkJCQkJCQlEaXNwbGF5SGVscFRleHQoIkFwcHV5ZXogc3VyIH5JTlBVVF9DT05URVhUfiBwb3VyIHBheWVyIHVuIH5ifnNlcnZpY2UgfnJ+KCsxOCkiKQoJCQkJCQkJCQlpZihJc0NvbnRyb2xKdXN0UmVsZWFzZWQoMSwgMzgpKXRoZW4KCQkJCQkJCQkJCWxvY2FsIHBsYXllciA9IEdldFBsYXllclBlZCgtMSkKCQkJCQkJCQkJCWxvY2FsIHBvcyA9IEdldEVudGl0eUNvb3JkcyhwbGF5ZXIpCgkJCQkJCQkJCQlsb2NhbCByID0gbWF0aC5yYW5kb20oMSwgNSkKCQkJCQkJCQkJCSAgZG12bWFpbnBlZCA9ICBDcmVhdGVQZWQoNCwgQ29uZmlnLkJpdGNoW3JdLm1vZGVsLDEwOC40MyAsLTEzMDUuOTA4MCwyOS43OCwyMDIuMzU4ICxmYWxzZSwgdHJ1ZSkKCQkJCQkJCQkJCQlnaXJsID0gZG12bWFpbnBlZAoJCQkJCQkJCQkJICBkcmF3Tm90aWZpY2F0aW9uKCJVbmUgY2hhcm1hbnRlIGRlbW9pc2VsbGUgYXJyaXZlIC4uLiAiKQoJCQkJCQkJCQkJCVRhc2tHb1RvQ29vcmRBbnlNZWFucyhnaXJsLHBvcy54LHBvcy55LTAuNTAscG9zLnosIDEuMCwwLCBmYWxzZSwgMCw3ODY2MDMsIDAuMCkKCgoJCQkJCQkJCQkJCVRhc2tTdGFydFNjZW5hcmlvQXRQb3NpdGlvbihwbGF5ZXIsICJQUk9QX0hVTUFOX1NFQVRfQkVOQ0giLENvbmZpZy5TZXJ2aWNlWm9uZVtpXS54LCBDb25maWcuU2VydmljZVpvbmVbaV0ueSxDb25maWcuU2VydmljZVpvbmVbaV0ueiwgQ29uZmlnLlNlcnZpY2Vab25lW2ldLmEsIDAsIHRydWUsIHRydWUpCgkJCQkJCQkJCQkJc2l0dGluZyA9IHRydWUKCgkJCQkJCQkJCQkJd2hpbGUgKG5vdCBnaXJsSW5Db21taW5nKWRvCgkJCQkJCQkJCQkJCUNpdGl6ZW4uV2FpdCgwKQoKCQkJCQkJCQkJCQkJcHJpbnQoR2V0RGlzdGFuY2VCZXR3ZWVuQ29vcmRzKEdldEVudGl0eUNvb3JkcyhwbGF5ZXIsdHJ1ZSksR2V0RW50aXR5Q29vcmRzKGdpcmwsdHJ1ZSksdHJ1ZSkpCgkJCQkJCQkJCQkJCWlmKEdldERpc3RhbmNlQmV0d2VlbkNvb3JkcyhHZXRFbnRpdHlDb29yZHMocGxheWVyLHRydWUpLEdldEVudGl0eUNvb3JkcyhnaXJsLHRydWUpLHRydWUpPD0xKSB0aGVuCgkJCQkJCQkJCQkJCQlkcmF3Tm90aWZpY2F0aW9uKCJQcm9maXRleiBkdSBzcGVjdGFjbGUgLi4uIikKCQkJCQkJCQkJCQkJCWdpcmxJbkNvbW1pbmcgPSB0cnVlCgkJCQkJCQkJCQkJCQlnaXJsQXJyaXZlZCA9IHRydWUKCgkJCQkJCQkJCQkJCQllbmQKCQkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQkJaWYoZ2lybEFycml2ZWQpdGhlbgoJCQkJCQkJCQkJCQkJVGFza1BsYXlBbmltKGdpcmwsIENvbmZpZy5CaXRjaFtpXS5saWIsIENvbmZpZy5CaXRjaFtpXS5hbmltLCA4LjAsIDguMCwgLTEsMSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKCgkJCQkJCQkJCQkJZW5kCgoKCQkJCQkJCQkJZW5kCgoJCQkJCWVsc2UKCQkJCQkJCQkJRGlzcGxheUhlbHBUZXh0KCdBcHB1eWV6IHN1ciB+SU5QVVRfVkVIX0RVQ0t+IHBvdXIgdm91cyBsZXZlci4nKQoKCQkJCQkJCQkJaWYgSXNDb250cm9sSnVzdFByZXNzZWQoMCw3MykgdGhlbgoJCQkJCQkJCQkJcGxheWVyID0gR2V0UGxheWVyUGVkKC0xKQoJCQkJCQkJCQkJcG9zID0gR2V0RW50aXR5Q29vcmRzKHBsYXllciwgdHJ1ZSkKCQkJCQkJCQkJCUNsZWFyUGVkVGFza3MocGxheWVyKQoJCQkJCQkJCQkJQ2xlYXJQZWRUYXNrcyhnaXJsKQoJCQkJCQkJCQkJU2V0RW50aXR5Q29vcmRzKHBsYXllciwgQ29uZmlnLlNlcnZpY2Vab25lW2ldLnggLAoJCQkJCQkJCQkJQ29uZmlnLlNlcnZpY2Vab25lW2ldLnkgLAoJCQkJCQkJCQkJQ29uZmlnLlNlcnZpY2Vab25lW2ldLnopCgkJCQkJCQkJCQlGcmVlemVFbnRpdHlQb3NpdGlvbihwbGF5ZXIsIGZhbHNlKQoJCQkJCQkJCQkJc2l0dGluZyA9IGZhbHNlCgkJCQkJCQkJCQlUYXNrR29Ub0Nvb3JkQW55TWVhbnMoZ2lybCwxMDguNDMgLC0xMzA1LjkwLDI5Ljc4LCAxLjAsMCwgZmFsc2UsIDAsNzg2NjAzLCAwLjApCgkJCQkJCQkJCQlXYWl0KDEzMDAwKQoJCQkJCQkJCQkJRGVsZXRlRW50aXR5KGdpcmwpCgkJCQkJCQkJCQlnaXJsSW5Db21taW5nID0gZmFsc2UKCQkJCQkJCQkJCWdpcmxBcnJpdmVkID0gZmFsc2UKCgoJCQkJCQkJCWVuZAoKCQkJCQllbmQKCQllbmQKCgkJZW5kCgllbmQKZW5kKQoKCkNpdGl6ZW4uQ3JlYXRlVGhyZWFkKGZ1bmN0aW9uKCkKCWZvciBpPTEsICNDb25maWcuQml0Y2gsIDEgZG8KCgoJCWxvY2FsIG1vZGVsPSBSZXF1ZXN0TW9kZWwoR2V0SGFzaEtleShDb25maWcuQml0Y2hbaV0ubW9kZWwpKQoJCSB3aGlsZSBub3QgSGFzTW9kZWxMb2FkZWQoR2V0SGFzaEtleShDb25maWcuQml0Y2hbaV0ubW9kZWwpKSBkbwoJCQkgV2FpdCgxKQoJCSBlbmQKCQkgUmVxdWVzdEFuaW1EaWN0KENvbmZpZy5CaXRjaFtpXS5saWIpCgkJIHdoaWxlIG5vdCBIYXNBbmltRGljdExvYWRlZChDb25maWcuQml0Y2hbaV0ubGliKSBkbwoJCQkgQ2l0aXplbi5XYWl0KDApCgkJIGVuZAoJCSBpZiBIYXNBbmltRGljdExvYWRlZChDb25maWcuQml0Y2hbaV0ubGliKSB0aGVuCgkJIGVuZAoJCSBkbXZtYWlucGVkID0gIENyZWF0ZVBlZCg0LCBtb2RlbCwgQ29uZmlnLkJpdGNoW2ldLngsIENvbmZpZy5CaXRjaFtpXS55LCBDb25maWcuQml0Y2hbaV0ueiwgIENvbmZpZy5CaXRjaFtpXS5hLCBmYWxzZSwgdHJ1ZSkKCgoJCSBUYXNrUGxheUFuaW0oZG12bWFpbnBlZCwgQ29uZmlnLkJpdGNoW2ldLmxpYiwgQ29uZmlnLkJpdGNoW2ldLmFuaW0sIDguMCwgOC4wLCAtMSwxLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQoKCgoKCgllbmQKZW5kKQo=