This repository has been archived by the owner on Jul 20, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathclient.lua
128 lines (102 loc) · 4.45 KB
/
client.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
-- Récupération de la libraire ESX
ESX = nil
Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.Wait(0)
end
end)
function notification(msg)
local mugshot, mugshotStr = ESX.Game.GetPedMugshot(PlayerPedId())
ESX.ShowAdvancedNotification('title', 'subject', 'msg', mugshotStr, 1)
UnregisterPedheadshot(mugshot)
end
-- Recevoir la notification de lancement d'un event
local isEventAvaible = false
RegisterNetEvent("esx_autoevents:notify")
AddEventHandler("esx_autoevents:notify", function(display) -- On récupère la sous-table "display"
eventTerminatedBySelf = false
isEventAvaible = true
PlaySoundFrontend(-1, "Boss_Message_Orange", "GTAO_Boss_Goons_FM_Soundset", 0)
ESX.ShowAdvancedNotification('Événement journalier', "~y~"..display.title, "~b~Description: ~s~"..display.description, "CHAR_CHAT_CALL", 1)
end)
--[[
Events
]]
local eventEntities = {}
local eventBlips = {}
local eventWay = nil
local eventTerminatedBySelf = false
RegisterNetEvent("esx_autoevents:stopEvent")
AddEventHandler("esx_autoevents:stopEvent", function(fromsrv)
if not isEventAvaible then return end
isEventAvaible = false
for k, v in pairs(eventBlips) do
if v ~= nil then RemoveBlip(v) end
end
for k, v in pairs(eventEntities) do
if v ~= nil then DeleteEntity(v) end
end
if eventWay ~= nil then RemoveBlip(eventWay) end
if fromsrv then ESX.ShowAdvancedNotification('Événement journalier', "~r~Événement terminé", "Si tu n'as pas eu le temps de venir, c'est ton problème, à la prochaine !", "CHAR_CHAT_CALL", 1) end
end)
-- Event "assassin"
RegisterNetEvent("esx_autoevents:startevent_assassin")
AddEventHandler("esx_autoevents:startevent_assassin", function(args, reward)
local possibleTargetsPosition = args.targetPossibleLocations
local selectedTargetCoords = possibleTargetsPosition[math.random(1,#possibleTargetsPosition)]
local way = AddBlipForCoord(selectedTargetCoords)
SetBlipColour(way, 75)
SetBlipRoute(way, true)
BeginTextCommandSetBlipName('STRING')
AddTextComponentSubstringPlayerName('Cible à neutraliser')
EndTextCommandSetBlipName(way)
eventWay = way
local closeToPed = false
while not closeToPed and isEventAvaible do
Wait(100)
local position = GetEntityCoords(PlayerPedId())
if GetDistanceBetweenCoords(position, selectedTargetCoords, true) <= 100.0 then
closeToPed = true
end
end
if not isEventAvaible then -- On détecte si l'event est toujours actif après la boucle et si il est à l'orogine de son arrêt
return
end
local pedHash = GetHashKey("a_f_m_tramp_01")
RequestModel(pedHash)
while not HasModelLoaded(pedHash) do Wait(1) print("LOADING MODEL") end
local weaponHash = GetHashKey("weapon_snspistol")
local ped = CreatePed(9, pedHash, selectedTargetCoords, 90.0, false, false)
SetEntityAsMissionEntity(ped, 1, 1)
GiveWeaponToPed(ped, weaponHash, 9000, false, true)
closeToPed = false
while not closeToPed and isEventAvaible do
Wait(100)
local position = GetEntityCoords(PlayerPedId())
if GetDistanceBetweenCoords(position, selectedTargetCoords, true) <= 60.0 then
if way ~= nil then RemoveBlip(way) end
if ped ~= nil then TaskCombatPed(ped, PlayerPedId(), 0, 0) end
local pedBlip = AddBlipForEntity(ped)
SetBlipAsShortRange(pedBlip, false)
SetBlipColour(pedBlip, 75)
SetBlipSprite(pedBlip, 119)
table.insert(eventBlips, pedBlip)
SetPedKeepTask(ped, true)
closeToPed = true
end
end
if not isEventAvaible then -- On détecte si l'event est toujours actif après la boucle et si il est à l'orogine de son arrêt
return
end
while ped ~= nil and GetEntityHealth(ped) > 0 and isEventAvaible do
Wait(50)
end
if not isEventAvaible then -- On détecte si l'event est toujours actif après la boucle et si il est à l'orogine de son arrêt
return
end
PlaySoundFrontend(-1, "BASE_JUMP_PASSED", "HUD_AWARDS", 1)
ESX.ShowAdvancedNotification('Événement journalier', "~g~Rapport d'événement", "Vous avez complété votre tâche, félicitations ! Vous empochez un total de ~g~"..reward.."$ ~s~!", "CHAR_CHAT_CALL", 1)
TriggerServerEvent("esx_autoevents:reward")
TriggerEvent("esx_autoevents:stopEvent")
end)