· 8 years ago · Dec 05, 2017, 06:14 PM
1local Jarmu = "#cdb25e[Járműrendszer]#ffffff "
2local Error = "#8B0000[Hiba]#ffffff "
3local Warning = "#DAA520[Figyelmeztetés]#ffffff "
4local Siker = "#32CD32[Siker]#ffffff "
5local Info = "#4169E1[Információ]#ffffff "
6
7arany = "#cdb25e"
8piros = "#b20000"
9hasznalat = "#057eb0[Használat]#ffffff"
10kek = "#057eb0"
11oU = outputChatBox
12exI = exports["kInfobox"]
13aE = addEvent
14settings = exports["kSettings"]
15aEH = addEventHandler
16aC = addCommandHandler
17errorMessage = "#b20000[Hiba]#ffffff"
18infoMessage = "#cdb25e[Információ]#ffffff"
19nonDuty = "Nem vagy szolgálatban!"
20nonALevel = "Nincs megfelelő jogosultságod!"
21adm = exports["kSettings"]
22rEH = removeEventHandler
23gE = getElementData
24sE = setElementData
25
26
27-- Járműrendszer - KészÃtette: Stryp
28
29local conn = dbConnect("sqlite", "vehicles.db")
30-- Létrehozás:
31dbExec(conn, "CREATE TABLE IF NOT EXISTS `vehicles` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, `m` INTEGER, `x` REAL, `y` REAL, `z` REAL, `rx` REAL, `ry` REAL, `rz` REAL, `c1r` INTEGER, `c1g` INTEGER, `c1b` INTEGER, `c2r` INTEGER, `c2g` INTEGER, `c2b` INTEGER, `np` TEXT, `v1` INTEGER, `v2` INTEGER, `owner` TEXT, `fuel` REAL);")
32
33-- Kezdeti járműID megállapÃtás
34for _=1,1 do
35 local q = dbQuery(conn, "SELECT id FROM vehicles ORDER BY id DESC LIMIT 1")
36 local result = dbPoll(q, -1)
37 if not result or #result == 0 then
38 nextID = 1
39 else
40 nextID = result[1].id + 1
41 end
42end
43outputDebugString("A következő jármű ID: " .. nextID)
44
45-- Ez egy export, ezzel teszel le kocsikat bárhova.
46-- createVehicleX(modelID, posX, posY, posZ, rotX, rotY, rotZ, owner, color1Red, color1Green, color1Blue, color2Red, color2Green, color2Blue, numberplate, variant1, variant2)
47function createVehicleX(m,x,y,z,rx,ry,rz,owner,c1r,c1g,c1b,c2r,c2g,c2b,np,v1,v2)
48 if not m or not x or not y or not z or (not owner or type(owner) ~= "userdata" or getElementType(owner) ~= "player") and owner ~= "server" then return error(" "..Error.." Nem jó adatokat adtál meg!") end
49 c1r, c1g, c1b, c2r, c2g, c2b = c1r or math.random(0,255), c1g or math.random(0,255), c1b or math.random(0,255), c2r or math.random(0,255), c2g or math.random(0,255), c2b or math.random(0,255)
50 np = np or ("ETT-" .. math.random(100,999))
51 local veh = createVehicle(m,x,y,z,rx,ry,rz,np,v1,v2)
52 if owner ~= "server" then
53 local vr1, vr2 = getVehicleVariant(veh)
54 dbExec(conn, "INSERT INTO vehicles VALUES (?,?," .. string.rep("?,",17):sub(1,(#string.rep("?,",17)-1)) .. ")", nextID, m, x, y, z, rx or 0, ry or 0, rz or 0, c1r, c1g, c1b, c2r, c2g, c2b, np, vr1, vr2, type(owner)=="userdata" and getElementData(owner,"id") or 0, 50)
55 setElementData(veh,"vehicle.dbid",nextID)
56 nextID = nextID + 1
57 else
58 setElementData(veh,"vehicle.dbid", "(Nem regisztrált)")
59 end
60 setTimer(setVehicleColor,500,1,veh,c1r,c1g,c1b,c2r,c2g,c2b)
61 setElementData(veh,"vehicle.owner",owner)
62 setElementData(veh,"vehicle.fuel", 50)
63 outputDebugString("Új " .. getVehicleName(veh) .. " létrehozva " .. (type(owner)=="userdata" and getPlayerName(owner) or "a szerver") .. " számára")
64 return veh
65end
66
67-- Sima, tulajdonolt jármű (/makeveh járműnév/járműid tulajnév)
68--[[ if getElementData(player,"aLevel") < 7 then return end
69 local vehid = getVehicleModelFromName(vehname) or (type(getVehicleNameFromModel(vehname)) == "string" and vehname)
70 if not vehid then
71 outputChatBox("".. Warning .."Nem található ilyen nevű/ID-jű jármű.", player, 255, 255, 255, true)
72 else
73 if owner then
74 local player2 = getPlayerFromName(owner)
75 if not player2 then
76 outputChatBox("".. Warning .."Nem található ilyen játékos.", player, 255, 255, 255, true)
77 else
78 local x,y,z = getElementPosition(player2)
79 local _,_,r = getElementRotation(player2)
80 local veh = createVehicleX(vehid, x+2, y+2, z, 0, 0, r, player2, math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255))
81 outputChatBox(getVehicleName(veh) .. " létrehozva " .. getPlayerName(player2) .. " számára", player)
82 outputChatBox(getVehicleName(veh) .. " létrehozva neked", player2)
83 end
84 else
85 local x,y,z = getElementPosition(player)
86 local _,_,r = getElementRotation(player)
87 local veh = createVehicleX(vehid, x+2, y+2, z, 0, 0, r, player, math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255))
88 outputChatBox(getVehicleName(veh) .. " létrehozva neked", player)
89 end
90 end
91end
92addCommandHandler("makeveh", createVehicleCommand)--]]
93
94function createVehicleCommand(thePlayer, cmd, target, vehname)
95 if getElementData(thePlayer, "aLevel") < 7 then return end
96 local vehid = getVehicleModelFromName(vehname) or (type(getVehicleNameFromModel(vehname)) == "string" and vehname)
97 if not target then
98 oU(" "..hasznalat.." /"..cmd.." [ID] [Jármű ID]", thePlayer, 255, 255, 255, true)
99 else
100 local target, targetPlayer = exports["kSettings"]:findPlayer(thePlayer, target)
101 if target then
102 local x,y,z = getElementPosition(target)
103 local _, _, r = getElementRotation(target)
104 local veh = createVehicleX(vehid, x+2, y+2, z, 0, 0, r, target, math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255))
105 outputChatBox(" "..Siker.." Sikeresen létrehoztál egy járművet "..getElementData(target, "name").." játékos számára! Jármű tÃpus: "..vehid.."!", thePlayer, 255, 255, 255, true)
106 outputChatBox(" "..Info.." "..getElementData(thePlayer, "name").." létrehozott számodra egy járművet! Jármű tÃpus: "..vehid.."!", target, 255, 255, 255, true)
107 exports["kSettings"]:warnAdmins("#FFBA00 [Napló] #FFFFFF"..getElementData(thePlayer, "name").." létrehozott egy járművet "..getElementData(target, "name").." játékos számára. Jármű tÃpus: "..vehid.."!")
108 end
109 end
110end
111addCommandHandler("makeveh", createVehicleCommand)
112
113
114tempVehs = {}
115function createTempVehicleCommand(thePlayer, cmd, vehname)
116 if getElementData(thePlayer, "aLevel") < 7 then return end
117 local vehid = getVehicleModelFromName(vehname) or (type(getVehicleNameFromModel(vehname)) == "string" and vehname)
118
119 if not vehid then
120 oU(" "..hasznalat.." /"..cmd.." [Jármű ID]", thePlayer, 255, 255, 255, true)
121
122 else
123 local x,y,z = getElementPosition(thePlayer)
124 local _,_,r = getElementRotation(thePlayer)
125 local veh = createVehicleX(vehid, x+2, y+2, z, 0, 0, r, "server", math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255), math.random(0,255))
126 setElementData(veh, "vehicle.tempS", 6)
127 tempVehs[veh] = true
128
129 outputChatBox(" "..Siker.." Sikeresen létrehoztál egy ideiglenes járművet!", thePlayer, 255, 255, 255, true)
130 exports["kSettings"]:warnAdmins("#FFBA00 [Napló] #FFFFFF"..getElementData(thePlayer, "name").." létrehozott egy ideiglenes járművet!")
131 end
132end
133addCommandHandler("veh", createTempVehicleCommand)
134
135
136function deleteVehicleCommand(player)
137 if getElementData(player,"aLevel") < 7 then return end
138 local veh = getPedOccupiedVehicle(player)
139 if veh then
140 if getElementData(veh,"vehicle.dbid") and type(getElementData(veh,"vehicle.dbid")) == "number" then
141 dbExec(conn, "DELETE FROM vehicles WHERE id=?", getElementData(veh,"vehicle.dbid"))
142 end
143 fuels[veh] = nil
144 tempVehs[veh] = nil
145 destroyElement(veh)
146 outputChatBox(" "..Siker.." Sikeresen kitörölted a járművet!", player, 255, 255, 255, true)
147 exports["kSettings"]:warnAdmins("#FFBA00 [Napló] #FFFFFF"..getElementData(player, "name").." kitörölt egy járművet!")
148 end
149end
150addCommandHandler("delveh", deleteVehicleCommand)
151
152function colorVehicleCommand(player, _, r1, g1, b1, r2, g2, b2)
153 if getElementData(player,"aLevel") < 7 then return end
154 r1, g1, b1, r2, g2, b2 = r1 or math.random(0,255), g1 or math.random(0,255), b1 or math.random(0,255), r2 or math.random(0,255), g2 or math.random(0,255), b2 or math.random(0,255)
155 local veh = getPedOccupiedVehicle(player)
156 if veh then
157 setVehicleColor(veh, r1, g1, b1, r2, g2, b2)
158 outputChatBox(" "..Siker.." Sikeresen átszÃneztél egy járművet!", player, 255, 255, 255, true)
159 exports["kSettings"]:warnAdmins("#FFBA00 [Napló] #FFFFFF"..getElementData(player, "name").." átszÃnezett egy járművet!")
160 end
161end
162addCommandHandler("rtc", colorVehicleCommand)
163
164-- Szerverjármű (/serverveh modelid x y z rotx roty rotz szÃn1piros szÃn1zöld szÃn1kék sz2p sz2z sz2k rendszámszöveg variant1 variant2) (a variantokat hagyd üresen mindenképp ha nem tudod mit csinálsz) (ez kb admin jármű inkább, de Ãgy kértétek :D)
165function createServerVehicleCommand(player, _, m, x, y, z, rx, ry, rz, c1r, c1g, c1b, c2r, c2g, c2b, np, v1, v2)
166 if getElementData(player,"aLevel") < 7 then return end
167 if not m or not x or not y or not z then outputChatBox("".. Warning .."Nem adtál meg megfelelő adatokat! (ID, X, Y, Z)",player, 255, 255, 255, true) return end
168 local veh = createVehicle(m, x, y, z, rx, ry, rz, np, v1, v2)
169 setTimer(setVehicleColor,500,1,veh,c1r,c1g,c1b,c2r,c2g,c2b)
170 setElementData(veh,"vehicle.owner","server")
171 setElementData(veh,"vehicle.server", true)
172 setElementData(veh,"vehicle.fuel", 1000000)
173 setElementData(veh,"vehicle.dbid", "Szerver jármű")
174end
175addCommandHandler("serverveh", createServerVehicleCommand)
176
177-- Ez végzi ténylegesen a játékosok járműveinek betöltését
178function spawnPlayerVehiclesHandler(handle, player)
179 local result = dbPoll(handle, 0)
180 for k, row in ipairs(result) do
181 local vehi = createVehicle(row.m,row.x,row.y,row.z,row.rx,row.ry,row.rz,row.np,row.v1,row.v2)
182 setTimer(setVehicleColor,500,1,vehi, row.c1r,row.c1g,row.c1b,row.c2r,row.c2g,row.c2b)
183 setElementData(vehi,"vehicle.owner",player)
184 setElementData(vehi,"vehicle.fuel",row.fuel)
185 setElementData(vehi,"vehicle.dbid",row.id)
186 outputDebugString(getPlayerName(player) .. " tulajdonában lévő " .. getVehicleName(vehi) .. " létrehozva (" .. k .. ". jármű)")
187 setElementData(player,"vehicle.last",vehi)
188 end
189end
190
191-- Ez az exportált funkció, ezt kell hÃvni ha belép a játékos, a playernek a játékost magát kell megadni
192function spawnPlayerVehicles(player)
193 dbQuery(spawnPlayerVehiclesHandler, {player}, conn, "SELECT * FROM vehicles WHERE owner=?", getElementData(player,"id"))
194 outputDebugString(getPlayerName(player) .. " járműveit lekértem az adatbázisból")
195 bindKey(player, "k", "down", lockVehicle)
196 bindKey(player, "l", "down", triggerVehicleLights)
197end
198
199-- Ezt a script használja a járművek mentésére
200function saveVehicle(veh)
201 local m,x,y,z = getElementModel(veh), getElementPosition(veh)
202 local np,rx,ry,rz = getVehiclePlateText(veh),getElementRotation(veh)
203 local v1,v2 = getVehicleVariant(veh)
204
205 -- Ezek nem használatosak de ha nem léteznek az kurva nagy gázt jelent
206 local owner = getElementData(veh,"vehicle.owner")
207 local ownerid = getElementData(owner,"id")
208
209 -- Benzin
210 local fuel = getElementData(veh, "vehicle.fuel")
211 fuels[veh] = nil
212 local c1r, c1g, c1b, c2r, c2g, c2b = getVehicleColor(veh, true)
213 dbExec(conn, "UPDATE vehicles SET m=?,x=?,y=?,z=?,rx=?,ry=?,rz=?,c1r=?,c1g=?,c1b=?,c2r=?,c2g=?,c2b=?,np=?,v1=?,v2=?,fuel=? WHERE id=?", m, x, y, z, rx, ry, rz, c1r, c1g, c1b, c2r, c2g, c2b, np, v1, v2, fuel, getElementData(veh,"vehicle.dbid"))
214end
215
216-- Játékos kilépésekor menti a járműveit (és törli is őket)
217function quitSaveVehicles()
218 local playerID = getElementData(source, "id")
219 for k,v in ipairs(getElementsByType("vehicle")) do
220 if getElementData(v, "vehicle.owner") == source then
221 saveVehicle(v)
222 setTimer(destroyElement,500,1,v)
223 outputDebugString(getPlayerName(source) .. " játékoshoz tartozó " .. getVehicleName(v) .. " elmentve")
224 end
225 end
226end
227addEventHandler("onPlayerQuit", root, quitSaveVehicles)
228
229-- Resource stop-kor menti az összes járművet
230function stopResSaveVehicles()
231 for k,v in ipairs(getElementsByType("vehicle")) do
232 if getElementData(v, "vehicle.owner") and getElementData(v, "vehicle.owner") ~= "server" then
233 saveVehicle(v)
234 outputDebugString(getPlayerName(getElementData(v, "vehicle.owner")) .. " játékoshoz tartozó " .. getVehicleName(v) .. " elmentve")
235
236 end
237 end
238end
239addEventHandler("onResourceStop", resourceRoot, stopResSaveVehicles)
240
241-- Beszálláskor automatikusan motor off (a játék bekapcsolná), valamint kiÃrja a jármű adatokat, ha a te tulajdonod akkor ez lesz a legutoljára beleszállt jármű amit zárhatsz kÃvülrÅ‘l.
242function vehicleEnter(veh, seat)
243 if seat == 0 then
244 setVehicleEngineState(veh, false)
245 if getElementData(veh, "vehicle.owner") == source then
246 setElementData(source, "vehicle.last", veh)
247 end
248 end
249 local vehowner = getElementData(veh, "vehicle.owner")
250 outputChatBox(Jarmu .."A jármű tulajdonosa: #cdb25e "..getElementData(vehowner, "name").." ", source , 255, 255, 255, true)
251 outputChatBox(Jarmu .."A jármű tÃpusa: #cdb25e".. getVehicleName(veh), source , 255, 255, 255, true)
252 outputChatBox(Jarmu .."A jármű ID-je: #cdb25e" .. getElementData(veh,"vehicle.dbid"), source , 255, 255, 255, true)
253 outputChatBox(Jarmu .."A jármű rendszáma: #cdb25e" .. getVehiclePlateText(veh), source , 255, 255, 255, true)
254 outputChatBox(Jarmu .."A motor indÃtásához nyomd le a [J] és a [Space] billentyűt, majd egy másodperc múlva engedd fel." , source , 255, 255, 255, true)
255 outputChatBox(Jarmu .."A kézifék behúzásához nyomd le a [Space] és az [Alt] billentyűket!", source , 255, 255, 255, true)
256end
257addEventHandler("onPlayerVehicleEnter", root, vehicleEnter)
258
259-- Bezárás
260function lockVehicle(player)
261 local veh = getPedOccupiedVehicle(player)
262 if not veh then
263 local lastVeh = getElementData(player,"vehicle.last")
264 if lastVeh and isElement(lastVeh) then
265 local x,y,z = getElementPosition(player)
266 local vx,vy,vz = getElementPosition(lastVeh)
267 local dist = getDistanceBetweenPoints3D(x,y,z,vx,vy,vz)
268 if dist < 10 then
269 if isVehicleLocked(lastVeh) then
270 setVehicleLocked(lastVeh, false)
271 outputChatBox(Jarmu .."Sikeresen kinyitottad a gépjárművedet!", player, 255, 255, 255, true)
272 triggerClientEvent("vehicle.serverSound", player, 2, vx, vy, vz)
273 else
274 setVehicleLocked(lastVeh, true)
275 outputChatBox(Jarmu .."Sikeresen bezártad a gépjárművedet!", player, 255, 255, 255, true)
276 triggerClientEvent("vehicle.serverSound", player, 1, vx, vy, vz)
277 end
278 else
279 outputChatBox(Jarmu .."Túl messze tartózkodsz a gépjárművedtől!", player, 255, 255, 255, true)
280 end
281 end
282 else
283 if getVehicleOccupant(veh, 0) == player and getVehicleOccupant(veh,0) == getElementData(veh,"vehicle.owner") then
284 local vx, vy, vz = getElementPosition(veh)
285 if isVehicleLocked(veh) then
286 setVehicleLocked(veh, false)
287 outputChatBox(Info .."Sikeresen kinyitottad a gépjárművedet!", player, 255, 255, 255, true)
288 triggerClientEvent("vehicle.serverSound", player, 2, vx, vy, vz)
289 else
290 setVehicleLocked(veh, true)
291 outputChatBox(Jarmu .."Sikeresen bezártad a gépjárművedet!", player, 255, 255, 255, true)
292 triggerClientEvent("vehicle.serverSound", player, 1, vx, vy, vz)
293 end
294 elseif getVehicleOccupant(veh, 0) == player then
295 outputChatBox(Error .."Nem a te Tulajdonododban ez a gépjármű!", player, 255, 255, 255, true)
296 end
297 end
298end
299
300-- Lámpák
301function triggerVehicleLights(player)
302 local veh = getPedOccupiedVehicle(player)
303 if veh then
304 if getVehicleOccupant(veh, 0) == player then
305 if getVehicleOverrideLights(veh) == 0 or getVehicleOverrideLights(veh) == 1 then
306 setVehicleOverrideLights(veh, 2)
307 outputChatBox(Jarmu .."Sikeresen bekapcsoltad a gépjárműved fényszóróit!", player, 255, 255, 255, true)
308 triggerClientEvent(player, "vehicle.serverSound", player, 3)
309 else
310 setVehicleOverrideLights(veh, 1)
311 outputChatBox(Jarmu .."Sikeresen kikapcsoltad a gépjárműved fényszóróit!", player, 255, 255, 255, true)
312 triggerClientEvent(player, "vehicle.serverSound", player, 4)
313 end
314 end
315 end
316end
317
318-- Kézifék
319addEvent("vehicle.seatbeltToggle", true)
320function seatbeltToggle(on)
321 if on then
322 setElementData(client, "vehicle.belt", true)
323 outputChatBox(Jarmu .."Sikeresn becsatoltad a biztonsági övet!", client, 255, 255, 255, true)
324 else
325 setElementData(client, "vehicle.belt", false)
326 outputChatBox(Jarmu .."Sikeresn kicsatoltad a biztonsági övet!", client, 255, 255, 255, true)
327 end
328end
329addEventHandler("vehicle.seatbeltToggle", root, seatbeltToggle)
330
331-- Motor be-kikapcsolás
332addEvent("vehicle.engineToggle", true)
333function engineToggle(on)
334 if on and getElementData(getPedOccupiedVehicle(client),"vehicle.fuel") > 0 then
335 setVehicleEngineState(getPedOccupiedVehicle(client), true)
336 fuels[getPedOccupiedVehicle(client)] = true
337 local vx,vy,vz = getElementPosition(getPedOccupiedVehicle(client))
338 triggerClientEvent("vehicle.serverSound", client, 5, vx, vy, vz)
339 else
340 setVehicleEngineState(getPedOccupiedVehicle(client), false)
341 fuels[getPedOccupiedVehicle(client)] = nil
342 local vx,vy,vz = getElementPosition(getPedOccupiedVehicle(client))
343 triggerClientEvent("vehicle.serverSound", client, 6, vx, vy, vz)
344 end
345end
346addEventHandler("vehicle.engineToggle", root, engineToggle)
347
348-- Benzin és ideiglenes kocsik
349fuels = {}
350function fuelsUpdate()
351 local vehs = 0
352 for veh,_ in pairs(fuels) do
353 vehs = vehs + 1
354 local fuel = getElementData(veh,"vehicle.fuel")
355 fuel = fuel - 0.005 -- 0.005-tel csökken 10 másodpercenként a benzin szintje minden éppen futó motorú járműben (AKKOR IS HA NINCS BENNE EMBER STB)
356 if fuel <= 0 then
357 setElementData(veh, "vehicle.fuel", 0)
358 setVehicleEngineState(veh, false)
359 else
360 setElementData(veh, "vehicle.fuel", fuel)
361 end
362 end
363 outputDebugString("Jelenleg " .. vehs .. " jármű fogyaszt benzint")
364 vehs = 0
365 for veh,_ in pairs(tempVehs) do
366 vehs = vehs + 1
367 local ppl = 0
368 for k,v in pairs(getVehicleOccupants(veh)) do
369 ppl = ppl + 1
370 end
371 if ppl == 0 and not getElementData(veh,"vehicle.tempS") then
372 tempVehs[veh] = nil
373 fuels[veh] = nil
374 destroyElement(veh)
375 elseif ppl == 0 and getElementData(veh,"vehicle.tempS") then
376 if getElementData(veh,"vehicle.tempS") > 0 then
377 setElementData(veh, "vehicle.tempS", getElementData(veh,"vehicle.tempS") - 1)
378 else
379 setElementData(veh, "vehicle.tempS", nil)
380 end
381 end
382 end
383 outputDebugString("Jelenleg " .. vehs .. " ideiglenes jármű van a szerón")
384
385end
386setTimer(fuelsUpdate,10000,0)
387
388-- Resource indÃtáskori járművek létrehozása
389for _=1,1 do
390 local handle = dbQuery(conn, "SELECT * FROM vehicles")
391 local result = dbPoll(handle, -1)
392 for k, row in ipairs(result) do
393 local owner = row.owner
394 for k,v in ipairs(getElementsByType("player")) do
395 if getElementData(v,"id") == tonumber(owner) then
396 owner = v
397 end
398 end
399 if type(owner) == "userdata" then
400 local vehi = createVehicle(row.m,row.x,row.y,row.z,row.rx,row.ry,row.rz,row.np,row.v1,row.v2)
401 setTimer(setVehicleColor,500,1,vehi, row.c1r,row.c1g,row.c1b,row.c2r,row.c2g,row.c2b)
402 setElementData(vehi,"vehicle.dbid",row.id)
403 setElementData(vehi, "vehicle.owner", owner)
404 setElementData(vehi, "vehicle.fuel", row.fuel)
405 outputDebugString(getPlayerName(owner) .. " tulajdonában lévő " .. getVehicleName(vehi) .. " létrehozva (" .. k .. ". jármű)")
406 setElementData(owner,"vehicle.last",vehi)
407 end
408 end
409 for k,v in ipairs(getElementsByType("player")) do
410 bindKey(v, "k", "down", lockVehicle)
411 bindKey(v, "l", "down", triggerVehicleLights)
412 end
413end