completed truck load detect

test-utf-8
rubin 2 years ago
parent 351f7b3fa7
commit b94c097447
  1. 45
      TruckHUD.lua

@ -201,6 +201,9 @@ function main()
lua_thread.create(fastmap) lua_thread.create(fastmap)
lua_thread.create(renderTruckers) lua_thread.create(renderTruckers)
lua_thread.create(luChecker.checker) lua_thread.create(luChecker.checker)
repeat repeat
wait(0) wait(0)
until msk_timestamp ~= 0 until msk_timestamp ~= 0
@ -4006,7 +4009,8 @@ luChecker = {
vehicles = {}, vehicles = {},
truckers = {}, -- Èãðîêè íå â ñêðèïòå truckers = {}, -- Èãðîêè íå â ñêðèïòå
price_set = {}, price_set = {},
trailer_delete = {} trailer_delete = {},
load_position = { x = 0.0, y = 0.0, z = 0.0 }
} }
--[[ --[[
@ -4076,12 +4080,16 @@ function luChecker.vehicleSync(playerId, vehicleId, data)
luChecker.truckers[playerId] = {} luChecker.truckers[playerId] = {}
luChecker.truckers[playerId]["data"] = data luChecker.truckers[playerId]["data"] = data
luChecker.truckers[playerId]["vehicleId"] = vehicleId luChecker.truckers[playerId]["vehicleId"] = vehicleId
luChecker.truckers[playerId]["trailerDataTime"] = 0
luChecker.truckers[playerId]["trailerData"] = { luChecker.truckers[playerId]["trailerData"] = {
trailerId = -1 trailerId = -1
} }
else else
luChecker.truckers[playerId]["data"] = data luChecker.truckers[playerId]["data"] = data
luChecker.truckers[playerId]["vehicleId"] = vehicleId luChecker.truckers[playerId]["vehicleId"] = vehicleId
if os.time() - luChecker.truckers[playerId]["trailerDataTime"] > 5 then
luChecker.truckers[playerId]["trailerData"]["trailerId"] = -1
end
end end
end end
end end
@ -4089,10 +4097,29 @@ end
function luChecker.trailerSync(playerId, data) function luChecker.trailerSync(playerId, data)
if not isPlayerHaveTruckHUD(playerId) and luChecker.truckers[playerId] ~= nil then if not isPlayerHaveTruckHUD(playerId) and luChecker.truckers[playerId] ~= nil then
luChecker.truckers[playerId]["trailerDataTime"] = os.time()
luChecker.checkerLoad(playerId, data, luChecker.truckers[playerId]["data"]["position"])
luChecker.truckers[playerId]["trailerData"] = data luChecker.truckers[playerId]["trailerData"] = data
end end
end end
function luChecker.checkerLoad(playerId, data, position) -- Ïðîâåðêà êîãäà èãðîê ïîëó÷èë ãðóç
if luChecker.truckers[playerId]["trailerData"]["trailerId"] ~= data["trailerId"] then
sampAddChatMessage(data["trailerId"],-1)
if getLocalPlayerId() ~= playerId then
local x, y, z = luChecker.load_position.x, luChecker.load_position.y, luChecker.load_position.z
local local_x, local_y, local_z = getCharCoordinates(PLAYER_PED)
local trucker_x, trucker_y, trucker_z = position.x, position.y, position.z
local dist_localPlayer_storage = getDistanceBetweenCoords3d(local_x, local_y, local_z, x, y, z)
local dist_trucker_storage = getDistanceBetweenCoords3d(trucker_x, trucker_y, trucker_z, x, y, z)
if dist_localPlayer_storage <= 120.0 and dist_trucker_storage <= 50.0 then
sampAddChatMessage("èãðîê ïîëó÷èë ãðóç "..playerId.." "..dist_localPlayer_storage.." "..dist_trucker_storage.." +++ "..luChecker.truckers[playerId]["trailerData"]["trailerId"].." ++++ "..data["trailerId"],-1)
end
end
end
end
function luChecker.set3Dtext(type, data_old, data, position) function luChecker.set3Dtext(type, data_old, data, position)
inifiles.Settings.luCheckerCargo = 1 inifiles.Settings.luCheckerCargo = 1
if type == "Ïîðò" then if type == "Ïîðò" then
@ -4107,11 +4134,9 @@ function luChecker.set3Dtext(type, data_old, data, position)
elseif type == "Ñêëàä" then elseif type == "Ñêëàä" then
local cargoName = data[2] local cargoName = data[2]
local cargoId = (cargoName:find("n") and 1 or (cargoName:find("y") and 2 or (cargoName:find("l") and 3 or 0))) local cargoId = (cargoName:find("n") and 1 or (cargoName:find("y") and 2 or (cargoName:find("l") and 3 or 0)))
if cargoId == inifiles.Settings.luCheckerCargo and tonumber(data_old[1]) ~= 0 and not (tonumber(data_old[1]) == tonumber(data[1])) then if cargoId == inifiles.Settings.luCheckerCargo then
if tonumber(data_old[1]) < tonumber(data[1]) then luChecker.load_position = { x = position.x, y = position.y, z = position.z }
luChecker.price_set[#luChecker.price_set + 1] = { type = "load", old_price = tonumber(data_old[key]), new_price = tonumber(data[key]), time = os.clock() * 1000, position = position } sampAddChatMessage("ïîðò ïîðò ïîðò "..tonumber(data[1]), -1)
say("Çàãðóçêà íà ñêëàäå ðÿäîì "..inifiles.Settings.luCheckerCargo)
end
end end
end end
end end
@ -4130,10 +4155,12 @@ function luChecker.checker()
position_3dtext = luChecker.price_set[1].position position_3dtext = luChecker.price_set[1].position
position_trailer = luChecker.trailer_delete[1].position position_trailer = luChecker.trailer_delete[1].position
local dist = getDistanceBetweenCoords3d(position_3dtext.x,position_3dtext.y,position_3dtext.z,position_trailer.x,position_trailer.y,position_trailer.z) if getLocalPlayerId() ~= playerId then
local dist = getDistanceBetweenCoords3d(position_3dtext.x,position_3dtext.y,position_3dtext.z,position_trailer.x,position_trailer.y,position_trailer.z)
local text = string.format("èãðîê %s %s %s %s", playerId, (type == "load" and "çàãðóçèë" or "ðàçãðóçèë"), inifiles.Settings.luCheckerCargo, dist ) local text = string.format("èãðîê %s %s %s %s", playerId, (type == "load" and "çàãðóçèë" or "ðàçãðóçèë"), inifiles.Settings.luCheckerCargo, dist )
say(">> "..text) say(">> "..text)
end
table.remove(luChecker.trailer_delete, 1) table.remove(luChecker.trailer_delete, 1)
table.remove(luChecker.price_set, 1) table.remove(luChecker.price_set, 1)
@ -4141,6 +4168,10 @@ function luChecker.checker()
end end
end end
function getLocalPlayerId()
return select(2,sampGetPlayerIdByCharHandle(PLAYER_PED))
end
function clear_old_value(key) function clear_old_value(key)
local delete = {} local delete = {}
for i = 1, #luChecker[key] do for i = 1, #luChecker[key] do

Loading…
Cancel
Save