add checker load/unload and trailer delete

test-utf-8
rubin 2 years ago
parent ae4443a9af
commit 9b4bff8d10
  1. 62
      TruckHUD.lua

@ -200,6 +200,7 @@ function main()
lua_thread.create(transponder)
lua_thread.create(fastmap)
lua_thread.create(renderTruckers)
lua_thread.create(luChecker.checker)
repeat
wait(0)
until msk_timestamp ~= 0
@ -2681,7 +2682,7 @@ function loadEvents()
if text:find("Ïîðò") then
unload_location = true
local cargoN, cargoY, cargoL = string.match(text, v)
luChecker.set3Dtext("Ïîðò", {prices_3dtext[k .. "n"], prices_3dtext[k .. "y"], prices_3dtext[k .. "l"]}, {cargoN, cargoY, cargoL})
luChecker.set3Dtext("Ïîðò", {prices_3dtext[k .. "n"], prices_3dtext[k .. "y"], prices_3dtext[k .. "l"]}, {cargoN, cargoY, cargoL}, position)
prices_3dtext[k .. "n"], prices_3dtext[k .. "y"], prices_3dtext[k .. "l"] = cargoN, cargoY, cargoL
prices_3dtext_id[k .. "n"], prices_3dtext_id[k .. "y"], prices_3dtext_id[k .. "l"] = id, id, id
prices_3dtext_pos[k .. "n"], prices_3dtext_pos[k .. "y"], prices_3dtext_pos[k .. "l"] = position, position, position
@ -2730,7 +2731,7 @@ function loadEvents()
)
else
local cargo_save = string.match(text, v)
luChecker.set3Dtext("Ñêëàä", {prices_3dtext[k], k}, {cargo_save, k})
luChecker.set3Dtext("Ñêëàä", {prices_3dtext[k], k}, {cargo_save, k}, position)
prices_3dtext[k] = cargo_save
prices_3dtext_id[k] = id
prices_3dtext_pos[k] = position
@ -2758,6 +2759,7 @@ function loadEvents()
unload_location = false
current_warehouse = "none"
end
say("remove 3d text "..Cid)
local result, key = isTruck3dTextDefined(Cid)
if result then
for i = 1, #key do
@ -2777,7 +2779,6 @@ function isTruck3dTextDefined(id)
local x, y, z = getCharCoordinates(PLAYER_PED)
for k,v in pairs(prices_3dtext_id) do
local dist = getDistanceBetweenCoords3d(x, y, z, prices_3dtext_pos[k].x, prices_3dtext_pos[k].y, prices_3dtext_pos[k].z)
say(dist)
if id == v and v ~= -1 and dist > 20 then
result = true
say(k)
@ -4025,8 +4026,6 @@ function isVehicleTruckersDelete(table, vehicleId)
local isTrailer = false
for k,v in pairs(table) do
if v["trailerData"] ~= nil and v["trailerData"].trailerId == vehicleId then
say(v["trailerData"].trailerId)
say("òðåéëåð óäàëåí")
result = true
playerId = k
isTrailer = true
@ -4048,12 +4047,15 @@ function luChecker.vehicleStream(stream, vehicleId, data)
local result, playerId, isTrailer = isVehicleTruckersDelete(luChecker.truckers, vehicleId)
if result then
if isTrailer then
say("Òðåéëåð èãðîêà óäàëåí")
say("traile delete")
luChecker.trailer_delete[#luChecker.trailer_delete + 1] = { time = os.clock() * 1000, playerId = playerId, position = luChecker.truckers[playerId]["data"]["position"] }
luChecker.truckers[playerId]["trailerData"] = {
trailerId = -1
}
else
say("Ìàøèíà èãðîêà óäàëåíà")
end
luChecker.truckers[playerId] = nil
end
end
luChecker.vehicles[vehicleId] = nil
end
end
@ -4082,14 +4084,14 @@ function luChecker.trailerSync(playerId, data)
end
end
function luChecker.set3Dtext(type, data_old, data)
function luChecker.set3Dtext(type, data_old, data, position)
inifiles.Settings.luCheckerCargo = 1
if type == "Ïîðò" then
local key = inifiles.Settings.luCheckerCargo
say(string.format("%s %s", data_old[key], data[key]))
if tonumber(data_old[key]) ~= 0 and not (tonumber(data_old[key]) == tonumber(data[1])) then
if tonumber(data_old[key]) > tonumber(data[key]) then
luChecker.price_set[#luChecker.price_set + 1] = { type = "unload", old_price = tonumber(data_old[key]), new_price = tonumber(data[key]), time = os.clock() * 1000 }
luChecker.price_set[#luChecker.price_set + 1] = { type = "unload", old_price = tonumber(data_old[key]), new_price = tonumber(data[key]), time = os.clock() * 1000, position = position }
say("Ðàçãðóçêà â ïîðòó ðÿäîì "..inifiles.Settings.luCheckerCargo)
end
end
@ -4098,13 +4100,51 @@ function luChecker.set3Dtext(type, data_old, data)
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 tonumber(data_old[1]) < tonumber(data[1]) then
luChecker.price_set[#luChecker.price_set + 1] = { type = "load", old_price = tonumber(data_old[key]), new_price = tonumber(data[key]), time = os.clock() * 1000 }
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 }
say("Çàãðóçêà íà ñêëàäå ðÿäîì "..inifiles.Settings.luCheckerCargo)
end
end
end
end
function luChecker.checker()
while true do
wait(0)
clear_old_value("price_set")
clear_old_value("trailer_delete")
if luChecker.price_set[1] ~= nil and luChecker.trailer_delete[1] ~= nil then
playerId = luChecker.trailer_delete[1].playerId
type = luChecker.price_set[1].type
old_price = luChecker.price_set[1].old_price
new_price = luChecker.price_set[1].new_price
position_3dtext = luChecker.price_set[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)
local text = string.format("èãðîê %s %s %s %s", playerId, (type == "load" and "çàãðóçèë" or "ðàçãðóçèë"), inifiles.Settings.luCheckerCargo, dist )
say(">> "..text)
table.remove(luChecker.trailer_delete, 1)
table.remove(luChecker.price_set, 1)
end
end
end
function clear_old_value(key)
local delete = {}
for i = 1, #luChecker[key] do
if os.clock() * 1000 - luChecker[key][i].time > 3000 then
delete[#delete+1] = i
end
end
for i = 1, #delete do
say("remove "..key.." "..i)
table.remove(luChecker[key], delete[i])
end
end
--- luCheckerCargo
--[[

Loading…
Cancel
Save