-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient.lua
156 lines (146 loc) · 7.36 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
local prompts = GetRandomIntInRange(0, 0xffffff)
local VorpCore = {}
local VORPInv = {}
local working = false
local hasPackage = false
local MarkerPosition = 0
local progressbar = exports.vorp_progressbar:initiate()
local Animations = exports.vorp_animations.initiate()
TriggerEvent("getCore",function(core)
VorpCore = core
end)
RegisterNetEvent("vorp:SelectedCharacter")
AddEventHandler("vorp:SelectedCharacter", function(charid)
StartNPCs()-- NPC loads after selecting character
end)
function StartNPCs()
for i, v in ipairs(Config.NPCs) do
local x, y, z = table.unpack(v.coords)
-- Loading Model
local hashModel = GetHashKey(v.npcmodel)
if IsModelValid(hashModel) then
RequestModel(hashModel)
while not HasModelLoaded(hashModel) do
Wait(100)
end
else
print(v.npcmodel .. " is not valid")
end
-- Spawn NPC Ped
local npc = CreatePed(hashModel, x, y, z, v.heading, false, true, true, true)
Citizen.InvokeNative(0x283978A15512B2FE, npc, true) -- SetRandomOutfitVariation
SetEntityNoCollisionEntity(PlayerPedId(), npc, false)
SetEntityCanBeDamaged(npc, false)
SetEntityInvincible(npc, true)
Wait(1000)
FreezeEntityPosition(npc, true) -- NPC can't escape
SetBlockingOfNonTemporaryEvents(npc, true) -- NPC can't be scared
--create blip
if v.blip ~= 0 then
local blip = Citizen.InvokeNative(0x554D9D53F696D002, 1664425300, x, y, z)
SetBlipSprite(blip, v.blip, true)
Citizen.InvokeNative(0x9CB1A1623062F402, blip, v.npc_name)
end
end
end
Citizen.CreateThread(function() --create talk to npc prompt
Citizen.Wait(5000)
local press = Config.Language.press
talktonpc = PromptRegisterBegin()
PromptSetControlAction(talktonpc, Config.keys["G"])
press = CreateVarString(10, 'LITERAL_STRING', press)
PromptSetText(talktonpc, press)
PromptSetEnabled(talktonpc, 1)
PromptSetVisible(talktonpc, 1)
PromptSetStandardMode(talktonpc, 1)
PromptSetHoldMode(talktonpc, 1)
PromptSetGroup(talktonpc, prompts)
Citizen.InvokeNative(0xC5F428EE08FA7F2C, talktonpc, true)
PromptRegisterEnd(talktonpc)
end)
Citizen.CreateThread(function()
while true do
local sleep = true
local _source = source
for i, v in ipairs(Config.NPCs) do
local playerCoords = GetEntityCoords(PlayerPedId())
if Vdist(playerCoords, v.coords) <= v.radius then -- Checking distance between player and npc
if v.type ~= "nointeraction" then
sleep = false
local label = CreateVarString(10, 'LITERAL_STRING', Config.Language.talk)
PromptSetActiveGroupThisFrame(prompts, label)
if Citizen.InvokeNative(0xC92AC953F0A982AE, talktonpc) then --if pressing the interaction-key
local playerPed = PlayerPedId()
if v.type == "m_interaction" then
if IsPedMale(playerPed) then
VorpCore.NotifyBottomRight(Config.Language.invite, 3000)
Citizen.Wait(4000)
FreezeEntityPosition(playerPed,true)
local originalPos = GetEntityCoords(playerPed)
DoScreenFadeOut(1000)
Citizen.Wait(1000)
SetEntityCoords(playerPed, v.pos.x, v.pos.y, v.pos.z) --teleport into room
Citizen.Wait(20000) --20 sec in room
VorpCore.NotifyCenter(Config.Language.notify_1,6000)
VorpCore.NotifyCenter(Config.Language.notify_2,6000)
SetEntityCoords(playerPed, originalPos.x, originalPos.y, originalPos.z) --teleport back
Citizen.Wait(2000)
DoScreenFadeIn(1000)
TriggerServerEvent('juSa_hooker:pay')
ClearPedTasks(playerPed)
FreezeEntityPosition(playerPed,false)
else
VorpCore.NotifyBottomRight(Config.Language.reject_f, 6500)
end
Citizen.Wait(1000)
elseif v.type == "f_interaction" then
if IsPedMale(playerPed) then
VorpCore.NotifyBottomRight(Config.Language.reject_m, 6500)
else
VorpCore.NotifyBottomRight(Config.Language.invite, 3000)
Citizen.Wait(4000)
FreezeEntityPosition(playerPed,true)
local originalPos = GetEntityCoords(playerPed)
DoScreenFadeOut(1000)
Citizen.Wait(1000)
SetEntityCoords(playerPed, v.pos.x, v.pos.y, v.pos.z) --teleport into room
Citizen.Wait(20000) --20 sec in room
VorpCore.NotifyCenter(Config.Language.notify_1,6000)
VorpCore.NotifyCenter(Config.Language.notify_2,6000)
SetEntityCoords(playerPed, originalPos.x, originalPos.y, originalPos.z) --teleport back
Citizen.Wait(2000)
DoScreenFadeIn(1000)
TriggerServerEvent('juSa_hooker:pay')
ClearPedTasks(playerPed)
FreezeEntityPosition(playerPed,false)
end
Citizen.Wait(1000)
elseif v.type == "b_interaction" then
VorpCore.NotifyBottomRight(Config.Language.invite, 3000)
Citizen.Wait(4000)
FreezeEntityPosition(playerPed,true)
local originalPos = GetEntityCoords(playerPed)
DoScreenFadeOut(1000)
Citizen.Wait(1000)
SetEntityCoords(playerPed, v.pos.x, v.pos.y, v.pos.z) --teleport into room
Citizen.Wait(20000) --20 sec in room
VorpCore.NotifyCenter(Config.Language.notify_1,6000)
VorpCore.NotifyCenter(Config.Language.notify_2,6000)
SetEntityCoords(playerPed, originalPos.x, originalPos.y, originalPos.z) --teleport back
Citizen.Wait(2000)
DoScreenFadeIn(1000)
TriggerServerEvent('juSa_hooker:pay')
ClearPedTasks(playerPed)
FreezeEntityPosition(playerPed,false)
end
Wait(500)
end
end
end
end
if sleep then
Citizen.Wait(500)
end
Citizen.Wait(1)
end
end)