From dd377a9b7c6f84d277650f9989e181eef04f7112 Mon Sep 17 00:00:00 2001 From: rubin Date: Wed, 19 Oct 2022 20:40:16 +0300 Subject: [PATCH] fill load unload hooks & new threads for hooks --- TruckHUD.lua | 68 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/TruckHUD.lua b/TruckHUD.lua index 25e6ccd..997cea9 100755 --- a/TruckHUD.lua +++ b/TruckHUD.lua @@ -2035,16 +2035,16 @@ end function loadEvents() function sampev.onVehicleSync(vehicleId, data) - luChecker.vehicleSync(vehicleId, data) + lua_thread.create(luChecker.vehicleSync, vehicleId, data) end function sampev.onTrailerSync(playerId, data) - luChecker.trailerSync(playerId, data) + lua_thread.create(luChecker.trailerSync, playerId, data) end function sampev.onVehicleStreamIn(vehicleId, data) - luChecker.vehicleStream(true, vehicleId, data) + lua_thread.create(luChecker.vehicleStream, true, vehicleId, data) end function sampev.onVehicleStreamOut(vehicleId) - luChecker.vehicleStream(false, vehicleId) + lua_thread.create(luChecker.vehicleStream, false, vehicleId) end function sampev.onSendChat(message) antiflood = os.clock() * 1000 @@ -3959,17 +3959,67 @@ end --> LOAD & UNLOAD CHECKER luChecker = { - truckers = {} -} + vehicles = {}, + truckers = {}, -- Игроки не в скрипте -function luChecker.vehicleStream(stream, vehicleId, data) +} +function isPlayerHaveTruckHUD(playerId) + local result = false + for k,v in pairs(base) do + if v.id == playerId then + result = true + break + end + end + return result end -function luChecker.vehicleSync(playerId, data) +function isVehicleTruckersDelete(table, vehicleId) + local result = false + local playerId = -1 + local isTrailer = false + for k,v in pairs(table) do + if v["trailerData"].vehicleId == vehicleId then + result = true + playerId = k + isTrailer = true + break + end + if v.vehicleId == vehicleId then + result = true + playerId = k + break + end + end + return result, playerId, isTrailer +end +function luChecker.vehicleStream(stream, vehicleId, data) + if stream then + luChecker.vehicles[vehicleId] = data + else + local result, playerId, isTrailer = isVehicleTruckersDelete(luChecker.truckers, vehicleId) + if result then + luChecker.truckers[playerId] = nil + end + luChecker.vehicles[vehicleId] = nil + end end -function luChecker.onVehicleSync(vehicleId, data) +function luChecker.vehicleSync(vehicleId, data) + if not isPlayerHaveTruckHUD(data.playerId) then + if luChecker.vehicles[vehicleId] ~= nil and (luChecker.vehicles[vehicleId].type == 403 or luChecker.vehicles[vehicleId].type == 514 or luChecker.vehicles[vehicleId].type == 515) then + luChecker.truckers[data.playerId] = data + luChecker.truckers[data.playerId]["trailerData"] = { + trailerId = -1 + } + end + end +end +function luChecker.trailerSync(playerId, data) + if not isPlayerHaveTruckHUD(playerId) and luChecker.truckers[playerId] ~= nil then + luChecker.truckers[playerId]["trailerData"] = data + end end \ No newline at end of file