|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
script_name("TruckHUD") |
|
|
|
|
script_author("Serhiy_Rubin") |
|
|
|
|
script_version("30.06.2023") |
|
|
|
|
script_version("24.11.2023") |
|
|
|
|
|
|
|
|
|
local inicfg = require "inicfg" |
|
|
|
|
local dlstatus = require("moonloader").download_status |
|
|
|
@ -196,8 +196,8 @@ function main() |
|
|
|
|
(server:find("02") and "Two" or |
|
|
|
|
(server:find("Revo") and "Revolution" or |
|
|
|
|
(server:find("Legacy") and "Legacy" or (server:find("Classic") and "Classic" or |
|
|
|
|
(server:find("Zero Two") and "Two" or |
|
|
|
|
(server:find("TEST") and "TEST" or |
|
|
|
|
(server:find("Zero Two") and "Two" or |
|
|
|
|
(server:find("TEST") and "TEST" or |
|
|
|
|
(server:find("Underground") and "Underground" or "" ))))))) |
|
|
|
|
if server == "" then |
|
|
|
|
thisScript():unload() |
|
|
|
@ -230,7 +230,7 @@ function main() |
|
|
|
|
lua_thread.create(luChecker.checker) |
|
|
|
|
lua_thread.create(doCruise) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
platinum_check() |
|
|
|
|
|
|
|
|
|
repeat |
|
|
|
|
wait(0) |
|
|
|
@ -347,7 +347,11 @@ function settings_load() |
|
|
|
|
binder = { '/r На месте', '/r Загружаюсь', '/r Задержусь', '/r Разгружаюсь' }, |
|
|
|
|
binder_sms = { '/sms !ИдПары На месте', '/sms !ИдПары Загружаюсь', '/sms !ИдПары Задержусь', '/sms !ИдПары Разгружаюсь' }, |
|
|
|
|
blacklist = {}, |
|
|
|
|
version = thisScript().version |
|
|
|
|
version = thisScript().version, |
|
|
|
|
platinum = { |
|
|
|
|
status = false, |
|
|
|
|
time = 0 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if not doesFileExist(AdressJson) then |
|
|
|
|
local file, error = io.open(AdressJson, "w") |
|
|
|
@ -779,6 +783,11 @@ function doDialog() |
|
|
|
|
) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
if str:find("Platinum VIP") then |
|
|
|
|
inifiles.platinum.status = not inifiles.platinum.status |
|
|
|
|
settings_save() |
|
|
|
|
ShowDialog1(1) |
|
|
|
|
end |
|
|
|
|
if str:find("Шрифт") then |
|
|
|
|
if dialogTextToList[list + 1] ~= nil then |
|
|
|
|
ShowDialog1(2, dialogTextToList[list + 1], inifiles.Render.FontName, true, "Render", "FontName") |
|
|
|
@ -1145,7 +1154,8 @@ function doRenderStats() |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
Y = Y + height |
|
|
|
|
timer_secc = 180 - os.difftime(msk_timestamp, timer) |
|
|
|
|
sec_timer = (inifiles.platinum.status and 120 or 180) |
|
|
|
|
timer_secc = sec_timer - os.difftime(msk_timestamp, timer) |
|
|
|
|
local ost_time = 3600 - (os.date("%M", msk_timestamp) * 60) + (os.date("%S", msk_timestamp)) |
|
|
|
|
local greys = 0 |
|
|
|
|
if workload == 1 then |
|
|
|
@ -1159,7 +1169,7 @@ function doRenderStats() |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
greys = greys + math.floor(ost_time / 360) |
|
|
|
|
if timer_secc >= 177 and workload == 0 and isTruckCar() and inifiles.Settings.Stop then |
|
|
|
|
if timer_secc >= (sec_timer - 3) and workload == 0 and isTruckCar() and inifiles.Settings.Stop then |
|
|
|
|
setGameKeyState(6, 255) |
|
|
|
|
end |
|
|
|
|
timer_min, timer_sec = math.floor(timer_secc / 60), timer_secc % 60 |
|
|
|
@ -1205,12 +1215,12 @@ function doRenderStats() |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
if |
|
|
|
|
os.difftime(msk_timestamp, timer) > 180 and |
|
|
|
|
os.difftime(msk_timestamp, timer) > sec_timer and |
|
|
|
|
autoh and |
|
|
|
|
(not isPairModeActive() or (isPairModeActive() and os.time() - pair_afk_stop.auto_stop >= 3)) and |
|
|
|
|
(not isPairModeActive() or (isPairModeActive() and (msk_timestamp - pair_timestamp) < 5)) and |
|
|
|
|
(not isPairModeActive() or (isPairModeActive() and (pair_ready and player_ready))) and |
|
|
|
|
not (isPairModeActive() and inifiles.Settings.auto_load_unload_kd_pair_use and base[pair_mode_name].gruz == current_load and os.difftime(msk_timestamp, base[pair_mode_name].timer) <= 180) |
|
|
|
|
not (isPairModeActive() and inifiles.Settings.auto_load_unload_kd_pair_use and base[pair_mode_name].gruz == current_load and os.difftime(msk_timestamp, base[pair_mode_name].timer) <= sec_timer) |
|
|
|
|
then |
|
|
|
|
if workload == 1 then |
|
|
|
|
if unload_location then |
|
|
|
@ -1335,7 +1345,7 @@ function doRenderStats() |
|
|
|
|
end |
|
|
|
|
if inifiles.Settings.pairinfo and pair_mode and pair_status == 200 and pair_table ~= nil and pair_table["pos"] ~= nil and base[pair_mode_name] ~= nil then |
|
|
|
|
local afk = msk_timestamp - pair_timestamp |
|
|
|
|
local timer_d = 180 - (base[pair_mode_name].timer > 1000 and os.difftime(msk_timestamp, base[pair_mode_name].timer) or 181) |
|
|
|
|
local timer_d = sec_timer - (base[pair_mode_name].timer > 1000 and os.difftime(msk_timestamp, base[pair_mode_name].timer) or (sec_timer+1)) |
|
|
|
|
local color = ( not player_ready and "" or ( |
|
|
|
|
pair_ready and "{07a817}" or "{d90b0b}" |
|
|
|
|
)) |
|
|
|
@ -1846,6 +1856,7 @@ end |
|
|
|
|
function ShowDialog1(int, dtext, dinput, string_or_number, ini1, ini2) |
|
|
|
|
d[1], d[2], d[3], d[4], d[5], d[6] = int, dtext, dinput, string_or_number, ini1, ini2 |
|
|
|
|
if int == 1 then |
|
|
|
|
local new = "{59fc30}[NEW]{ffffff} " |
|
|
|
|
dialogLine, dialogTextToList, iniName = {}, {}, {} |
|
|
|
|
dialogLine[#dialogLine + 1] = (script_run and "TruckHUD\t{59fc30}ON" or "TruckHUD\t{ff0000}OFF") |
|
|
|
|
|
|
|
|
@ -1948,6 +1959,8 @@ function ShowDialog1(int, dtext, dinput, string_or_number, ini1, ini2) |
|
|
|
|
dialogTextToList[#dialogLine] = |
|
|
|
|
"{FFFFFF}Введите новый цвет в HEX\nПодобрать цвет можно через браузер\nЧтобы скопировать ссылку введите /truck url" |
|
|
|
|
|
|
|
|
|
dialogLine[#dialogLine + 1] = new.."Platinum VIP (2 мин кд)\t" .. (inifiles.platinum.status == true and "{59fc30}ON" or "{ff0000}OFF") |
|
|
|
|
|
|
|
|
|
dialogLine[#dialogLine + 1] = "Шрифт\t" .. inifiles.Render.FontName -- 7 |
|
|
|
|
dialogTextToList[#dialogLine] = "{FFFFFF}Введите название шрифта" |
|
|
|
|
|
|
|
|
@ -2250,6 +2263,25 @@ function loadEvents() |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
function sampev.onServerMessage(color, message) |
|
|
|
|
if message:find("У вас .E5E4E2.PLATINUM VIP.EAC700. до %d+/%d+/%d+ %d+:%d+") then |
|
|
|
|
local year, mounth, day, hour, min = message:match("У вас .E5E4E2.PLATINUM VIP.EAC700. до (%d+)/(%d+)/(%d+) (%d+):(%d+)") |
|
|
|
|
datetime = { |
|
|
|
|
year = tonumber(year), |
|
|
|
|
month = tonumber(mounth), |
|
|
|
|
day = tonumber(day), |
|
|
|
|
hour = tonumber(hour), |
|
|
|
|
min = tonumber(min), |
|
|
|
|
sec = 5 |
|
|
|
|
} |
|
|
|
|
if os.time(datetime) ~= inifiles.platinum.time then |
|
|
|
|
inifiles.platinum.time = os.time(datetime) |
|
|
|
|
settings_save() |
|
|
|
|
end |
|
|
|
|
if not inifiles.platinum.status then |
|
|
|
|
inifiles.platinum.status = true |
|
|
|
|
settings_save() |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
if string.find(message, " Нефть: %d+ / (%d+)$") then |
|
|
|
|
maxload_int = tonumber(string.match(message, " Нефть: %d+ / (%d+)$")) |
|
|
|
|
end |
|
|
|
@ -3111,7 +3143,8 @@ function transponder() |
|
|
|
|
paraid = pair_mode_id, |
|
|
|
|
timer = timer, |
|
|
|
|
tmonitor = inifiles.tmonitor, |
|
|
|
|
version = inifiles.version |
|
|
|
|
version = inifiles.version, |
|
|
|
|
platinum = inifiles.platinum.status |
|
|
|
|
}, |
|
|
|
|
solo_message = solo_message_send |
|
|
|
|
} |
|
|
|
@ -3573,7 +3606,11 @@ function showTruckers() |
|
|
|
|
if (sampIsPlayerConnected(v.id) or myid == v.id) and sampGetPlayerNickname(v.id) == k then |
|
|
|
|
trucker_count = trucker_count + 1 |
|
|
|
|
local afk = math.ceil(msk_timestamp - v.timestamp) |
|
|
|
|
dialogText = string.format('%s%s[%s] %s\t%s / %s\t%s\t%s\n', dialogText, k, v.id, (afk > 10 and '[AFK: '..afk..']' or ''), v.skill, v.rank, ( (v.is_truck and 'Да ' or 'Нет ')..(v.gruz == 0 and '/ Нет' or (v.gruz == 1 and '/ Нефть' or (v.gruz == 2 and '/ Уголь' or (v.gruz == 3 and '/ Дерево' or '/ Нет')))) ), ( v.pair_mode_name == '____' and 'Нет' or v.pair_mode_name..'['..v.paraid..']')) |
|
|
|
|
local platinum = "" |
|
|
|
|
if v.platinum then |
|
|
|
|
platinum = "[VIP] " |
|
|
|
|
end |
|
|
|
|
dialogText = string.format('%s%s%s[%s] %s\t%s / %s\t%s\t%s\n', dialogText, platinum, k, v.id, (afk > 10 and '[AFK: '..afk..']' or ''), v.skill, v.rank, ( (v.is_truck and 'Да ' or 'Нет ')..(v.gruz == 0 and '/ Нет' or (v.gruz == 1 and '/ Нефть' or (v.gruz == 2 and '/ Уголь' or (v.gruz == 3 and '/ Дерево' or '/ Нет')))) ), ( v.pair_mode_name == '____' and 'Нет' or v.pair_mode_name..'['..v.paraid..']')) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
@ -3593,13 +3630,14 @@ function renderTruckers() |
|
|
|
|
local stream, ped = sampGetCharHandleBySampPlayerId(id) |
|
|
|
|
if stream then |
|
|
|
|
if (isCharInModel(ped, 403) or isCharInModel(ped, 514) or isCharInModel(ped, 515)) then |
|
|
|
|
sec_timer = (base[nickname].platinum and 120 or 180) |
|
|
|
|
local car = storeCarCharIsInNoSave(ped) |
|
|
|
|
local result, idcar = sampGetVehicleIdByCarHandle(car) |
|
|
|
|
if _3dTextplayers[id] == nil and result then |
|
|
|
|
_3dTextplayers[id] = sampCreate3dText(' ', -1, 0.0, 0.0, 0.0, 30.0, false, -1, idcar) |
|
|
|
|
end |
|
|
|
|
if _3dTextplayers[id] ~= nil and result then |
|
|
|
|
local timer_player = 180 - (base[nickname].timer > 1000 and os.difftime(msk_timestamp, base[nickname].timer) or 181) |
|
|
|
|
local timer_player = sec_timer - (base[nickname].timer > 1000 and os.difftime(msk_timestamp, base[nickname].timer) or (sec_timer+1)) |
|
|
|
|
local color = (timer_player <= 0 and inifiles.Render.Color2 or (timer_player <= 10 and 'b50000' or inifiles.Render.Color2)) |
|
|
|
|
local kd_player = (timer_player > 0 |
|
|
|
|
and |
|
|
|
@ -3615,7 +3653,7 @@ function renderTruckers() |
|
|
|
|
) |
|
|
|
|
local pair_kd = '' |
|
|
|
|
if base[nickname].pair_mode_name ~= '____' and base[base[nickname].pair_mode_name] ~= nil then |
|
|
|
|
local timer_d = 180 - (base[base[nickname].pair_mode_name].timer > 1000 and os.difftime(msk_timestamp, base[base[nickname].pair_mode_name].timer) or 181) |
|
|
|
|
local timer_d = sec_timer - (base[base[nickname].pair_mode_name].timer > 1000 and os.difftime(msk_timestamp, base[base[nickname].pair_mode_name].timer) or (sec_timer+1)) |
|
|
|
|
local color = (timer_d <= 0 and inifiles.Render.Color2 or (timer_d <= 10 and 'b50000' or inifiles.Render.Color2)) |
|
|
|
|
pair_kd = string.format('(%s{%s})', (timer_d > 0 and string.format('{%s}%d:%02d', color, math.floor(timer_d / 60), timer_d % 60) or string.format('{%s}0:00', inifiles.Render.Color2)), inifiles.Render.Color2) |
|
|
|
|
end |
|
|
|
@ -4098,6 +4136,15 @@ function luChecker.checker() |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
-- platinum |
|
|
|
|
function platinum_check() |
|
|
|
|
if inifiles.platinum.status and inifiles.platinum.time < os.time() then |
|
|
|
|
addChatMessage("'Platinum VIP' закончился. Теперь у Вас кд сново 3 минуты") |
|
|
|
|
inifiles.platinum.status = false |
|
|
|
|
settings_save() |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
function getLocalPlayerId() |
|
|
|
|
return select(2,sampGetPlayerIdByCharHandle(PLAYER_PED)) |
|
|
|
|
end |
|
|
|
|