From e02638b2250e7be48666b1985e1183e4e91eaa1c Mon Sep 17 00:00:00 2001 From: rubin Date: Mon, 23 Jan 2023 20:09:36 +0300 Subject: [PATCH] added UTF-8 module --- TruckHUD.lua | 1023 ++++++++++++++++++++++++++------------------------ changelog | 14 +- 2 files changed, 549 insertions(+), 488 deletions(-) diff --git a/TruckHUD.lua b/TruckHUD.lua index a75c5e2..ed9104b 100644 --- a/TruckHUD.lua +++ b/TruckHUD.lua @@ -7,6 +7,9 @@ local dlstatus = require("moonloader").download_status local vkeys = require "lib.vkeys" local ffi = require("ffi") +local encoding = require "encoding" +encoding.default = "CP1251" +local u8 = encoding.UTF8 ffi.cdef [[ bool SetCursorPos(int X, int Y); ]] @@ -19,52 +22,52 @@ end ------- 3d text local id_3D_text = os.time() -local what_is_uploaded = {[0] = "Íåò", [1] = "Íåôòü", [2] = "Óãîëü", [3] = "Äåðåâî"} +local what_is_uploaded = {[0] = "Ð�ет", [1] = "Ð�ефть", [2] = "Уголь", [3] = "Дерево"} local texts_of_reports = { - ["n1"] = "Íåôòåçàâîäå ¹1", - ["n2"] = "Íåôòåçàâîäå ¹2", - ["y1"] = "Ñêëàäå Óãëÿ ¹1", - ["y2"] = "Ñêëàäå Óãëÿ ¹2", - ["l1"] = "Ëåñîïèëêå ¹1", - ["l2"] = "Ëåñîïèëêå ¹2", - ["lsn"] = "Íåôòü â ËÑ", - ["lsy"] = "Óãîëü â ËÑ", - ["lsl"] = "Äåðåâî â ËÑ", - ["sfn"] = "Íåôòü â ÑÔ", - ["sfy"] = "Óãîëü â ÑÔ", - ["sfl"] = "Äåðåâî â ÑÔ" + ["n1"] = "Ð�ефтезаводе â„–1", + ["n2"] = "Ð�ефтезаводе â„–2", + ["y1"] = "Складе УглÑ� â„–1", + ["y2"] = "Складе УглÑ� â„–2", + ["l1"] = "ЛеÑ�опилке â„–1", + ["l2"] = "ЛеÑ�опилке â„–2", + ["lsn"] = "Ð�ефть в ЛС", + ["lsy"] = "Уголь в ЛС", + ["lsl"] = "Дерево в ЛС", + ["sfn"] = "Ð�ефть в СФ", + ["sfy"] = "Уголь в СФ", + ["sfl"] = "Дерево в СФ" } local dop_chat_light = { - "Íåôòåçàâîä ¹1", "Íåôòåçàâîä ¹2", "Ñêëàä Óãëÿ ¹1", "Ñêëàä Óãëÿ ¹2", "Ëåñîïèëêó ¹1", "Ëåñîïèëêó ¹2", "Íåôòü â Ïîðò ËÑ", "Íåôòü â Ïîðò ÑÔ", "Óãîëü â Ïîðò ËÑ", "Óãîëü â Ïîðò ÑÔ", "Äåðåâî â Ïîðò ËÑ", "Äåðåâî â Ïîðò ÑÔ", " â Ïîðò ËÑ", " â Ïîðò ÑÔ" + "Ð�ефтезавод â„–1", "Ð�ефтезавод â„–2", "Склад УглÑ� â„–1", "Склад УглÑ� â„–2", "ЛеÑ�опилку â„–1", "ЛеÑ�опилку â„–2", "Ð�ефть в Порт ЛС", "Ð�ефть в Порт СФ", "Уголь в Порт ЛС", "Уголь в Порт СФ", "Дерево в Порт ЛС", "Дерево в Порт СФ", " в Порт ЛС", " в Порт СФ" } for k,v in pairs(texts_of_reports) do dop_chat_light[#dop_chat_light+1] = v end local find_3dText = { - ["n1"] = "Íåôòåçàâîä ¹1.*Öåíà ãðóçà: 0.(%d+)", - ["n2"] = "Íåôòåçàâîä ¹2.*Öåíà ãðóçà: 0.(%d+)", - ["y1"] = "Ñêëàä óãëÿ ¹1.*Öåíà ãðóçà: 0.(%d+)", - ["y2"] = "Ñêëàä óãëÿ ¹2.*Öåíà ãðóçà: 0.(%d+)", - ["l1"] = "Ëåñîïèëêà ¹1.*Öåíà ãðóçà: 0.(%d+)", - ["l2"] = "Ëåñîïèëêà ¹2.*Öåíà ãðóçà: 0.(%d+)", - ["ls"] = "Ïîðò ËÑ.*Íåôòü: 0.(%d+).*Óãîëü: 0.(%d+).*Äåðåâî: 0.(%d+)", - ["sf"] = "Ïîðò ÑÔ.*Íåôòü: 0.(%d+).*Óãîëü: 0.(%d+).*Äåðåâî: 0.(%d+)" + ["n1"] = "Ð�ефтезавод â„–1.*Цена груза: 0.(%d+)", + ["n2"] = "Ð�ефтезавод â„–2.*Цена груза: 0.(%d+)", + ["y1"] = "Склад углÑ� â„–1.*Цена груза: 0.(%d+)", + ["y2"] = "Склад углÑ� â„–2.*Цена груза: 0.(%d+)", + ["l1"] = "ЛеÑ�опилка â„–1.*Цена груза: 0.(%d+)", + ["l2"] = "ЛеÑ�опилка â„–2.*Цена груза: 0.(%d+)", + ["ls"] = "Порт ЛС.*Ð�ефть: 0.(%d+).*Уголь: 0.(%d+).*Дерево: 0.(%d+)", + ["sf"] = "Порт СФ.*Ð�ефть: 0.(%d+).*Уголь: 0.(%d+).*Дерево: 0.(%d+)" } local menu = { [1] = {[1] = "TruckHUD: {06940f}ON", [2] = "TruckHUD: {d10000}OFF", run = false}, [2] = {[1] = "Load/Unload: {06940f}ON", [2] = "Load/Unload: {d10000}OFF", run = false}, - [3] = {[1] = "Àâòî-Äîêëàä: {06940f}ON", [2] = "Àâòî-Äîêëàä: {d10000}OFF", run = false}, - [4] = {[1] = "SMS » Serhiy_Rubin[777]", [2] = "Ðåæèì ïàðû: {d10000}OFF", run = false}, - [5] = {[1] = "Ñîëî-×åêåð: ", [2] = "Ñîëî-×åêåð: ", run = false}, - [6] = {[1] = "Äàëüíîáîéùèêè îíëàéí", [2] = "Äàëüíîáîéùèêè îíëàéí", run = false}, - [7] = {[1] = "Äàëüíîáîéùèêè ñî ñêðèïòîì", [2] = "Äàëüíîáîéùèêè ñî ñêðèïòîì", run = false}, - [8] = {[1] = "Íàñòðîéêè", [2] = "Íàñòðîéêè", run = false}, - [9] = {[1] = "Ìîíèòîðèíã öåí", [2] = "Ìîíèòîðèíã öåí", run = false}, - [10] = {[1] = "Êóïèòü ãðóç", [2] = "Êóïèòü ãðóç", run = false}, - [11] = {[1] = "Ïðîäàòü ãðóç", [2] = "Ïðîäàòü ãðóç", run = false}, - [12] = {[1] = "Âîññòàíîâèòü ãðóç", [2] = "Âîññòàíîâèòü ãðóç", run = false} + [3] = {[1] = "Ð�вто-Доклад: {06940f}ON", [2] = "Ð�вто-Доклад: {d10000}OFF", run = false}, + [4] = {[1] = "SMS » Serhiy_Rubin[777]", [2] = "Режим пары: {d10000}OFF", run = false}, + [5] = {[1] = "Соло-Чекер: ", [2] = "Соло-Чекер: ", run = false}, + [6] = {[1] = "Дальнобойщики онлайн", [2] = "Дальнобойщики онлайн", run = false}, + [7] = {[1] = "Дальнобойщики Ñ�о Ñ�криптом", [2] = "Дальнобойщики Ñ�о Ñ�криптом", run = false}, + [8] = {[1] = "Ð�аÑ�тройки", [2] = "Ð�аÑ�тройки", run = false}, + [9] = {[1] = "Мониторинг цен", [2] = "Мониторинг цен", run = false}, + [10] = {[1] = "Купить груз", [2] = "Купить груз", run = false}, + [11] = {[1] = "Продать груз", [2] = "Продать груз", run = false}, + [12] = {[1] = "ВоÑ�Ñ�тановить груз", [2] = "ВоÑ�Ñ�тановить груз", run = false} } @@ -75,7 +78,7 @@ local pair_afk_stop = { } -local pair_mode, sms_pair_mode, report_text, pair_mode_id, pair_mode_name, BinderMode = false, "", "", -1, "Íåò", true +local pair_mode, sms_pair_mode, report_text, pair_mode_id, pair_mode_name, BinderMode = false, "", "", -1, "Ð�ет", true local script_run, control, auto, autoh, wait_auto, pos = false, false, false, true, 0, {[1] = false, [2] = false, [3] = false} @@ -123,31 +126,31 @@ parking_pair = { [2] = { -1048.6430664063, -660.54699707031, 33.012603759766, 10.0 } -- N2 }, { - [1] = { 839.09020996094, 880.17510986328, 14.3515625, 15.0 }, -- Ó1 - [2] = { -2913.8544921875, -1377.0952148438, 12.762256622314, 25.0 } -- Ó2 + [1] = { 839.09020996094, 880.17510986328, 14.3515625, 15.0 }, -- У1 + [2] = { -2913.8544921875, -1377.0952148438, 12.762256622314, 25.0 } -- У2 }, { - [1] = { -457.45620727539, -53.193939208984, 60.938865661621, 15.0 }, -- Ë1 - [2] = { -1963.6184082031, -2438.9055175781, 31.625, 25.0 } -- Ë2 + [1] = { -457.45620727539, -53.193939208984, 60.938865661621, 15.0 }, -- Л1 + [2] = { -1963.6184082031, -2438.9055175781, 31.625, 25.0 } -- Л2 }, { - [1] = { 2507.0256, -2234.2151, 13.5469, 30.0 }, -- ËÑ - [2] = { -1731.5022, 118.8936, 3.5547, 30.0 } -- ÑÔ + [1] = { 2507.0256, -2234.2151, 13.5469, 30.0 }, -- ЛС + [2] = { -1731.5022, 118.8936, 3.5547, 30.0 } -- СФ } } pair_ready = false player_ready = false location_pos = { - ["Íåôòü 1"] = {x = 256.02127075195, y = 1414.8492431641, z = 10.232398033142}, - ["Óãîëü 1"] = {x = 832.10766601563, y = 864.03668212891, z = 11.643839836121}, - ["Ëåñ 1"] = {x = -448.91455078125, y = -65.951385498047, z = 58.959014892578}, - ["Íåôòü 2"] = {x = -1046.7521972656, y = -670.66937255859, z = 31.885597229004}, - ["Óãîëü 2"] = {x = -2913.8544921875, y = -1377.0952148438, z = 10.762256622314}, - ["Ëåñ 2"] = {x = -1978.8649902344, y = -2434.9421386719, z = 30.192840576172}, - ["Ïîðò ËÑ"] = {x = 2507.02, y = -2234.05, z = 13.55}, - ["Ïîðò ÑÔ"] = {x = -1731.5022, y = 118.8936, z = 3.5547}, - ["Àðåíäà"] = {x = 2239.8333, y = 2779.6016, z = 10.8203} + ["Ð�ефть 1"] = {x = 256.02127075195, y = 1414.8492431641, z = 10.232398033142}, + ["Уголь 1"] = {x = 832.10766601563, y = 864.03668212891, z = 11.643839836121}, + ["ЛеÑ� 1"] = {x = -448.91455078125, y = -65.951385498047, z = 58.959014892578}, + ["Ð�ефть 2"] = {x = -1046.7521972656, y = -670.66937255859, z = 31.885597229004}, + ["Уголь 2"] = {x = -2913.8544921875, y = -1377.0952148438, z = 10.762256622314}, + ["ЛеÑ� 2"] = {x = -1978.8649902344, y = -2434.9421386719, z = 30.192840576172}, + ["Порт ЛС"] = {x = 2507.02, y = -2234.05, z = 13.55}, + ["Порт СФ"] = {x = -1731.5022, y = 118.8936, z = 3.5547}, + ["Ð�ренда"] = {x = 2239.8333, y = 2779.6016, z = 10.8203} } location_keys = { ["n1"] = {x = 256.02127075195, y = 1414.8492431641, z = 10.232398033142, }, @@ -177,8 +180,8 @@ function main() try(function() sampev = require "lib.samp.events" end, function(e) - sampAddChatMessage(">> TruckHUD: Îòñóòñòâóåò ìîäóëü 'samp.events' (SAMP.lua)", 0xff0000) - sampAddChatMessage(">> Îôèöèàëüíàÿ ñòðàíèöà TruckHUD: https://vk.com/rubin.mods",0xff0000) + sampAddChatMessage(">> TruckHUD: ОтÑ�утÑ�твует модуль 'samp.events' (SAMP.lua)", 0xff0000) + sampAddChatMessage(">> ОфициальнаÑ� Ñ�траница TruckHUD: https://vk.com/rubin.mods",0xff0000) thisScript():unload() end) loadEvents() @@ -261,7 +264,7 @@ function settings_load() local x2, y2 = convertGameScreenCoordsToWindowScreenCoords(146.17861938477, 345.91665649414) local x3, y3 = convertGameScreenCoordsToWindowScreenCoords(529.42901611328, 158.08332824707) defaultMon = -[[!mn!Ñêèëë: {FFFFFF}!skill! [!skill_poc!%] [!skill_reys!]!n!Ðàíã: {FFFFFF}!rang! [!rang_poc!%] [!rang_reys!]!n!!mn!Çàðïëàòà:{FFFFFF} !zp_hour!/!max_zp!!n!Ïðèáûëü: {FFFFFF}!profit!!n!Ðåéñû: {FFFFFF}!reys_hour!/!reys_day! [!left_reys!] ]] +[[!mn!Скилл: {FFFFFF}!skill! [!skill_poc!%] [!skill_reys!]!n!Ранг: {FFFFFF}!rang! [!rang_poc!%] [!rang_reys!]!n!!mn!Зарплата:{FFFFFF} !zp_hour!/!max_zp!!n!Прибыль: {FFFFFF}!profit!!n!РейÑ�Ñ‹: {FFFFFF}!reys_hour!/!reys_day! [!left_reys!] ]] local table_std = { Settings = { binder_sms_mode = false, @@ -331,8 +334,8 @@ function settings_load() time = 0, n1 = 0, n2 = 0, y1 = 0, y2 = 0, l1 = 0, l2 = 0, lsn = 0, lsy = 0, lsl = 0, sfn = 0, sfy = 0, sfl = 0 }, - binder = { '/r Íà ìåñòå', '/r Çàãðóæàþñü', '/r Çàäåðæóñü', '/r Ðàçãðóæàþñü' }, - binder_sms = { '/sms !ÈäÏàðû Íà ìåñòå', '/sms !ÈäÏàðû Çàãðóæàþñü', '/sms !ÈäÏàðû Çàäåðæóñü', '/sms !ÈäÏàðû Ðàçãðóæàþñü' }, + binder = { '/r Ð�а меÑ�те', '/r ЗагружаюÑ�ÑŒ', '/r ЗадержуÑ�ÑŒ', '/r РазгружаюÑ�ÑŒ' }, + binder_sms = { '/sms !ИдПары Ð�а меÑ�те', '/sms !ИдПары ЗагружаюÑ�ÑŒ', '/sms !ИдПары ЗадержуÑ�ÑŒ', '/sms !ИдПары РазгружаюÑ�ÑŒ' }, blacklist = {} } if not doesFileExist(AdressJson) then @@ -351,7 +354,7 @@ function settings_load() if file then inifiles = decodeJson(file:read("*a")) if inifiles == nil then - sampAddChatMessage("[TruckHUD] Îøèáêà ÷òåíèÿ êîíôèãà! Ñáðàñûâàþ êîíôèã!", 0xff0000) + sampAddChatMessage("[TruckHUD] Ошибка чтениÑ� конфига! СбраÑ�ываю конфиг!", 0xff0000) local file, error = io.open(AdressJson, "w") if file ~= nil then file:write(encodeJson(table_std)) @@ -364,7 +367,7 @@ function settings_load() end local result = pcall(readJson) if not result then - sampAddChatMessage("[TruckHUD] Îøèáêà ÷òåíèÿ êîíôèãà! Ñáðàñûâàþ êîíôèã!", 0xff0000) + sampAddChatMessage("[TruckHUD] Ошибка чтениÑ� конфига! СбраÑ�ываю конфиг!", 0xff0000) local file, error = io.open(AdressJson, "w") if file ~= nil then file:write(encodeJson(table_std)) @@ -376,7 +379,7 @@ function settings_load() if inifiles ~= nil then if error_ini ~= nil then - sampAddChatMessage("[TruckHUD] Êîíôèã áûë óñïåøíî çàãðóæåí!", 0xff0000) + sampAddChatMessage("[TruckHUD] Конфиг был уÑ�пешно загружен!", 0xff0000) error_ini = nil end for k,v in pairs(table_std) do @@ -394,7 +397,7 @@ function settings_load() settings_save() else error_ini = true - sampAddChatMessage("[TruckHUD] Îøèáêà ÷òåíèÿ êîíôèãà! Ïðîáóþ åù¸ ðàç ïðî÷åñòü", 0xff0000) + sampAddChatMessage("[TruckHUD] Ошибка чтениÑ� конфига! Пробую ещё раз прочеÑ�ть", 0xff0000) settings_load() end end @@ -427,9 +430,9 @@ function doControl() local plus = (renderGetFontDrawHeight(font) + (renderGetFontDrawHeight(font) / 10)) Y = ((Y / 2.2) - (renderGetFontDrawHeight(font) * 3)) for i = 1, 12 do - local string_render = (menu[i].run and menu[i][1] or menu[i][2]) + local string_render = menu[i].run and menu[i][1] or menu[i][2] if i == 5 then - local text = { "{d10000}OFF", "{06940f}Íåôòü", "{06940f}Óãîëü", "{06940f}Äåðåâî", "{06940f}Âñå" } + local text = { "{d10000}OFF", "{06940f}Ð�ефть", "{06940f}Уголь", "{06940f}Дерево", "{06940f}Ð’Ñ�е" } if text[inifiles.Settings.luCheckerCargo+1] ~= nil then string_render = string.format("%s%s", string_render, text[inifiles.Settings.luCheckerCargo+1]) end @@ -492,7 +495,7 @@ function doControl() if i == 4 and pair_mode and drawClickableText( - "{e30202}õ", + "{e30202}Ñ…", ((X / 2) + (renderGetFontDrawTextLength(font, menu[4][1] .. " ") / 2)), Y ) @@ -574,12 +577,12 @@ end function doDialog() local result, button, list, input = sampHasDialogRespond(222) local caption = sampGetDialogCaption() - if caption:find('Truck%-HUD: Áëîêèðîâêà') then + if caption:find('Truck%-HUD: Блокировка') then if result then doLocalBlock(button, list, input, caption) end end - if caption == "Truck-HUD: Íàñòðîéêè" then + if string.find(caption, 'Truck%-HUD: Ð�аÑ�тройки') then if result and button == 1 then if dialogLine ~= nil and dialogLine[list + 1] ~= nil then local str = dialogLine[list + 1] @@ -587,86 +590,86 @@ function doDialog() script_run = not script_run ShowDialog1(1) end - if str:find("Ñìåíèòü ïîçèöèþ ñòàòèñòèêè ñ òàéìåðîì") then + if str:find("Сменить позицию Ñ�татиÑ�тики Ñ� таймером") then wait(100) pos[1] = true end - if str:find("Ñìåíèòü ïîçèöèþ ìîíèòîðèíãà öåí") then + if str:find("Сменить позицию мониторинга цен") then wait(100) pos[2] = true end - if str:find("Ñìåíèòü ïîçèöèþ áèíäåðà") then + if str:find("Сменить позицию биндера") then wait(100) pos[3] = true end - if str:find("Äîêëàäû ïî êëèêó íà öåíû") then + if str:find("Доклады по клику на цены") then inifiles.Settings.binder_sms_mode = not inifiles.Settings.binder_sms_mode settings_save() ShowDialog1(1) end - if str:find("Ðåäàêòèðîâàòü ôîðìàò ñòàòèñòèêè") then + if str:find("Редактировать формат Ñ�татиÑ�тики") then editbox_stats = true ShowDialog1(9) end if str:find("Cruise Control") then - if str:find("Êíîïêà") then + if str:find("Кнопка") then ShowDialog1(4, 4) else inifiles.Settings.Cruise = not inifiles.Settings.Cruise if inifiles.Settings.Cruise then - sampAddChatMessage('Äëÿ àêòèâàöèè êîãäà åäåòå íàæìèòå '..inifiles.Settings.Key4:gsub('VK_', '')..'. ×òîáû îòêëþ÷èòü íàæìèòå W.', -1) + sampAddChatMessage('ДлÑ� активации когда едете нажмите '..inifiles.Settings.Key4:gsub('VK_', '')..'. Чтобы отключить нажмите W.', -1) end settings_save() ShowDialog1(1) end end - if str:find("Èíôîðìàöèÿ î íàïàðíèêå íà HUD") then + if str:find("ИнформациÑ� о напарнике на HUD") then inifiles.Settings.pairinfo = not inifiles.Settings.pairinfo settings_save() ShowDialog1(9) end - if str:find("Äîêëàäû â ðàöèþ") then + if str:find("Доклады в рацию") then inifiles.Settings.Report = not inifiles.Settings.Report menu[3].run = inifiles.Settings.Report settings_save() ShowDialog1(1) end - if str:find("Äîêëàäû îò") then + if str:find("Доклады от") then inifiles.Settings.girl = not inifiles.Settings.girl settings_save() ShowDialog1(1) end - if str:find("Àâòî çàãðóçêà/ðàçãðóçêà") then + if str:find("Ð�вто загрузка/разгрузка") then auto = not auto menu[2].run = auto ShowDialog1(1) end - if str:find("Ó÷èòûâàòü ÊÄ íàïàðíèêà") then + if str:find("Учитывать КД напарника") then inifiles.Settings.auto_load_unload_kd_pair_use = not inifiles.Settings.auto_load_unload_kd_pair_use settings_save() ShowDialog1(1) end - if str:find("Ðåæèì àâòî çàãðóçêè/ðàçãðóçêè") then + if str:find("Режим авто загрузки/разгрузки") then inifiles.Settings.AutoOFF = not inifiles.Settings.AutoOFF settings_save() ShowDialog1(1) end - if str:find("Èíôîðìàöèÿ íà ôóðàõ äàëüíîáîéùèêîâ") then + if str:find("ИнформациÑ� на фурах дальнобойщиков") then inifiles.Settings.TruckRender = not inifiles.Settings.TruckRender settings_save() ShowDialog1(1) end - if str:find("Óáðàòü òþíèíã êîëåñ ñ ôóð") then + if str:find("Убрать тюнинг колеÑ� Ñ� фур") then inifiles.Settings.Tuning = not inifiles.Settings.Tuning settings_save() ShowDialog1(1) end - if str:find("Áèíäåð") then + if str:find("Биндер") then inifiles.Settings.Binder = not inifiles.Settings.Binder settings_save() ShowDialog1(1) end - if str:find("Ðåæèì ïàðû ") then + if str:find("Режим пары ") then if pair_mode then pair_mode = false menu[4].run = false @@ -675,7 +678,7 @@ function doDialog() ShowDialog1(8) end end - if str:find("Ñîëî") then + if str:find("Соло") then inifiles.Settings.luCheckerCargo = inifiles.Settings.luCheckerCargo + 1 if inifiles.Settings.luCheckerCargo >= 5 then inifiles.Settings.luCheckerCargo = 0 @@ -684,57 +687,57 @@ function doDialog() settings_save() ShowDialog1(1) end - if str:find("Äîêëàäû â SMS") then + if str:find("Доклады в SMS") then inifiles.Settings.SMSpara = not inifiles.Settings.SMSpara settings_save() ShowDialog1(1) end - if str:find("Ïîäñâåòêà íàïàðíèêà â ÷àòå") then + if str:find("ПодÑ�ветка напарника в чате") then inifiles.Settings.LightingPara = not inifiles.Settings.LightingPara settings_save() ShowDialog1(1) end - if str:find("Îñòàíîâêà ôóðû ïîñëå ðàçãðóçêè") then + if str:find("ОÑ�тановка фуры поÑ�ле разгрузки") then inifiles.Settings.Stop = not inifiles.Settings.Stop settings_save() ShowDialog1(1) end - if str:find("Ñèíõðîíèçàöèÿ") then + if str:find("СинхронизациÑ�") then inifiles.Settings.transponder = not inifiles.Settings.transponder settings_save() ShowDialog1(1) end - if str:find("Êàðòà ñ ïîçèöèåé") then + if str:find("Карта Ñ� позицией") then inifiles.Settings.fastmap = not inifiles.Settings.fastmap settings_save() ShowDialog1(1) end - if str:find("Ñêðûâàòü ÷àò ïðîôñîþçà") then + if str:find("Скрывать чат профÑ�оюза") then inifiles.Settings.ChatOFF = not inifiles.Settings.ChatOFF settings_save() ShowDialog1(1) end - if str:find("òîëüêî â ôóðå") then + if str:find("только в фуре") then inifiles.Settings.chat_in_truck = not inifiles.Settings.chat_in_truck settings_save() ShowDialog1(1) end - if str:find("Îòïðàâêà ìîíèòîðèíãà â ÷àò") then + if str:find("Отправка мониторинга в чат") then inifiles.Settings.ChatDoklad = not inifiles.Settings.ChatDoklad settings_save() ShowDialog1(1) end - if str:find("Âûäåëåíèå Ïîðòîâ") then + if str:find("Выделение Портов") then inifiles.Settings.highlight_jf = not inifiles.Settings.highlight_jf settings_save() ShowDialog1(1) end - if str:find("Âûäåëåíèå öåíû") then + if str:find("Выделение цены") then inifiles.Settings.LightingPrice = not inifiles.Settings.LightingPrice settings_save() ShowDialog1(1) end - if str:find("Öâåò ïîäñâåòêè íàïàðíèêà") then + if str:find("Цвет подÑ�ветки напарника") then if dialogTextToList[list + 1] ~= nil then ShowDialog1( 2, @@ -746,12 +749,12 @@ function doDialog() ) end end - if str:find("Øðèôò") then + if str:find("Шрифт") then if dialogTextToList[list + 1] ~= nil then ShowDialog1(2, dialogTextToList[list + 1], inifiles.Render.FontName, true, "Render", "FontName") end end - if str:find("Ðàçìåð") then + if str:find("Размер") then if dialogTextToList[list + 1] ~= nil then ShowDialog1( 2, @@ -763,7 +766,7 @@ function doDialog() ) end end - if str:find("Ñòèëü") then + if str:find("Стиль") then if dialogTextToList[list + 1] ~= nil then ShowDialog1( 2, @@ -775,72 +778,72 @@ function doDialog() ) end end - if str:find("Öâåò ïåðâûé") then + if str:find("Цвет первый") then if dialogTextToList[list + 1] ~= nil then ShowDialog1(2, dialogTextToList[list + 1], inifiles.Render.Color1, true, "Render", "Color1") end end - if str:find("Öâåò âòîðîé") then + if str:find("Цвет второй") then if dialogTextToList[list + 1] ~= nil then ShowDialog1(2, dialogTextToList[list + 1], inifiles.Render.Color2, true, "Render", "Color2") end end - if str:find("Öåíà àâòî%-çàãðóçêè") then + if str:find("Цена авто%-загрузки") then if dialogTextToList[list + 1] ~= nil then ShowDialog1(2, dialogTextToList[list + 1], inifiles.Price.Load, false, "Price", "Load") end end - if str:find("Öåíà àâòî%-ðàçãðóçêè") then + if str:find("Цена авто%-разгрузки") then if dialogTextToList[list + 1] ~= nil then ShowDialog1(2, dialogTextToList[list + 1], inifiles.Price.UnLoad, false, "Price", "UnLoad") end end - if str:find("Êíîïêà îòîáðàæåíèÿ ìåíþ") then + if str:find("Кнопка отображениÑ� меню") then ShowDialog1(4, 1) end - if str:find("Çàäåðæêà") then + if str:find("Задержка") then inifiles.Settings.AutoWait = not inifiles.Settings.AutoWait settings_save() ShowDialog1(1) end - if str:find("Êíîïêà äëÿ ðàáîòû áåç ôóðû") then + if str:find("Кнопка длÑ� работы без фуры") then ShowDialog1(4, 2) end - if str:find("Êíîïêà äëÿ îòîáðàæåíèÿ êàðòû") then + if str:find("Кнопка длÑ� отображениÑ� карты") then ShowDialog1(4, 3) end - if str:find("Ëîêàëüíàÿ áëîêèðîâêà ó÷àñòíèêîâ") then + if str:find("ЛокальнаÑ� блокировка учаÑ�тников") then LocalBlock(1) end - if str:find("Óâåäîìëåíèÿ êîãäà Âàñ óñòàíîâèëè íàïàðíèêîì") then + if str:find("УведомлениÑ� когда ВаÑ� уÑ�тановили напарником") then inifiles.Settings.NewPairMSG = not inifiles.Settings.NewPairMSG settings_save() ShowDialog1(1) end - if str:find("Àâòî%-Î÷èñòêà íåèñïîëüçóåìîé ïàìÿòè ñêðèïòà") then + if str:find("Ð�вто%-ОчиÑ�тка неиÑ�пользуемой памÑ�ти Ñ�крипта") then inifiles.Settings.AutoClear = not inifiles.Settings.AutoClear settings_save() ShowDialog1(1) end - if str:find("Î÷èñòèòü íåèñïîëüçóåìóþ ïàìÿòü ñêðèïòà") then + if str:find("ОчиÑ�тить неиÑ�пользуемую памÑ�ть Ñ�крипта") then local mem_do = string.format('%0.2f MB', (tonumber(gcinfo()) / 1000)) collectgarbage("step") - sampAddChatMessage('Ïàìÿòè î÷èùåíà. Áûëî: '..mem_do..'. Ñòàëî: '..string.format('%0.2f MB', (tonumber(gcinfo()) / 1000)), -1) + sampAddChatMessage('ПамÑ�ти очищена. Было: '..mem_do..'. Стало: '..string.format('%0.2f MB', (tonumber(gcinfo()) / 1000)), -1) ShowDialog1(1) end - if str:find("Ïîäðîáíàÿ ñòàòèñòèêà") then + if str:find("ПодробнаÑ� Ñ�татиÑ�тика") then ShowStats(1) end - if str:find("Êîíòàêòû àâòîðà") then + if str:find("Контакты автора") then ShowDialog1(3) end - if str:find("Ïåðåçàãðóçêà ñêðèïòà") then + if str:find("Перезагрузка Ñ�крипта") then thisScript():reload() end end end end - if caption == "Truck-HUD: Èçìåíåíèå íàñòðîåê" then + if caption == "Truck-HUD: Изменение наÑ�троек" then if d[7] then d[7] = false sampSetCurrentDialogEditboxText(inifiles[d[5]][d[6]]) @@ -870,7 +873,7 @@ function doDialog() end end end - if caption == "Truck-HUD: Ðåäàêòîð HUD" then + if caption == "Truck-HUD: Редактор HUD" then if result then if button == 1 then local text = getClipboardText() @@ -885,7 +888,7 @@ function doDialog() ShowDialog1(1) end end - if caption == "Truck-HUD: Êîíòàêòû àâòîðà" then + if caption == "Truck-HUD: Контакты автора" then if result then if button == 1 then if list == 0 then @@ -909,7 +912,7 @@ function doDialog() end end end - if caption == 'Truck-HUD: Áèíäåð' then + if caption == 'Truck-HUD: Биндер' then if result then if button == 1 and #input > 0 then if d[2] == 1 then @@ -930,12 +933,12 @@ function doDialog() end end end - if caption == "Truck-HUD: Ñòàòèñòèêà" then + if caption == "Truck-HUD: СтатиÑ�тика" then if result then WhileShowStats(button, list) end end - if caption == "Truck-HUD: Ðåæèì ïàðû" then + if caption == "Truck-HUD: Режим пары" then if result then if button == 1 then if string.find(input, "(%d+)") then @@ -944,7 +947,7 @@ function doDialog() error_message(1, '') para_message_send = nil pair_mode_name = sampGetPlayerNickname(pair_mode_id) - menu[4][1] = "SMS » " .. pair_mode_name .. "[" .. pair_mode_id .. "]" + menu[4][1] = "SMS » " .. pair_mode_name .. "[" .. pair_mode_id .. "]" pair_mode = true menu[4].run = true transponder_delay = 100 @@ -952,7 +955,7 @@ function doDialog() pair_mode_id = -1 pair_mode = false menu[4].run = false - sampAddChatMessage("Îøèáêà! Èãðîê ïîä ýòèì ID íå â ñåòè.", -1) + sampAddChatMessage("Ошибка! Игрок под Ñ�тим ID не в Ñ�ети.", -1) end end else @@ -969,13 +972,13 @@ function doPair() pair_mode = false menu[4].run = false sampAddChatMessage( - "Íàïàðíèê " .. pair_mode_name .. "[" .. pair_mode_id .. "]" .. " âûøåë èç èãðû. Ðåæèì ïàðû âûêëþ÷åí.", + "Ð�апарник " .. pair_mode_name .. "[" .. pair_mode_id .. "]" .. " вышел из игры. Режим пары выключен.", -1 ) if auto then auto = false menu[2].run = false - sampAddChatMessage("Ðåæèì ÀÂÒÎ TruckHUD âûêëþ÷åí!", -1) + sampAddChatMessage("Режим Ð�ВТО TruckHUD выключен!", -1) end end @@ -1107,7 +1110,7 @@ function doRenderStats() local down = (renderGetFontDrawHeight(font) / 6) local height = (renderGetFontDrawHeight(font) - (renderGetFontDrawHeight(font) / 20)) if control then - if drawClickableText("{" .. c2 .. "}[Ñìåíà ïîçèöèè]", X, Y) then + if drawClickableText("{" .. c2 .. "}[Смена позиции]", X, Y) then pos[1] = true end end @@ -1134,21 +1137,21 @@ function doRenderStats() (timer_secc >= 0 and (workload == 1 and string.format( - "{%s}Äî ðàçãðóçêè {%s}%d:%02d", + "{%s}До разгрузки {%s}%d:%02d", inifiles.Render.Color1, (timer_secc <= 10 and "b50000" or inifiles.Render.Color2), timer_min, timer_sec ) or string.format( - "{%s}Äî çàãðóçêè {%s}%d:%02d", + "{%s}До загрузки {%s}%d:%02d", inifiles.Render.Color1, (timer_secc <= 10 and "b50000" or inifiles.Render.Color2), timer_min, timer_sec )) or - (workload == 1 and string.format("{%s}Ìîæíî ðàçãðóæàòü", inifiles.Render.Color1) or - string.format("{%s}Ìîæíî çàãðóæàòü", inifiles.Render.Color1))) + (workload == 1 and string.format("{%s}Можно разгружать", inifiles.Render.Color1) or + string.format("{%s}Можно загружать", inifiles.Render.Color1))) if auto then if control then local delta = getMousewheelDelta() @@ -1181,11 +1184,11 @@ function doRenderStats() then if workload == 1 then if unload_location then - local dp = {ls = "sf", sf = "ls"} -- îïðåäåëèòü ïîðò - local dport, ds = string.match(current_warehouse, "(..)(.)") -- ìåñòî çàãðóçêè + local dp = {ls = "sf", sf = "ls"} -- определить порт + local dport, ds = string.match(current_warehouse, "(..)(.)") -- меÑ�то загрузки local dcena = (inifiles.tmonitor[dp[dport] .. ds] + inifiles.tmonitor[current_warehouse]) - prices_3dtext[current_warehouse] - -- öåíà â äðóãîì ïîðòó f= öåíà ãðóçà â äðóãîì ïîðòó + öåíà â ýòîì ïîðòó - öåíà íà 3D òåêñòå ýòîì ïîðòó + -- цена в другом порту f= цена груза в другом порту + цена в Ñ�том порту - цена на 3D текÑ�те Ñ�том порту if inifiles.Price.UnLoad ~= 0 then if price_frozen then if tonumber(prices_3dtext[current_warehouse]) == tonumber(inifiles.Price.UnLoad) then @@ -1267,7 +1270,7 @@ function doRenderStats() end end drawClickableText(strok, X, Y) - local stats_array = split(inifiles.Settings.stats_text, '!n!') + local stats_array = split(inifiles.Settings.stats_text,'!n!') local stats_info = { ['!m!'] = string.format('%0.2f mb', (tonumber(gcinfo()) / 1000)), ['!skill!'] = inifiles.Trucker.Skill, @@ -1326,7 +1329,7 @@ end function renderStringMON(X, Y, dist, text1, text2, sendtext1, sendtext2, dist2, text3, text4, sendtext3, sendtext4) if drawClickableText(text1, X, Y) then - sampSendChat( string.format("%s %s ì.", sendtext1, dist) ) + sampSendChat( string.format("%s %s м.", sendtext1, dist) ) end local x = (X + renderGetFontDrawTextLength(font, text1)) if drawClickableText(text2, x, Y) then @@ -1335,7 +1338,7 @@ function renderStringMON(X, Y, dist, text1, text2, sendtext1, sendtext2, dist2, local x = x + renderGetFontDrawTextLength(font, text2) if drawClickableText(text3, x, Y) then - sampSendChat( string.format("%s %s ì.", sendtext3, dist2) ) + sampSendChat( string.format("%s %s м.", sendtext3, dist2) ) end if drawClickableText(text4, x + renderGetFontDrawTextLength(font, text3), Y) then sampSendChat( string.format("%s", sendtext4) ) @@ -1362,7 +1365,7 @@ function doRenderMon() stimer = (A2 >= A1 and A1 or A2) local hour, minute, second = stimer / 3600, math.floor(stimer / 60), stimer % 60 send_time_mon = (hour >= 1 and string.format("%02d:%02d:%02d", math.floor(hour), minute - (math.floor(hour) * 60), second) or string.format("%02d:%02d", minute, second)) - rdtext = string.format("Ñêëàäû. %s", send_time_mon) + rdtext = string.format("Склады. %s", send_time_mon) if drawClickableText(rdtext, X, Y) then transponder_delay = 100 end @@ -1372,12 +1375,12 @@ function doRenderMon() local pX, pY, pZ = getDeadCharCoordinates(PLAYER_PED) local replace_location = { - ["Í1"] = { "Íåôòåçàâîä ¹1", "n1", "Íåôòü 1" }, - ["Í2"] = { "Íåôòåçàâîä ¹2", "n2", "Íåôòü 2" }, - ["Ó1"] = { "Ñêëàä Óãëÿ ¹1", "y1", "Óãîëü 1" }, - ["Ó2"] = { "Ñêëàä Óãëÿ ¹2", "y2", "Óãîëü 2" }, - ["Ë1"] = { "Ëåñîïèëêó ¹1", "l1", "Ëåñ 1" }, - ["Ë2"] = { "Ëåñîïèëêó ¹2", "l2", "Ëåñ 2" } + ["Ð�1"] = { "Ð�ефтезавод â„–1", "n1", "Ð�ефть 1" }, + ["Ð�2"] = { "Ð�ефтезавод â„–2", "n2", "Ð�ефть 2" }, + ["У1"] = { "Склад УглÑ� â„–1", "y1", "Уголь 1" }, + ["У2"] = { "Склад УглÑ� â„–2", "y2", "Уголь 2" }, + ["Л1"] = { "ЛеÑ�опилку â„–1", "l1", "ЛеÑ� 1" }, + ["Л2"] = { "ЛеÑ�опилку â„–2", "l2", "ЛеÑ� 2" } } local text_chat = "/jf chat " @@ -1385,15 +1388,15 @@ function doRenderMon() text_chat = "/sms "..pair_mode_id.." " end - local text_render_mon = { "Í1", "Í2", "Ó1", "Ó2", "Ë1", "Ë2" } + local text_render_mon = { "Ð�1", "Ð�2", "У1", "У2", "Л1", "Л2" } local newX = X Y = Y + height for i = 1, #text_render_mon do local pos = location_pos[replace_location[text_render_mon[i]][3]] local text_render_1 = string.format(" {%s}%s: ", c1, text_render_mon[i]) local text_render_2 = string.format("{%s}%03d", c2, prices_mon[replace_location[text_render_mon[i]][2]]) - local text_send_1 = string.format("%sÅäó íà %s. Äî öåëè: %d ì.", text_chat, replace_location[text_render_mon[i]][1], math.ceil(getDistanceBetweenCoords3d(pX, pY, pZ, pos.x, pos.y, pos.z)) ) - local text_send_2 = string.format("%sÊòî åäåò íà %s?", text_chat, replace_location[text_render_mon[i]][1]) + local text_send_1 = string.format("%sЕду на %s. До цели: %d м.", text_chat, replace_location[text_render_mon[i]][1], math.ceil(getDistanceBetweenCoords3d(pX, pY, pZ, pos.x, pos.y, pos.z)) ) + local text_send_2 = string.format("%sКто едет на %s?", text_chat, replace_location[text_render_mon[i]][1]) if drawClickableText(text_render_1, newX, Y) then sampSendChat(text_send_1) @@ -1412,49 +1415,49 @@ function doRenderMon() if control and workload == 1 then if drawClickableText("?", X - renderGetFontDrawTextLength(font, " "), Y) then - sampSendChat(text_chat .. what_is_uploaded[current_load] .. " â ËÑ åäåò?") + sampSendChat(text_chat .. what_is_uploaded[current_load] .. " в ЛС едет?") end end - local string = string.format("{%s}Ïîðò ËÑ.\n Í: {%s}%03d {%s}Ó: {%s}%03d {%s}Ë: {%s}%03d", c1, c2, prices_mon.lsn, c1, c2, prices_mon.lsy, c1, c2, prices_mon.lsl) + local string = string.format("{%s}Порт ЛС.\n Ð�: {%s}%03d {%s}У: {%s}%03d {%s}Л: {%s}%03d", c1, c2, prices_mon.lsn, c1, c2, prices_mon.lsy, c1, c2, prices_mon.lsl) if drawClickableText(string, X, Y) then - local dist = getDistanceBetweenCoords3d(pX, pY, pZ, location_pos["Ïîðò ËÑ"].x, location_pos["Ïîðò ËÑ"].y, location_pos["Ïîðò ËÑ"].z) + local dist = getDistanceBetweenCoords3d(pX, pY, pZ, location_pos["Порт ЛС"].x, location_pos["Порт ЛС"].y, location_pos["Порт ЛС"].z) if workload ~= 0 then - local text = string.format("%sÂåçó %s â Ïîðò ËÑ. Äî öåëè: %0.2d ì.", text_chat, what_is_uploaded[current_load], dist) + local text = string.format("%sВезу %s в Порт ЛС. До цели: %0.2d м.", text_chat, what_is_uploaded[current_load], dist) sampSendChat(text) else - local text = string.format("%sÅäó â Ïîðò ËÑ. Äî öåëè: %0.2d ì.", text_chat, dist) + local text = string.format("%sЕду в Порт ЛС. До цели: %0.2d м.", text_chat, dist) sampSendChat(text) end end Y = Y + (height * 2) if control and workload == 1 then if drawClickableText("?", X - renderGetFontDrawTextLength(font, " "), Y) then - sampSendChat("/jf chat " .. what_is_uploaded[current_load] .. " â ÑÔ åäåò?") + sampSendChat("/jf chat " .. what_is_uploaded[current_load] .. " в СФ едет?") end end - local string = string.format("{%s}Ïîðò ÑÔ.\n Í: {%s}%03d {%s}Ó: {%s}%03d {%s}Ë: {%s}%03d", c1, c2, prices_mon.sfn, c1, c2, prices_mon.sfy, c1, c2, prices_mon.sfl) + local string = string.format("{%s}Порт СФ.\n Ð�: {%s}%03d {%s}У: {%s}%03d {%s}Л: {%s}%03d", c1, c2, prices_mon.sfn, c1, c2, prices_mon.sfy, c1, c2, prices_mon.sfl) if drawClickableText(string, X, Y) then - local dist = getDistanceBetweenCoords3d(pX, pY, pZ, location_pos["Ïîðò ÑÔ"].x, location_pos["Ïîðò ÑÔ"].y, location_pos["Ïîðò ÑÔ"].z) + local dist = getDistanceBetweenCoords3d(pX, pY, pZ, location_pos["Порт СФ"].x, location_pos["Порт СФ"].y, location_pos["Порт СФ"].z) if workload ~= 0 then - local text = string.format("%sÂåçó %s â Ïîðò ÑÔ. Äî öåëè: %0.2d ì.", text_chat, what_is_uploaded[current_load], dist) + local text = string.format("%sВезу %s в Порт СФ. До цели: %0.2d м.", text_chat, what_is_uploaded[current_load], dist) sampSendChat(text) else - local text = string.format("%sÅäó â Ïîðò ÑÔ. Äî öåëè: %0.2d ì.", text_chat, dist) + local text = string.format("%sЕду в Порт СФ. До цели: %0.2d м.", text_chat, dist) sampSendChat(text) end end if control then Y = Y + (height * 2) - if drawClickableText("{" .. inifiles.Render.Color2 .. "}[Ñìåíà ïîçèöèè]", X, Y) then + if drawClickableText("{" .. inifiles.Render.Color2 .. "}[Смена позиции]", X, Y) then pos[2] = true end Y = Y + height - if drawClickableText("{" .. inifiles.Render.Color2 .. "}[Îòïðàâèòü â ÷àò]", X, Y) then + if drawClickableText("{" .. inifiles.Render.Color2 .. "}[Отправить в чат]", X, Y) then if (unload_location or load_location) then delay.mon = 1 delay.chatMon = -1 else - SendMonText = string.format("/jf chat [ËÑ H:%d Ó:%d Ë:%d] [1 H:%d Ó:%d Ë:%d] [2 H:%d Ó:%d Ë:%d] [CÔ H:%d Ó:%d Ë:%d] [%s]", (prices_mon.lsn / 100), (prices_mon.lsy / 100), (prices_mon.lsl / 100), (prices_mon.n1 / 100), (prices_mon.y1 / 100), (prices_mon.l1 / 100), (prices_mon.n2 / 100), (prices_mon.y2 / 100), (prices_mon.l2 / 100), (prices_mon.sfn / 100), (prices_mon.sfy / 100), (prices_mon.sfl / 100), send_time_mon) + SendMonText = string.format("/jf chat [ЛС H:%d У:%d Л:%d] [1 H:%d У:%d Л:%d] [2 H:%d У:%d Л:%d] [CФ H:%d У:%d Л:%d] [%s]", (prices_mon.lsn / 100), (prices_mon.lsy / 100), (prices_mon.lsl / 100), (prices_mon.n1 / 100), (prices_mon.y1 / 100), (prices_mon.l1 / 100), (prices_mon.n2 / 100), (prices_mon.y2 / 100), (prices_mon.l2 / 100), (prices_mon.sfn / 100), (prices_mon.sfy / 100), (prices_mon.sfl / 100), send_time_mon) sampSendChat(SendMonText) end end @@ -1475,46 +1478,46 @@ function doRenderBind() if script_run and inifiles.Settings.Binder and control or pos[3] then local X, Y = inifiles.Settings.X3, inifiles.Settings.Y3 local plus = (renderGetFontDrawHeight(font) + (renderGetFontDrawHeight(font) / 10)) - if drawClickableText("{" .. inifiles.Render.Color2 .. "}[Ñìåíà ïîçèöèè]", X, Y) then + if drawClickableText("{" .. inifiles.Render.Color2 .. "}[Смена позиции]", X, Y) then pos[3] = true end if pair_mode then local color = (binder_mode_sms and "{06940f}" or "{d10000}") - if drawClickableText(color.."[SMS]", X + renderGetFontDrawTextLength(font,"[Ñìåíà ïîçèöèè] "), Y) then + if drawClickableText(color.."[SMS]", X + renderGetFontDrawTextLength(font,"[Смена позиции] "), Y) then binder_mode_sms = not binder_mode_sms end end local array = (binder_mode_sms and inifiles.binder_sms or inifiles.binder) for k, string in pairs(array) do old_string = string - if string.find(string, "!ÍèêÏàðû") then + if string.find(string, "!Ð�икПары") then local nick = " " if sampIsPlayerConnected(pair_mode_id) then nick = sampGetPlayerNickname(pair_mode_id):gsub("_", " ") end - string = string:gsub("!ÍèêÏàðû", nick) + string = string:gsub("!Ð�икПары", nick) end - if string.find(string, "!ÈäÏàðû") then - string = string:gsub("!ÈäÏàðû", pair_mode_id) + if string.find(string, "!ИдПары") then + string = string:gsub("!ИдПары", pair_mode_id) end - if string.find(string, "!ÊÄ") then + if string.find(string, "!КД") then local min, sec = timer_min, timer_sec if min < 0 then min, sec = 0, 0 end - string = string:gsub("!ÊÄ", string.format("%d:%02d", min, sec)) + string = string:gsub("!КД", string.format("%d:%02d", min, sec)) end - if string.find(string, "!Ãðóç") then - string = string:gsub("!Ãðóç", what_is_uploaded[current_load]) + if string.find(string, "!Груз") then + string = string:gsub("!Груз", what_is_uploaded[current_load]) end - if string.find(string, "!Ìåñòî") then + if string.find(string, "!МеÑ�то") then local x, y, z = getCharCoordinates(playerPed) local pos = FindSklad(x, y, z) - string = string:gsub("!Ìåñòî", string.format("%s (%s m)", pos.text, math.ceil(pos.dist))) + string = string:gsub("!МеÑ�то", string.format("%s (%s m)", pos.text, math.ceil(pos.dist))) end Y = Y + plus if drawClickableText(string, X, Y) then sampSendChat(string) end - if drawClickableText("{ff0000}õ", (X + renderGetFontDrawTextLength(font, string .. " ")), Y) then + if drawClickableText("{ff0000}Ñ…", (X + renderGetFontDrawTextLength(font, string .. " ")), Y) then if not binder_mode_sms then table.remove(inifiles.binder, k) else @@ -1528,7 +1531,7 @@ function doRenderBind() end end Y = Y + plus - if drawClickableText("{12a61a}Äîáàâèòü ñòðîêó", X, Y) then + if drawClickableText("{12a61a}Добавить Ñ�троку", X, Y) then ShowDialog1(7, 1) end end @@ -1574,8 +1577,8 @@ end function LocalBlock(int, param) if int == 1 then - dialogText = 'Áëîêèðîâêà ìîíèòîðèíãà îò ïîëüçîâàòåëåé\nÁëîêèðîâêà ìîíèòîðèíãà ñ õîñòèíãà\nÁëîêèðîâêà ìîíèòîðèíãà èç ÷àòà\nÐåæèì: '..(inifiles.Settings.blacklist_inversion and 'Êàê áåëûé ñïèñîê' or 'Êàê ÷åðíûé ñïèñîê') - sampShowDialog(222, 'Truck-HUD: Áëîêèðîâêà [1]', dialogText, 'Âûáðàòü', 'Çàêðûòü', 5) + dialogText = 'Блокировка мониторинга от пользователей\nБлокировка мониторинга Ñ� хоÑ�тинга\nБлокировка мониторинга из чата\nРежим: '..(inifiles.Settings.blacklist_inversion and 'Как белый Ñ�пиÑ�ок' or 'Как черный Ñ�пиÑ�ок') + sampShowDialog(222, 'Truck-HUD: Блокировка [1]', dialogText, 'Выбрать', 'Закрыть', 5) end if int == 2 then dialogFunc = {} @@ -1583,21 +1586,21 @@ function LocalBlock(int, param) for k, v in pairs(base) do if v.tmonitor ~= nil and v.tmonitor.lsn ~= nil then local color = ( inifiles.blacklist[k] == nil and 'FFFFFF' or ( inifiles.blacklist[k] == true and 'fa3620' or 'FFFFFF')) - dialogText = string.format('%s{%s}Èãðîê: %s\tÂðåìÿ ìîíèòîðèíãà: %s\n', dialogText, color, k, (msk_timestamp - v.tmonitor.time)) + dialogText = string.format('%s{%s}Игрок: %s\tВремÑ� мониторинга: %s\n', dialogText, color, k, (msk_timestamp - v.tmonitor.time)) dialogFunc[#dialogFunc + 1] = function() if inifiles.blacklist[k] == nil then inifiles.blacklist[k] = false end inifiles.blacklist[k] = not inifiles.blacklist[k] end - dialogText = string.format('%s{%s}[ËÑ Í:%s Ó:%s Ë:%s] [1 Í:%s Ó:%s Ë:%s] [2 Í:%s Ó:%s Ë:%s] [CÔ Í:%s Ó:%s Ë:%s\n', dialogText, color, v.tmonitor.lsn, v.tmonitor.lsy,v.tmonitor.lsl,v.tmonitor.n1,v.tmonitor.y1,v.tmonitor.l1,v.tmonitor.n2,v.tmonitor.y2, v.tmonitor.l2, v.tmonitor.sfn,v.tmonitor.sfy,v.tmonitor.sfl) + dialogText = string.format('%s{%s}[ЛС Ð�:%s У:%s Л:%s] [1 Ð�:%s У:%s Л:%s] [2 Ð�:%s У:%s Л:%s] [CФ Ð�:%s У:%s Л:%s\n', dialogText, color, v.tmonitor.lsn, v.tmonitor.lsy,v.tmonitor.lsl,v.tmonitor.n1,v.tmonitor.y1,v.tmonitor.l1,v.tmonitor.n2,v.tmonitor.y2, v.tmonitor.l2, v.tmonitor.sfn,v.tmonitor.sfy,v.tmonitor.sfl) dialogFunc[#dialogFunc + 1] = dialogFunc[#dialogFunc] dialogText = string.format('%s \n', dialogText) dialogFunc[#dialogFunc + 1] = dialogFunc[#dialogFunc] end end settings_save() - sampShowDialog(222, 'Truck-HUD: Áëîêèðîâêà [2]', dialogText, 'Âûáðàòü', 'Íàçàä', 2) + sampShowDialog(222, 'Truck-HUD: Блокировка [2]', dialogText, 'Выбрать', 'Ð�азад', 2) end if int == 3 then dialogFunc = {} @@ -1605,21 +1608,21 @@ function LocalBlock(int, param) for k, v in pairs(chat_mon) do if v ~= nil and v.lsn ~= nil then local color = ( inifiles.blacklist[k] == nil and 'FFFFFF' or ( inifiles.blacklist[k] == true and 'fa3620' or 'FFFFFF')) - dialogText = string.format('%s{%s}Èãðîê: %s\tÂðåìÿ ìîíèòîðèíãà: %s\n', dialogText, color, k, (msk_timestamp - v.time)) + dialogText = string.format('%s{%s}Игрок: %s\tВремÑ� мониторинга: %s\n', dialogText, color, k, (msk_timestamp - v.time)) dialogFunc[#dialogFunc + 1] = function() if inifiles.blacklist[k] == nil then inifiles.blacklist[k] = false end inifiles.blacklist[k] = not inifiles.blacklist[k] end - dialogText = string.format('%s{%s}[ËÑ Í:%s Ó:%s Ë:%s] [1 Í:%s Ó:%s Ë:%s] [2 Í:%s Ó:%s Ë:%s] [CÔ Í:%s Ó:%s Ë:%s\n', dialogText, color, v.lsn, v.lsy,v.lsl,v.n1,v.y1,v.l1,v.n2,v.y2, v.l2, v.sfn,v.sfy,v.sfl) + dialogText = string.format('%s{%s}[ЛС Ð�:%s У:%s Л:%s] [1 Ð�:%s У:%s Л:%s] [2 Ð�:%s У:%s Л:%s] [CФ Ð�:%s У:%s Л:%s\n', dialogText, color, v.lsn, v.lsy,v.lsl,v.n1,v.y1,v.l1,v.n2,v.y2, v.l2, v.sfn,v.sfy,v.sfl) dialogFunc[#dialogFunc + 1] = dialogFunc[#dialogFunc] dialogText = string.format('%s \n', dialogText) dialogFunc[#dialogFunc + 1] = dialogFunc[#dialogFunc] end end settings_save() - sampShowDialog(222, 'Truck-HUD: Áëîêèðîâêà [3]', dialogText, 'Âûáðàòü', 'Íàçàä', 2) + sampShowDialog(222, 'Truck-HUD: Блокировка [3]', dialogText, 'Выбрать', 'Ð�азад', 2) end end @@ -1627,7 +1630,7 @@ function ShowStats(int, param) dialogINT = int if int == 1 then dialogKeytoList = { '1' } - dialogText = 'Ñòàòèñòèêà çà âñ¸ âðåìÿ\n' + dialogText = 'СтатиÑ�тика за вÑ�Ñ‘ времÑ�\n' local array = {} for k,v in pairs(inifiles.log) do local day, month, year = string.match(k, '(%d+)%.(%d+)%.%d%d(%d+)') @@ -1642,13 +1645,13 @@ function ShowStats(int, param) end dialogKeytoList[#dialogKeytoList + 1] = 'nil' dialogKeytoList[#dialogKeytoList + 1] = 'del' - dialogText = string.format('%s\n \nÓäàëèòü âñþ ñòàòèñòèêó', dialogText) - sampShowDialog(222, 'Truck-HUD: Ñòàòèñòèêà', dialogText, 'Âûáðàòü', 'Íàçàä', 2) + dialogText = string.format('%s\n \nУдалить вÑ�ÑŽ Ñ�татиÑ�тику', dialogText) + sampShowDialog(222, 'Truck-HUD: СтатиÑ�тика', dialogText, 'Выбрать', 'Ð�азад', 2) end if int == 2 then dialogKeytoList = { param[1], param[1], param[1] } - dialogText = 'Äàòà: '..param[1]..'\nÑòàòèñòèêà\nÓäàëèòü ñòàòèñòèêó' - sampShowDialog(222, 'Truck-HUD: Ñòàòèñòèêà', dialogText, 'Âûáðàòü', 'Íàçàä', 5) + dialogText = 'Дата: '..param[1]..'\nСтатиÑ�тика\nУдалить Ñ�татиÑ�тику' + sampShowDialog(222, 'Truck-HUD: СтатиÑ�тика', dialogText, 'Выбрать', 'Ð�азад', 5) end if int == 3 then dialogKeytoList = {} @@ -1656,7 +1659,7 @@ function ShowStats(int, param) local v = inifiles.log[param[1]][param[2]] if param[2] == 'day' then dialogKeytoList[1] = param[1] - dialogText = string.format('Äàòà: %s{FFFFFF}\nÏîäñ÷åò:\n %d ôóð íà ñóììó %d âèðò\n %d çàãðóçîê íà ñóììó %d âèðò\n %d ðàçãðóçîê íà ñóììó %d âèðò\n %d çàïðàâîê íà ñóììó %d âèðò\n %d ïî÷èíîê íà ñóììó %d âèðò\n %d êàíèñòð íà ñóììó %d âèðò\n %d øòðàôîâ íà ñóììó %d âèðò\nÈòîãè:\n Çàðïëàòà: %d âèðò\n Çàòðàòû: %d âèðò\n Ïðèáûëü: %d âèðò', param[1], + dialogText = string.format('Дата: %s{FFFFFF}\nПодÑ�чет:\n %d фур на Ñ�умму %d вирт\n %d загрузок на Ñ�умму %d вирт\n %d разгрузок на Ñ�умму %d вирт\n %d заправок на Ñ�умму %d вирт\n %d починок на Ñ�умму %d вирт\n %d каниÑ�тр на Ñ�умму %d вирт\n %d штрафов на Ñ�умму %d вирт\nИтоги:\n Зарплата: %d вирт\n Затраты: %d вирт\n Прибыль: %d вирт', param[1], v.arendacount, v.arenda, v.zagruzkacount, v.zagruzka, v.razgruzkacount, v.razgruzka, @@ -1665,11 +1668,11 @@ function ShowStats(int, param) v.kanistrcount, v.kanistr, v.shtrafcount, v.shtraf, v.zp, (v.arenda + v.refill + v.repair + v.kanistr + v.shtraf), v.pribil) - dialogText = string.format('%s\n \n Ëîã äåéñòâèé:\n', dialogText, v) + dialogText = string.format('%s\n \n Лог дейÑ�твий:\n', dialogText, v) for k, v in pairs(inifiles.log[param[1]].event) do dialogText = string.format('%s%s\n', dialogText, v) end - sampShowDialog(222, 'Truck-HUD: Ñòàòèñòèêà', dialogText, 'Âûáðàòü', 'Íàçàä', 5) + sampShowDialog(222, 'Truck-HUD: СтатиÑ�тика', dialogText, 'Выбрать', 'Ð�азад', 5) else local dd = {} local list = 0 @@ -1684,7 +1687,7 @@ function ShowStats(int, param) list = list -1 end end - sampShowDialog(222, 'Truck-HUD: Ñòàòèñòèêà', dialogText, 'Âûáðàòü', 'Íàçàä', 2) + sampShowDialog(222, 'Truck-HUD: СтатиÑ�тика', dialogText, 'Выбрать', 'Ð�азад', 2) end end if int == 4 then @@ -1692,7 +1695,7 @@ function ShowStats(int, param) dialogText = '' local v = inifiles.log[param[1]][param[2]][param[3]] dialogKeytoList[1] = { param[1], param[2] } - dialogText = string.format('{FFFFFF}%02d:00 | %s\n\nÏîäñ÷åò:\n %d ôóð íà ñóììó %d âèðò\n %d çàãðóçîê íà ñóììó %d âèðò\n %d ðàçãðóçîê íà ñóììó %d âèðò\n %d çàïðàâîê íà ñóììó %d âèðò\n %d ïî÷èíîê íà ñóììó %d âèðò\n %d êàíèñòð íà ñóììó %d âèðò\n %d øòðàôîâ íà ñóììó %d âèðò\nÈòîãè:\n Çàðïëàòà: %d âèðò\n Çàòðàòû: %d âèðò\n Ïðèáûëü: %d âèðò', + dialogText = string.format('{FFFFFF}%02d:00 | %s\n\nПодÑ�чет:\n %d фур на Ñ�умму %d вирт\n %d загрузок на Ñ�умму %d вирт\n %d разгрузок на Ñ�умму %d вирт\n %d заправок на Ñ�умму %d вирт\n %d починок на Ñ�умму %d вирт\n %d каниÑ�тр на Ñ�умму %d вирт\n %d штрафов на Ñ�умму %d вирт\nИтоги:\n Зарплата: %d вирт\n Затраты: %d вирт\n Прибыль: %d вирт', tonumber(param[3]), param[1], v.arendacount, v.arenda, v.zagruzkacount, v.zagruzka, @@ -1702,7 +1705,7 @@ function ShowStats(int, param) v.kanistrcount, v.kanistr, v.shtrafcount, v.shtraf, v.zp, (v.arenda + v.refill + v.repair + v.kanistr + v.shtraf), v.pribil) - sampShowDialog(222, 'Truck-HUD: Ñòàòèñòèêà', dialogText, 'Âûáðàòü', 'Íàçàä', 5) + sampShowDialog(222, 'Truck-HUD: СтатиÑ�тика', dialogText, 'Выбрать', 'Ð�азад', 5) end if int == 5 then local all = { @@ -1731,7 +1734,7 @@ function ShowStats(int, param) all[i] = all[i] + s end end - dialogText = string.format('Ñòàòèñòèêà çà %d ñóòîê{FFFFFF}\nÏîäñ÷åò:\n %d ôóð íà ñóììó %d âèðò\n %d çàãðóçîê íà ñóììó %d âèðò\n %d ðàçãðóçîê íà ñóììó %d âèðò\n %d çàïðàâîê íà ñóììó %d âèðò\n %d ïî÷èíîê íà ñóììó %d âèðò\n %d êàíèñòð íà ñóììó %d âèðò\n %d øòðàôîâ íà ñóììó %d âèðò\nÈòîãè:\n Çàðïëàòà: %d âèðò\n Çàòðàòû: %d âèðò\n Ïðèáûëü: %d âèðò', day, + dialogText = string.format('СтатиÑ�тика за %d Ñ�уток{FFFFFF}\nПодÑ�чет:\n %d фур на Ñ�умму %d вирт\n %d загрузок на Ñ�умму %d вирт\n %d разгрузок на Ñ�умму %d вирт\n %d заправок на Ñ�умму %d вирт\n %d починок на Ñ�умму %d вирт\n %d каниÑ�тр на Ñ�умму %d вирт\n %d штрафов на Ñ�умму %d вирт\nИтоги:\n Зарплата: %d вирт\n Затраты: %d вирт\n Прибыль: %d вирт', day, all.arendacount, all.arenda, all.zagruzkacount, all.zagruzka, all.razgruzkacount, all.razgruzka, @@ -1740,7 +1743,7 @@ function ShowStats(int, param) all.kanistrcount, all.kanistr, all.shtrafcount, all.shtraf, all.zp, (all.arenda + all.refill + all.repair + all.kanistr + all.shtraf), all.pribil) - sampShowDialog(222, 'Truck-HUD: Ñòàòèñòèêà', dialogText, 'Âûáðàòü', 'Íàçàä', 5) + sampShowDialog(222, 'Truck-HUD: СтатиÑ�тика', dialogText, 'Выбрать', 'Ð�азад', 5) end end @@ -1817,167 +1820,167 @@ function ShowDialog1(int, dtext, dinput, string_or_number, ini1, ini2) dialogLine[#dialogLine + 1] = (script_run and "TruckHUD\t{59fc30}ON" or "TruckHUD\t{ff0000}OFF") if script_run then - dialogLine[#dialogLine + 1] = "Ñìåíèòü ïîçèöèþ ñòàòèñòèêè ñ òàéìåðîì\t" - dialogLine[#dialogLine + 1] = "Ñìåíèòü ïîçèöèþ ìîíèòîðèíãà öåí\t" + dialogLine[#dialogLine + 1] = "Сменить позицию Ñ�татиÑ�тики Ñ� таймером\t" + dialogLine[#dialogLine + 1] = "Сменить позицию мониторинга цен\t" if inifiles.Settings.Binder then - dialogLine[#dialogLine + 1] = "Ñìåíèòü ïîçèöèþ áèíäåðà\t" + dialogLine[#dialogLine + 1] = "Сменить позицию биндера\t" end end dialogLine[#dialogLine + 1] = - "Ðåäàêòèðîâàòü ôîðìàò ñòàòèñòèêè\t" + "Редактировать формат Ñ�татиÑ�тики\t" dialogLine[#dialogLine + 1] = "Cruise Control\t" .. (inifiles.Settings.Cruise == true and "{59fc30}ON" or "{ff0000}OFF") - dialogLine[#dialogLine + 1] = "Èíôîðìàöèÿ î íàïàðíèêå íà HUD\t" .. (inifiles.Settings.pairinfo == true and "{59fc30}ON" or "{ff0000}OFF") + dialogLine[#dialogLine + 1] = "ИнформациÑ� о напарнике на HUD\t" .. (inifiles.Settings.pairinfo == true and "{59fc30}ON" or "{ff0000}OFF") - dialogLine[#dialogLine + 1] = "Áèíäåð\t" .. (inifiles.Settings.Binder == true and "{59fc30}ON" or "{ff0000}OFF") + dialogLine[#dialogLine + 1] = "Биндер\t" .. (inifiles.Settings.Binder == true and "{59fc30}ON" or "{ff0000}OFF") - dialogLine[#dialogLine + 1] = "Äîêëàäû ïî êëèêó íà öåíû > â ÑÌÑ íàïàðíèêó\t" .. (inifiles.Settings.binder_sms_mode == true and "{59fc30}ON" or "{ff0000}OFF") + dialogLine[#dialogLine + 1] = "Доклады по клику на цены > в СМС напарнику\t" .. (inifiles.Settings.binder_sms_mode == true and "{59fc30}ON" or "{ff0000}OFF") - dialogLine[#dialogLine + 1] = "Àâòî çàãðóçêà/ðàçãðóçêà\t" .. (auto and "{59fc30}ON" or "{ff0000}OFF") + dialogLine[#dialogLine + 1] = "Ð�вто загрузка/разгрузка\t" .. (auto and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Ðåæèì àâòî çàãðóçêè/ðàçãðóçêè\t" .. - (inifiles.Settings.AutoOFF == true and "{59fc30}Ðàçîâàÿ" or "{59fc30}Ïîñòîÿííàÿ") + "Режим авто загрузки/разгрузки\t" .. + (inifiles.Settings.AutoOFF == true and "{59fc30}РазоваÑ�" or "{59fc30}ПоÑ�тоÑ�ннаÑ�") dialogLine[#dialogLine + 1] = - "Ó÷èòûâàòü ÊÄ íàïàðíèêà â ðåæèìå àâòî çàãðóçêà/ðàçãðóçêà\t" .. + "Учитывать КД напарника в режиме авто загрузка/разгрузка\t" .. (inifiles.Settings.auto_load_unload_kd_pair_use == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Çàäåðæêà ïåðåä àâòî-çàãðóçêîé\t" .. (inifiles.Settings.AutoWait == true and "{59fc30}ON" or "{ff0000}OFF") + "Задержка перед авто-загрузкой\t" .. (inifiles.Settings.AutoWait == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Îñòàíîâêà ôóðû ïîñëå ðàçãðóçêè\t" .. (inifiles.Settings.Stop == true and "{59fc30}ON" or "{ff0000}OFF") + "ОÑ�тановка фуры поÑ�ле разгрузки\t" .. (inifiles.Settings.Stop == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Àâòî Äîêëàäû â ðàöèþ\t" .. (inifiles.Settings.Report == true and "{59fc30}ON" or "{ff0000}OFF") + "Ð�вто Доклады в рацию\t" .. (inifiles.Settings.Report == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Äîêëàäû îò?\t" .. (inifiles.Settings.girl == true and "{59fc30}Æåíùèíû" or "{59fc30}Ìóæ÷èíû") + "Доклады от?\t" .. (inifiles.Settings.girl == true and "{59fc30}Женщины" or "{59fc30}Мужчины") dialogLine[#dialogLine + 1] = - "Àâòî Îòïðàâêà ìîíèòîðèíãà â ÷àò\t" .. (inifiles.Settings.ChatDoklad and "{59fc30}ON" or "{ff0000}OFF") + "Ð�вто Отправка мониторинга в чат\t" .. (inifiles.Settings.ChatDoklad and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - (pair_mode and "Ðåæèì ïàðû\t{59fc30}" .. pair_mode_name .. "[" .. pair_mode_id .. "]" or - "Ðåæèì ïàðû\t{ff0000}OFF") + (pair_mode and "Режим пары\t{59fc30}" .. pair_mode_name .. "[" .. pair_mode_id .. "]" or + "Режим пары\t{ff0000}OFF") - local text = { "{ff0000}OFF", "{59fc30}Íåôòü", "{59fc30}Óãîëü", "{59fc30}Äåðåâî", "{59fc30}Âñå" } + local text = { "{ff0000}OFF", "{59fc30}Ð�ефть", "{59fc30}Уголь", "{59fc30}Дерево", "{59fc30}Ð’Ñ�е" } if text[inifiles.Settings.luCheckerCargo+1] ~= nil then dialogLine[#dialogLine + 1] = - "Ñîëî-÷åêåð\t" .. (text[inifiles.Settings.luCheckerCargo+1]) + "Соло-чекер\t" .. (text[inifiles.Settings.luCheckerCargo+1]) end dialogLine[#dialogLine + 1] = - "Àâòî Äîêëàäû â SMS (ðåæèì ïàðû)\t" .. (inifiles.Settings.SMSpara == true and "{59fc30}ON" or "{ff0000}OFF") + "Ð�вто Доклады в SMS (режим пары)\t" .. (inifiles.Settings.SMSpara == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Ïîäñâåòêà íàïàðíèêà â ÷àòå (ðåæèì ïàðû)\t" .. + "ПодÑ�ветка напарника в чате (режим пары)\t" .. (inifiles.Settings.LightingPara == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Âûäåëåíèå Ïîðòîâ/Ñêëàäîâ/Öåí â äîêëàäàõ\t" .. + "Выделение Портов/Складов/Цен в докладах\t" .. (inifiles.Settings.highlight_jf == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Âûäåëåíèå öåíû òåêóùåãî ãðóçà â ïîðòó\t" .. + "Выделение цены текущего груза в порту\t" .. (inifiles.Settings.LightingPrice == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Ñêðûâàòü ÷àò ïðîôñîþçà\t" .. (inifiles.Settings.ChatOFF == true and "{59fc30}ON" or "{ff0000}OFF") + "Скрывать чат профÑ�оюза\t" .. (inifiles.Settings.ChatOFF == true and "{59fc30}ON" or "{ff0000}OFF") if inifiles.Settings.ChatOFF == false then dialogLine[#dialogLine + 1] = - "×àò ïðîôñîþçà òîëüêî â ôóðå\t" .. (inifiles.Settings.chat_in_truck == true and "{59fc30}ON" or "{ff0000}OFF") + "Чат профÑ�оюза только в фуре\t" .. (inifiles.Settings.chat_in_truck == true and "{59fc30}ON" or "{ff0000}OFF") end dialogLine[#dialogLine + 1] = - "Èíôîðìàöèÿ íà ôóðàõ äàëüíîáîéùèêîâ\t" .. (inifiles.Settings.TruckRender == true and "{59fc30}ON" or "{ff0000}OFF") + "ИнформациÑ� на фурах дальнобойщиков\t" .. (inifiles.Settings.TruckRender == true and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Óáðàòü òþíèíã êîëåñ ñ ôóð\t" .. (inifiles.Settings.Tuning == false and "{59fc30}ON" or "{ff0000}OFF") + "Убрать тюнинг колеÑ� Ñ� фур\t" .. (inifiles.Settings.Tuning == false and "{59fc30}ON" or "{ff0000}OFF") dialogLine[#dialogLine + 1] = - "Ñèíõðîíèçàöèÿ ñ äðóãèìè ïîëüçîâàòåëÿìè\t" .. + "СинхронизациÑ� Ñ� другими пользователÑ�ми\t" .. (inifiles.Settings.transponder == true and "{59fc30}ON" or "{ff0000}OFF") if inifiles.Settings.transponder then dialogLine[#dialogLine + 1] = - "Êàðòà ñ ïîçèöèåé íàïàðíèêà\t".. + "Карта Ñ� позицией напарника\t".. (inifiles.Settings.fastmap == true and "{59fc30}ON" or "{ff0000}OFF") end dialogLine[#dialogLine + 1] = - "Öâåò ïîäñâåòêè íàïàðíèêà\t{" .. inifiles.Settings.ColorPara .. "}" .. inifiles.Settings.ColorPara -- 6 + "Цвет подÑ�ветки напарника\t{" .. inifiles.Settings.ColorPara .. "}" .. inifiles.Settings.ColorPara -- 6 dialogTextToList[#dialogLine] = - "{FFFFFF}Ââåäèòå íîâûé öâåò â HEX\nÏîäîáðàòü öâåò ìîæíî ÷åðåç áðàóçåð\n×òîáû ñêîïèðîâàòü ññûëêó ââåäèòå /truck url" + "{FFFFFF}Введите новый цвет в HEX\nПодобрать цвет можно через браузер\nЧтобы Ñ�копировать Ñ�Ñ�ылку введите /truck url" - dialogLine[#dialogLine + 1] = "Øðèôò\t" .. inifiles.Render.FontName -- 7 - dialogTextToList[#dialogLine] = "{FFFFFF}Ââåäèòå íàçâàíèå øðèôòà" + dialogLine[#dialogLine + 1] = "Шрифт\t" .. inifiles.Render.FontName -- 7 + dialogTextToList[#dialogLine] = "{FFFFFF}Введите название шрифта" - dialogLine[#dialogLine + 1] = "Ðàçìåð\t" .. inifiles.Render.FontSize -- 8 - dialogTextToList[#dialogLine] = "{FFFFFF}Ââåäèòå ðàçìåð øðèôòà" + dialogLine[#dialogLine + 1] = "Размер\t" .. inifiles.Render.FontSize -- 8 + dialogTextToList[#dialogLine] = "{FFFFFF}Введите размер шрифта" - dialogLine[#dialogLine + 1] = "Ñòèëü\t" .. inifiles.Render.FontFlag -- 9 + dialogLine[#dialogLine + 1] = "Стиль\t" .. inifiles.Render.FontFlag -- 9 dialogTextToList[#dialogLine] = - "{FFFFFF}Óñòàíàâëèâàéòå ñòèëü ïóòåì ñëîæåíèÿ.\n\nÒåêñò áåç îñîáåííîñòåé = 0\nÆèðíûé òåêñò = 1\nÍàêëîííîñòü(Êóðñèâ) = 2\nÎáâîäêà òåêñòà = 4\nÒåíü òåêñòà = 8\nÏîä÷åðêíóòûé òåêñò = 16\nÇà÷åðêíóòûé òåêñò = 32\n\nÑòàíäàðò: 13" + "{FFFFFF}УÑ�танавливайте Ñ�тиль путем Ñ�ложениÑ�.\n\nТекÑ�Ñ‚ без оÑ�обенноÑ�тей = 0\nЖирный текÑ�Ñ‚ = 1\nÐ�аклонноÑ�ть(КурÑ�ив) = 2\nОбводка текÑ�та = 4\nТень текÑ�та = 8\nПодчеркнутый текÑ�Ñ‚ = 16\nЗачеркнутый текÑ�Ñ‚ = 32\n\nСтандарт: 13" - dialogLine[#dialogLine + 1] = "Öâåò ïåðâûé\t{" .. inifiles.Render.Color1 .. "}" .. inifiles.Render.Color1 -- 10 + dialogLine[#dialogLine + 1] = "Цвет первый\t{" .. inifiles.Render.Color1 .. "}" .. inifiles.Render.Color1 -- 10 dialogTextToList[#dialogLine] = - "{FFFFFF}Ââåäèòå íîâûé öâåò â HEX\nÏîäîáðàòü öâåò ìîæíî ÷åðåç áðàóçåð\n×òîáû ñêîïèðîâàòü ññûëêó ââåäèòå /truck url" + "{FFFFFF}Введите новый цвет в HEX\nПодобрать цвет можно через браузер\nЧтобы Ñ�копировать Ñ�Ñ�ылку введите /truck url" - dialogLine[#dialogLine + 1] = "Öâåò âòîðîé\t{" .. inifiles.Render.Color2 .. "}" .. inifiles.Render.Color2 -- 11 + dialogLine[#dialogLine + 1] = "Цвет второй\t{" .. inifiles.Render.Color2 .. "}" .. inifiles.Render.Color2 -- 11 dialogTextToList[#dialogLine] = - "{FFFFFF}Ââåäèòå íîâûé öâåò â HEX\nÏîäîáðàòü öâåò ìîæíî ÷åðåç áðàóçåð\n×òîáû ñêîïèðîâàòü ññûëêó ââåäèòå /truck url" + "{FFFFFF}Введите новый цвет в HEX\nПодобрать цвет можно через браузер\nЧтобы Ñ�копировать Ñ�Ñ�ылку введите /truck url" - dialogLine[#dialogLine + 1] = "Öåíà àâòî-çàãðóçêè\t" .. inifiles.Price.Load -- 12 - dialogTextToList[#dialogLine] = "{FFFFFF}Ââåäèòå öåíó Àâòî-Çàãðóçêè" + dialogLine[#dialogLine + 1] = "Цена авто-загрузки\t" .. inifiles.Price.Load -- 12 + dialogTextToList[#dialogLine] = "{FFFFFF}Введите цену Ð�вто-Загрузки" - dialogLine[#dialogLine + 1] = "Öåíà àâòî-ðàçãðóçêè\t" .. inifiles.Price.UnLoad -- 13 - dialogTextToList[#dialogLine] = "{FFFFFF}Ââåäèòå öåíó Àâòî-Ðàçãðóçêè" + dialogLine[#dialogLine + 1] = "Цена авто-разгрузки\t" .. inifiles.Price.UnLoad -- 13 + dialogTextToList[#dialogLine] = "{FFFFFF}Введите цену Ð�вто-Разгрузки" - dialogLine[#dialogLine + 1] = "Êíîïêà îòîáðàæåíèÿ ìåíþ\t" .. inifiles.Settings.Key1:gsub("VK_", "") -- 14 + dialogLine[#dialogLine + 1] = "Кнопка отображениÑ� меню\t" .. inifiles.Settings.Key1:gsub("VK_", "") -- 14 - dialogLine[#dialogLine + 1] = "Êíîïêà äëÿ ðàáîòû áåç ôóðû\t" .. inifiles.Settings.Key2:gsub("VK_", "") -- 15 + dialogLine[#dialogLine + 1] = "Кнопка длÑ� работы без фуры\t" .. inifiles.Settings.Key2:gsub("VK_", "") -- 15 - dialogLine[#dialogLine + 1] = "Êíîïêà äëÿ îòîáðàæåíèÿ êàðòû\t" .. inifiles.Settings.Key3:gsub("VK_", "") -- 16 + dialogLine[#dialogLine + 1] = "Кнопка длÑ� отображениÑ� карты\t" .. inifiles.Settings.Key3:gsub("VK_", "") -- 16 - dialogLine[#dialogLine + 1] = "Êíîïêà äëÿ Cruise Control\t" .. inifiles.Settings.Key4:gsub("VK_", "") -- 16 + dialogLine[#dialogLine + 1] = "Кнопка длÑ� Cruise Control\t" .. inifiles.Settings.Key4:gsub("VK_", "") -- 16 - dialogLine[#dialogLine + 1] = "Ëîêàëüíàÿ áëîêèðîâêà ó÷àñòíèêîâ" + dialogLine[#dialogLine + 1] = "ЛокальнаÑ� блокировка учаÑ�тников" - dialogLine[#dialogLine + 1] = "Óâåäîìëåíèÿ êîãäà Âàñ óñòàíîâèëè íàïàðíèêîì\t" .. (inifiles.Settings.NewPairMSG == true and "{59fc30}ON" or "{ff0000}OFF") + dialogLine[#dialogLine + 1] = "УведомлениÑ� когда ВаÑ� уÑ�тановили напарником\t" .. (inifiles.Settings.NewPairMSG == true and "{59fc30}ON" or "{ff0000}OFF") - dialogLine[#dialogLine + 1] = "Àâòî-Î÷èñòêà íåèñïîëüçóåìîé ïàìÿòè ñêðèïòà\t" .. (inifiles.Settings.AutoClear == true and "{59fc30}ON" or "{ff0000}OFF") + dialogLine[#dialogLine + 1] = "Ð�вто-ОчиÑ�тка неиÑ�пользуемой памÑ�ти Ñ�крипта\t" .. (inifiles.Settings.AutoClear == true and "{59fc30}ON" or "{ff0000}OFF") - dialogLine[#dialogLine + 1] = "Î÷èñòèòü íåèñïîëüçóåìóþ ïàìÿòü ñêðèïòà\t" .. string.format('%0.2f MB', (tonumber(gcinfo()) / 1000)) + dialogLine[#dialogLine + 1] = "ОчиÑ�тить неиÑ�пользуемую памÑ�ть Ñ�крипта\t" .. string.format('%0.2f MB', (tonumber(gcinfo()) / 1000)) - dialogLine[#dialogLine + 1] = "Ïîäðîáíàÿ ñòàòèñòèêà" + dialogLine[#dialogLine + 1] = "ПодробнаÑ� Ñ�татиÑ�тика" - dialogLine[#dialogLine + 1] = "Êîíòàêòû àâòîðà" + dialogLine[#dialogLine + 1] = "Контакты автора" - dialogLine[#dialogLine + 1] = "Ïåðåçàãðóçêà ñêðèïòà" + dialogLine[#dialogLine + 1] = "Перезагрузка Ñ�крипта" local text, list = "", 0 for k, v in pairs(dialogLine) do text = text .. "[" .. list .. "] " .. v .. "\n" list = list + 1 end - sampShowDialog(222, "Truck-HUD: Íàñòðîéêè", text, "Âûáðàòü", "Çàêðûòü", 4) + sampShowDialog(222, "Truck-HUD: Ð�аÑ�тройки", text, "Выбрать", "Закрыть", 4) end if int == 2 then d[7] = true - sampShowDialog(222, "Truck-HUD: Èçìåíåíèå íàñòðîåê", dtext, "Âûáðàòü", "Íàçàä", 1) + sampShowDialog(222, "Truck-HUD: Изменение наÑ�троек", dtext, "Выбрать", "Ð�азад", 1) end if int == 3 then sampShowDialog( 222, - "Truck-HUD: Êîíòàêòû àâòîðà", - "{FFFFFF}Âûáåðè ÷òî ñêîïèðîâàòü\t\nÍèê íà Samp-Rp\tSerhiy_Rubin\nÑòðàíè÷êà {4c75a3}VK{FFFFFF}\tvk.com/id353828351\nÃðóïïà {4c75a3}VK{FFFFFF} ñ ìîäàìè\tvk.com/club161589495\n{10bef2}Skype{FFFFFF}\tserhiyrubin\n{7289da}Discord{FFFFFF}\tSerhiy_Rubin#3391\nÏðîìîêîä\t#rubin", - "Êîïèðîâàòü", - "Íàçàä", + "Truck-HUD: Контакты автора", + "{FFFFFF}Выбери что Ñ�копировать\t\nÐ�ик на Samp-Rp\tSerhiy_Rubin\nСтраничка {4c75a3}VK{FFFFFF}\tvk.com/id353828351\nГруппа {4c75a3}VK{FFFFFF} Ñ� модами\tvk.com/club161589495\n{10bef2}Skype{FFFFFF}\tserhiyrubin\n{7289da}Discord{FFFFFF}\tSerhiy_Rubin#3391\nПромокод\t#rubin", + "Копировать", + "Ð�азад", 5 ) end @@ -1991,10 +1994,10 @@ function ShowDialog1(int, dtext, dinput, string_or_number, ini1, ini2) if not sampIsDialogActive() then sampShowDialog( 222, - "LUA Truck-HUD: Ñìåíà àêòèâàöèè", - "Íàæìèòå íà ëþáóþ êëàâèøó", - "Âûáðàòü", - "Çàêðûòü", + "LUA Truck-HUD: Смена активации", + "Ð�ажмите на любую клавишу", + "Выбрать", + "Закрыть", 0 ) end @@ -2014,10 +2017,10 @@ function ShowDialog1(int, dtext, dinput, string_or_number, ini1, ini2) if int == 7 then sampShowDialog( 222, - "Truck-HUD: Áèíäåð", - "{FFFFFF}Ïîääåðæèâàåò çàìåíû\n!ÍèêÏàðû - Çàìåíèòñÿ íèêîì íàïàðíèêà\n!ÈäÏàðû - Çàìåíèòñÿ íà ID íàïàðíèêà\n!ÊÄ - Çàìåíèòñÿ íà âðåìÿ äî çàãðóçêè/ðàçãðóçêè\n!Ãðóç - Çàìåíèòñÿ íà [Áåç ãðóçà/Íåôòü/Óãîëü/Äåðåâî]\n!Ìåñòî - Çàìåíèòñÿ íà ñêëàä/ïîðò êîòîðûé áëèæå", - "Ñîõðàíèòü", - "Çàêðûòü", + "Truck-HUD: Биндер", + "{FFFFFF}Поддерживает замены\n!Ð�икПары - ЗаменитÑ�Ñ� ником напарника\n!ИдПары - ЗаменитÑ�Ñ� на ID напарника\n!КД - ЗаменитÑ�Ñ� на времÑ� до загрузки/разгрузки\n!Груз - ЗаменитÑ�Ñ� на [Без груза/Ð�ефть/Уголь/Дерево]\n!МеÑ�то - ЗаменитÑ�Ñ� на Ñ�клад/порт который ближе", + "Сохранить", + "Закрыть", 1 ) @@ -2034,54 +2037,54 @@ function ShowDialog1(int, dtext, dinput, string_or_number, ini1, ini2) if int == 8 then sampShowDialog( 222, - "Truck-HUD: Ðåæèì ïàðû", - "\t{FFFFFF}Ââåäèòå ID íàïàðíèêà\nÅìó áóäóò îòñûëàòüñÿ SMS ñîîáùåíèÿ î âàøèõ çàãðóçêàõ/ðàçãðóçêàõ", - "Âûáðàòü", - "Çàêðûòü", + "Truck-HUD: Режим пары", + "\t{FFFFFF}Введите ID напарника\nЕму будут отÑ�ылатьÑ�Ñ� SMS Ñ�ообщениÑ� о ваших загрузках/разгрузках", + "Выбрать", + "Закрыть", 1 ) end if int == 9 then - setClipboardText(inifiles.Settings.stats_text..'\n\n!n! - Äëÿ íîâîé ñòðîêè\n!mn! - Èñïîëüçóåòñÿ äëÿ äâîéíîãî îòñòóïà, ïîñëå !n!\n!skill! - Ñêèëë\n!skill_poc! - Ïðîöåíòû ñêèëëà\n!skill_reys! - Îñòàòîê ðåéñîâ äî íîâîãî ñêèëëà\n!rang! - Ðàíã\n!rang_poc! - Ïðîöåíòû ðàíãà\n!rang_reys! - Îñòàòîê ðåéñîâ äëÿ íîâîãî ðàíãà\n!reys_hour! - Ðåéñîâ â ýòîì ÷àñó\n!reys_day! - Ðåéñîâ çà ñóòêè\n!zp_hour! - Çàðïëàòà â ýòîì ÷àñó\n!all_zp! - Çàðïëàòà çà ñóòêè\n!profit_hour! - Ïðèáûëü â ýòîì ÷àñó\n!profit! - Ïðèáûëü çà ñóòêè') + setClipboardText(inifiles.Settings.stats_text..'\n\n!n! - ДлÑ� новой Ñ�троки\n!mn! - ИÑ�пользуетÑ�Ñ� длÑ� двойного отÑ�тупа, поÑ�ле !n!\n!skill! - Скилл\n!skill_poc! - Проценты Ñ�килла\n!skill_reys! - ОÑ�таток рейÑ�ов до нового Ñ�килла\n!rang! - Ранг\n!rang_poc! - Проценты ранга\n!rang_reys! - ОÑ�таток рейÑ�ов длÑ� нового ранга\n!reys_hour! - РейÑ�ов в Ñ�том чаÑ�у\n!reys_day! - РейÑ�ов за Ñ�утки\n!zp_hour! - Зарплата в Ñ�том чаÑ�у\n!all_zp! - Зарплата за Ñ�утки\n!profit_hour! - Прибыль в Ñ�том чаÑ�у\n!profit! - Прибыль за Ñ�утки') sampShowDialog( 222, - "Truck-HUD: Ðåäàêòîð HUD", - [[{ffffff}Çàìåíû äëÿ ñîñòàâëåíèÿ HUD ñòàòèñòèêè - -{ff0000}ÒÅÊÓÙÈÉ ÒÅÊÑÒ HUD ÏÎÌÅÙÅÍ Â ÂÀØ ÁÓÔÅÐ ÎÁÌÅÍÀ -ÑÂÅÐÍÈÒÅ ÈÃÐÓ -{ff0000}ÎÒÊÐÎÉÒÅ ÁËÎÊÍÎÒ Â WINDOWS È ÂÑÒÀÂÜÒÅ ÒÓÄÀ ÒÅÊÑÒ CTRL + V -{ff0000}ÏÎÑËÅ ÂÍÅÑÅÍÈß ÈÇÌÅÍÅÍÈÉ ÑÊÎÏÈÐÓÉÒÅ ÊÎÄ ÑÒÀÒÈÑÒÈÊÈ -ÐÀÇÂÅÐÍÈÒÅ ÈÃÐÓ È ÍÀÆÌÈÒÅ CÎÕÐÀÍÈÒÜ Â ÄÈÀËÎÃÅ + "Truck-HUD: Редактор HUD", + [[{ffffff}Замены длÑ� Ñ�оÑ�тавлениÑ� HUD Ñ�татиÑ�тики + +{ff0000}ТЕКУЩИЙ ТЕКСТ HUD ПОМЕЩЕÐ� Ð’ Ð’Ð�Ш БУФЕР ОБМЕÐ�Ð� +СВЕРÐ�ИТЕ ИГРУ +{ff0000}ОТКРОЙТЕ БЛОКÐ�ОТ Ð’ WINDOWS И ВСТÐ�ВЬТЕ ТУДÐ� ТЕКСТ CTRL + V +{ff0000}ПОСЛЕ Ð’Ð�ЕСЕÐ�ИЯ ИЗМЕÐ�ЕÐ�ИЙ СКОПИРУЙТЕ КОД СТÐ�ТИСТИКИ +РÐ�ЗВЕРÐ�ИТЕ ИГРУ И Ð�Ð�ЖМИТЕ CОХРÐ�Ð�ИТЬ Ð’ ДИÐ�ЛОГЕ {FFFFFF} -×ÒÎÁÛ ÂÅÐÍÓÒÜ ÂÑÅ ÏÎ ÓÌÎË×ÀÍÈÞ ÑÊÎÏÈÐÓÉÒÅ ÖÈÔÐÓ 0 È ÍÀÆÌÈÒÅ CÎÕÐÀÍÈÒÜ -ÅÑËÈ ÊÎÏÈÐÓÞÒÑß ÈÅÐÎÃËÈÔÛ ÂÌÅÑÒÎ ÐÓÑÑÊÈÕ ÁÓÊ - ÏÎÂÒÎÐÈÒÅ ÂÑÅ ÒÎÆÅ ÑÀÌÎÅ Ñ ÐÓÑÑÊÎÉ ÐÀÊËÀÄÊÎÉ +ЧТОБЫ ВЕРÐ�УТЬ ВСЕ ПО УМОЛЧÐ�Ð�ИЮ СКОПИРУЙТЕ ЦИФРУ 0 И Ð�Ð�ЖМИТЕ CОХРÐ�Ð�ИТЬ +ЕСЛИ КОПИРУЮТСЯ ИЕРОГЛИФЫ ВМЕСТО РУССКИХ БУКВ - ПОВТОРИТЕ ВСЕ ТОЖЕ СÐ�МОЕ С РУССКОЙ РÐ�КЛÐ�ДКОЙ -!n! - Äëÿ íîâîé ñòðîêè -!mn! - Èñïîëüçóåòñÿ äëÿ äâîéíîãî îòñòóïà, ïîñëå !n! +!n! - ДлÑ� новой Ñ�троки +!mn! - ИÑ�пользуетÑ�Ñ� длÑ� двойного отÑ�тупа, поÑ�ле !n! -!skill! - Ñêèëë -!skill_poc! - Ïðîöåíòû ñêèëëà -!skill_reys! - Îñòàòîê ðåéñîâ äî íîâîãî ñêèëëà +!skill! - Скилл +!skill_poc! - Проценты Ñ�килла +!skill_reys! - ОÑ�таток рейÑ�ов до нового Ñ�килла -!rang! - Ðàíã -!rang_poc! - Ïðîöåíòû ðàíãà -!rang_reys! - Îñòàòîê ðåéñîâ äëÿ íîâîãî ðàíãà +!rang! - Ранг +!rang_poc! - Проценты ранга +!rang_reys! - ОÑ�таток рейÑ�ов длÑ� нового ранга -!reys_hour! - Ðåéñîâ â ýòîì ÷àñó -!reys_day! - Ðåéñîâ çà ñóòêè +!reys_hour! - РейÑ�ов в Ñ�том чаÑ�у +!reys_day! - РейÑ�ов за Ñ�утки -!zp_hour! - Çàðïëàòà â ýòîì ÷àñó -!all_zp! - Çàðïëàòà çà ñóòêè +!zp_hour! - Зарплата в Ñ�том чаÑ�у +!all_zp! - Зарплата за Ñ�утки -!zatrat_hour! - Çàòðàòû â ýòîì ÷àñó -!zatrat_day! - Çàòðàòû çà ñóòêè +!zatrat_hour! - Затраты в Ñ�том чаÑ�у +!zatrat_day! - Затраты за Ñ�утки -!profit_hour! - Ïðèáûëü â ýòîì ÷àñó -!profit! - Ïðèáûëü çà ñóòêè]], - "Ñîõðàíèòü", - "Íàçàä", +!profit_hour! - Прибыль в Ñ�том чаÑ�у +!profit! - Прибыль за Ñ�утки]], + "Сохранить", + "Ð�азад", 0 ) end @@ -2132,8 +2135,8 @@ function loadEvents() end if params:lower() == " cmd" then local text = - " /truck hud\tÂêë/Âûêë ñêðèïò\n /truck auto\tÂêë/Âûêë Auto-Load/Unload\n /truck chat\tÂêë/Âûêë äîêëàäû â ðàöèþ\n /truck para\tÂêë/Âûêë ðåæèì ïàðû\n /truck menu\tÌåíþ íàñòðîåê ñêðèïòà\n /truck play\tÄîïîëíèòåëüíîå ìåíþ óïðàâëåíèÿ ñêðèïòîì\n /truck mon [ID]\tÎòïðàâèòü ìîíèòîðèíã äðóãîìó èãðîêó â ÑÌÑ" - sampShowDialog(222, "Êîìàíäû ñêðèïòà TruckHUD", text, "Çàêðûòü", "", 4) + " /truck hud\tВкл/Выкл Ñ�крипт\n /truck auto\tВкл/Выкл Auto-Load/Unload\n /truck chat\tВкл/Выкл доклады в рацию\n /truck para\tВкл/Выкл режим пары\n /truck menu\tМеню наÑ�троек Ñ�крипта\n /truck play\tДополнительное меню управлениÑ� Ñ�криптом\n /truck mon [ID]\tОтправить мониторинг другому игроку в СМС" + sampShowDialog(222, "Команды Ñ�крипта TruckHUD", text, "Закрыть", "", 4) return false end if params:lower() == " hud" then @@ -2148,7 +2151,7 @@ function loadEvents() if params:lower() == " chat" then inifiles.Settings.Report = not inifiles.Settings.Report sampAddChatMessage( - string.format("Àâòî Äîêëàä â ðàöèþ %s", (inifiles.Settings.Report and "àêòèâèðîâàí" or "äåàêòèâèðîâàí")), + string.format("Ð�вто Доклад в рацию %s", (inifiles.Settings.Report and "активирован" or "деактивирован")), 0xFF2f72f7 ) settings_save() @@ -2170,7 +2173,7 @@ function loadEvents() local id = params:lower():match(" mon (%d+)") return { string.format( - "/sms %s [ËÑ H:%d Ó:%d Ë:%d][1 H:%d Ó:%d Ë:%d][2 H:%d Ó:%d Ë:%d][CÔ H:%d Ó:%d Ë:%d]", + "/sms %s [ЛС H:%d У:%d Л:%d][1 H:%d У:%d Л:%d][2 H:%d У:%d Л:%d][CФ H:%d У:%d Л:%d]", id, (prices_mon.lsn / 100), (prices_mon.lsy / 100), @@ -2189,12 +2192,12 @@ function loadEvents() end end if params:lower():find(" server_help") then - sampShowDialog(0, 'TruckHUD: Server Help', [[{FFFFFF} << Îñíîâíûå ïðè÷èíû ïðîáëåì ñîåäèíåíèÿ ñ ñåðâåðîì >> + sampShowDialog(0, 'TruckHUD: Server Help', [[{FFFFFF} << ОÑ�новные причины проблем Ñ�оединениÑ� Ñ� Ñ�ервером >> - 1. Ñåðâåð îòêëþ÷èëñÿ. Ïîñïðàøèâàéòå äðóãèõ äàëüíîáîéùèêîâ íåò ëè ó íèõ òàêîé ïðîáëåìû - Åñëè ó âñåõ òàêàÿ ïðîáëåìà - çíà÷èò ñåðâåð óïàë. Ñîîáùèòå â ãðóïïó ðàçðàáîò÷èêó. + 1. Сервер отключилÑ�Ñ�. ПоÑ�прашивайте других дальнобойщиков нет ли у них такой проблемы + ЕÑ�ли у вÑ�ех такаÑ� проблема - значит Ñ�ервер упал. Сообщите в группу разработчику. - 2. Ó ñêðèïòà íåò äîñòóïà â èíòåðíåò. Óñòàíîâëåí àíòèñòèëëåð.]], 'Çàêðûòü', '', 0) + 2. У Ñ�крипта нет доÑ�тупа в интернет. УÑ�тановлен антиÑ�тиллер.]], 'Закрыть', '', 0) return false end antiflood = os.clock() * 1000 @@ -2208,21 +2211,21 @@ function loadEvents() end function sampev.onServerMessage(color, message) - if message == " Ó âàñ áàí ÷àòà!" then + if message == " У ваÑ� бан чата!" then delay.chatMon = 0 delay.chat = 0 end - if script_run and string.find(message, " Âû çàðàáîòàëè (.+) âèðò%. Äåíüãè áóäóò çà÷èñëåíû íà âàø áàíêîâñêèé ñ÷åò â .+") then - local string = string.match(message, " Âû çàðàáîòàëè (.+) âèðò%. Äåíüãè áóäóò çà÷èñëåíû íà âàø áàíêîâñêèé ñ÷åò â .+") + if script_run and string.find(message, " Ð’Ñ‹ заработали (.+) вирт%. Деньги будут зачиÑ�лены на ваш банковÑ�кий Ñ�чет в .+") then + local string = string.match(message, " Ð’Ñ‹ заработали (.+) вирт%. Деньги будут зачиÑ�лены на ваш банковÑ�кий Ñ�чет в .+") inifiles.log[os.date("%d.%m.%Y", msk_timestamp)].hour[os.date("%H", msk_timestamp)].zp = string:find('/') and string:match('(%d+) /') or string if delay.paycheck == 2 then delay.paycheck = 0 return false end end - if string.find(message, " .+<.+>: .+") and not string.find(message, "%->Âîïðîñ") and inifiles ~= nil then + if string.find(message, " .+<.+>: .+") and not string.find(message, "%->ВопроÑ�") and inifiles ~= nil then if string.find(message, my_nick) then - if string.find(message, "ËÑ Í") then + if string.find(message, "ЛС Ð�") then delay.chatMon = 0 else delay.chat = 0 @@ -2263,14 +2266,14 @@ function loadEvents() end if result ~= "" then message = message:gsub(result, "{ffffff}"..result..paraColor) - if message:find("(ïî %d+)") then - local text = message:match("ïî (%d+)") - message = message:gsub(" ïî "..text, " ïî {ffffff}"..text..paraColor) + if message:find("(по %d+)") then + local text = message:match("по (%d+)") + message = message:gsub(" по "..text, " по {ffffff}"..text..paraColor) end - if message:find(" â ") then - local text = message:match(" â (.+)") + if message:find(" в ") then + local text = message:match(" в (.+)") if text:find(paraColor) then - message = message:gsub(" â ", paraColor.." â {ffffff}") + message = message:gsub(" в ", paraColor.." в {ffffff}") end end sampAddChatMessage(message, color) @@ -2290,10 +2293,10 @@ function loadEvents() if string.find( message, - " (.*)<(.*)>: %[ËÑ Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[1 Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[2 Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[CÔ Í:(%d+) Ó:(%d+) Ë:(%d+)%]" + " (.*)<(.*)>: %[ЛС Ð�:(%d+) У:(%d+) Л:(%d+)%] %[1 Ð�:(%d+) У:(%d+) Л:(%d+)%] %[2 Ð�:(%d+) У:(%d+) Л:(%d+)%] %[CФ Ð�:(%d+) У:(%d+) Л:(%d+)%]" ) then - if (string.find(message, "Êóïèë") or string.find(message, "Ïðîäàë")) then + if (string.find(message, "Купил") or string.find(message, "Продал")) then nick, rank, prices_smon.lsn, @@ -2311,7 +2314,7 @@ function loadEvents() _ = string.match( message, - " (.*)%[.+%]<(.*)>: %[ËÑ Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[1 Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[2 Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[CÔ Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[(.*)%]" + " (.*)%[.+%]<(.*)>: %[ЛС Ð�:(%d+) У:(%d+) Л:(%d+)%] %[1 Ð�:(%d+) У:(%d+) Л:(%d+)%] %[2 Ð�:(%d+) У:(%d+) Л:(%d+)%] %[CФ Ð�:(%d+) У:(%d+) Л:(%d+)%] %[(.*)%]" ) else nick, @@ -2330,7 +2333,7 @@ function loadEvents() prices_smon.sfl = string.match( message, - " (.*)%[.+%]<(.*)>: %[ËÑ Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[1 Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[2 Í:(%d+) Ó:(%d+) Ë:(%d+)%] %[CÔ Í:(%d+) Ó:(%d+) Ë:(%d+)%]" + " (.*)%[.+%]<(.*)>: %[ЛС Ð�:(%d+) У:(%d+) Л:(%d+)%] %[1 Ð�:(%d+) У:(%d+) Л:(%d+)%] %[2 Ð�:(%d+) У:(%d+) Л:(%d+)%] %[CФ Ð�:(%d+) У:(%d+) Л:(%d+)%]" ) end chat_mon[nick] = prices_smon @@ -2356,25 +2359,25 @@ function loadEvents() end end - if string.find(message, " Íåôòü: (%d+) / (%d+)") then + if string.find(message, " Ð�ефть: (%d+) / (%d+)") then if current_load ~= 0 then check_noLoad = true end - local S1, S2 = string.match(message, " Íåôòü: (%d+) / (%d+)") + local S1, S2 = string.match(message, " Ð�ефть: (%d+) / (%d+)") if tonumber(S1) ~= 0 then current_load = 1 check_noLoad = false end end - if string.find(message, " Óãîëü: (%d+) / (%d+)") then - local S1, S2 = string.match(message, " Óãîëü: (%d+) / (%d+)") + if string.find(message, " Уголь: (%d+) / (%d+)") then + local S1, S2 = string.match(message, " Уголь: (%d+) / (%d+)") if tonumber(S1) ~= 0 then current_load = 2 check_noLoad = false end end - if string.find(message, " Äåðåâî: (%d+) / (%d+)") then - local S1, S2 = string.match(message, " Äåðåâî: (%d+) / (%d+)") + if string.find(message, " Дерево: (%d+) / (%d+)") then + local S1, S2 = string.match(message, " Дерево: (%d+) / (%d+)") if tonumber(S1) ~= 0 then current_load = 3 check_noLoad = false @@ -2383,9 +2386,9 @@ function loadEvents() current_load = 0 end end - if string.find(message, " Èçâèíèòå, ìû âàñ íåìíîãî çàäåðæèì, íóæíî ïîäãîòîâèòü ãðóç. Îñòàëîñü (%d+) ñåêóíä") then + if string.find(message, " Извините, мы ваÑ� немного задержим, нужно подготовить груз. ОÑ�талоÑ�ÑŒ (%d+) Ñ�екунд") then local S1 = - string.match(message, " Èçâèíèòå, ìû âàñ íåìíîãî çàäåðæèì, íóæíî ïîäãîòîâèòü ãðóç. Îñòàëîñü (%d+) ñåêóíä") + string.match(message, " Извините, мы ваÑ� немного задержим, нужно подготовить груз. ОÑ�талоÑ�ÑŒ (%d+) Ñ�екунд") if tonumber(S1) > 3 then delay.load = 0 delay.unload = 0 @@ -2393,13 +2396,13 @@ function loadEvents() end if - message == " Ó âàñ íåäîñòàòî÷íî äåíåã" or message == " Íóæíî íàõîäèòüñÿ ó ñêëàäà" or - message == " Íóæíî íàõîäèòüñÿ â ïîðòó" or - message == " Ó âàñ íåò ïðîäóêòîâ" or - message == " Âû ïðèáûëè áåç ïðèöåïà" or - message == " Âû íå â ñëóæåáíîé ìàøèíå. Íóæíî áûòü âîäèòåëåì" or - message == " Âû äîëæíû íàõîäèòüñÿ â ïîðòó, èëè íà ñêëàäå" or - message == " Âû äîëæíû óñòðîèòüñÿ íà ðàáîòó äàëüíîáîéùèêà" + message == " У ваÑ� недоÑ�таточно денег" or message == " Ð�ужно находитьÑ�Ñ� у Ñ�клада" or + message == " Ð�ужно находитьÑ�Ñ� в порту" or + message == " У ваÑ� нет продуктов" or + message == " Ð’Ñ‹ прибыли без прицепа" or + message == " Ð’Ñ‹ не в Ñ�лужебной машине. Ð�ужно быть водителем" or + message == " Ð’Ñ‹ должны находитьÑ�Ñ� в порту, или на Ñ�кладе" or + message == " Ð’Ñ‹ должны уÑ�троитьÑ�Ñ� на работу дальнобойщика" then delay.mon, delay.chatMon = 0, 0 delay.load = 0 @@ -2408,13 +2411,13 @@ function loadEvents() auto = false autoh = true menu[2].run = false - message = message..". Ðåæèì ÀÂÒÎ TruckHUD âûêëþ÷åí!" + message = message..". Режим Ð�ВТО TruckHUD выключен!" return { color, message } end end -- /truck load unload error - if message == " Âàì íå äîñòóïåí ýòîò ÷àò!" or message == " Ââåäèòå: /r èëè /f [text]" then + if message == " Вам не доÑ�тупен Ñ�тот чат!" or message == " Введите: /r или /f [text]" then delay.chat = 0 delay.chatMon = 0 end -- /jf chat error @@ -2426,23 +2429,23 @@ function loadEvents() end -- Log update if - message == " Ñîîáùåíèå äîñòàâëåíî" or message == " Èãðîê îôôëàéí" or - message == " Ââåäèòå: /sms [playerid / phonenumber] [òåêñò]" or - message == " Òåëåôîí âíå çîíû äîñòóïà ñåòè" + message == " Сообщение доÑ�тавлено" or message == " Игрок оффлайн" or + message == " Введите: /sms [playerid / phonenumber] [текÑ�Ñ‚]" or + message == " Телефон вне зоны доÑ�тупа Ñ�ети" then delay.sms = 0 end - if string.find(message, "Çàãðóæåíî %d+ ãðóçà, íà ñóììó (%d+) âèðò. Ñêèäêà: %d+ âèðò") and isTruckCar() then + if string.find(message, "Загружено %d+ груза, на Ñ�умму (%d+) вирт. Скидка: %d+ вирт") and isTruckCar() then timer = msk_timestamp - local Z1, Z2, Z3 = string.match(message, " Çàãðóæåíî (%d+) ãðóçà, íà ñóììó (%d+) âèðò. Ñêèäêà: (%d+) âèðò") + local Z1, Z2, Z3 = string.match(message, " Загружено (%d+) груза, на Ñ�умму (%d+) вирт. Скидка: (%d+) вирт") gruzLOAD = Z1 if texts_of_reports[current_warehouse] ~= nil then local cena = (Z2 + Z3) / (Z1 / 1000) local sklad = texts_of_reports[current_warehouse] local modelId = getCharModel(PLAYER_PED) report_text = - (not inifiles.Settings.girl and "Çàãðóçèëñÿ" or "Çàãðóçèëàñü") .. " íà " .. sklad .. " ïî " .. cena + (not inifiles.Settings.girl and "ЗагрузилÑ�Ñ�" or "ЗагрузилаÑ�ÑŒ") .. " на " .. sklad .. " по " .. cena sms_pair_mode = report_text if inifiles.Settings.Report then delay.chat = 1 @@ -2466,16 +2469,16 @@ function loadEvents() end end - if string.find(message, "Âû çàðàáîòàëè (%d+) âèðò, èç êîòîðûõ (%d+) âèðò áóäåò äîáàâëåíî ê âàøåé çàðïëàòå") and isTruckCar() then + if string.find(message, "Ð’Ñ‹ заработали (%d+) вирт, из которых (%d+) вирт будет добавлено к вашей зарплате") and isTruckCar() then pttModule() timer = msk_timestamp local Z1, Z2 = - string.match(message, " Âû çàðàáîòàëè (%d+) âèðò, èç êîòîðûõ (%d+) âèðò áóäåò äîáàâëåíî ê âàøåé çàðïëàòå") + string.match(message, " Ð’Ñ‹ заработали (%d+) вирт, из которых (%d+) вирт будет добавлено к вашей зарплате") if texts_of_reports[current_warehouse] ~= nil and gruzLOAD ~= nil then local cena = Z1 / (gruzLOAD / 1000) local sklad = texts_of_reports[current_warehouse] local modelId = getCharModel(PLAYER_PED) - report_text = "Ðàçãðóçèë" .. (not inifiles.Settings.girl and " " or "à ") .. sklad .. " ïî " .. cena + report_text = "Разгрузил" .. (not inifiles.Settings.girl and " " or "а ") .. sklad .. " по " .. cena sms_pair_mode = report_text if inifiles.Settings.Report then delay.chat = 1 @@ -2510,7 +2513,7 @@ function loadEvents() end delay.paycheck = 1 end - if message == " Íå ôëóäè!" then + if message == " Ð�е флуди!" then if delay.skill == 2 then delay.skill = 1 end @@ -2533,41 +2536,44 @@ function loadEvents() delay.dir = 1 end end - if message == " Ó âàñ íåò òåëåôîííîãî ñïðàâî÷íèêà!" then + if message == " У ваÑ� нет телефонного Ñ�правочника!" then delay.dir = 0 end - if string.find(message, " Âû àðåíäîâàëè òðàíñïîðòíîå ñðåäñòâî") and isTruckCar() then + if string.find(message, " Ð’Ñ‹ арендовали транÑ�портное Ñ�редÑ�тво") and isTruckCar() then local message = sampGetDialogText() - if string.find(message, "Ñòîèìîñòü") then - local Z1 = string.match(message, "Ñòîèìîñòü àðåíäû: {FFFF00}(%d+) âèðò") + if string.find(message, "СтоимоÑ�ть") then + local Z1 = string.match(message, "СтоимоÑ�ть аренды: {FFFF00}(%d+) вирт") write_table_log('arenda', {Z1}, 3) end end - if string.find(message, " Âû çàïëàòèëè øòðàô (%d+) âèðò, Îôèöåðó (%g+)") then - local Z1, Z2 = string.match(message, " Âû çàïëàòèëè øòðàô (%d+) âèðò, Îôèöåðó (%g+)") + if string.find(message, " Ð’Ñ‹ заплатили штраф (%d+) вирт, Офицеру (%g+)") then + local Z1, Z2 = string.match(message, " Ð’Ñ‹ заплатили штраф (%d+) вирт, Офицеру (%g+)") write_table_log('shtraf', {Z1, message}, 4) end - if string.find(message, " Âàøó ìàøèíó îòðåìîíòèðîâàë%(à%) çà (%d+) âèðò, Ìåõàíèê (%g+)") and isTruckCar() then - local Z1, Z2 = string.match(message, " Âàøó ìàøèíó îòðåìîíòèðîâàë%(à%) çà (%d+) âèðò, Ìåõàíèê (%g+)") + if string.find(message, " Вашу машину отремонтировал%(а%) за (%d+) вирт, Механик (%g+)") and isTruckCar() then + local Z1, Z2 = string.match(message, " Вашу машину отремонтировал%(а%) за (%d+) вирт, Механик (%g+)") write_table_log('repair', {Z1}, 5) end - if string.find(message, " Àâòîìåõàíèê (%g+) çàïðàâèë âàø àâòîìîáèëü íà 300 çà (%d+) âèðò") and isTruckCar() then - local Z1, Z2 = string.match(message, " Àâòîìåõàíèê (%g+) çàïðàâèë âàø àâòîìîáèëü íà 300 çà (%d+) âèðò") + if string.find(message, " Ð�втомеханик (%g+) заправил ваш автомобиль на 300 за (%d+) вирт") and isTruckCar() then + local Z1, Z2 = string.match(message, " Ð�втомеханик (%g+) заправил ваш автомобиль на 300 за (%d+) вирт") write_table_log('refill', {Z2}, 6) end - if string.find(message, " Ìàøèíà çàïðàâëåíà, çà: (%d+) âèðò") and isTruckCar() then - local Z1 = string.match(message, " Ìàøèíà çàïðàâëåíà, çà: (%d+) âèðò") + if string.find(message, " Машина заправлена, за: (%d+) вирт") and isTruckCar() then + local Z1 = string.match(message, " Машина заправлена, за: (%d+) вирт") write_table_log('refill', {Z1}, 7) end - if string.find(message, " Âû êóïèëè êàíèñòðó ñ 50 ëèòðàìè áåíçèíà çà (%d+) âèðò") and isTruckCar() then - local Z1 = string.match(message, " Âû êóïèëè êàíèñòðó ñ 50 ëèòðàìè áåíçèíà çà (%d+) âèðò") + if string.find(message, " Ð’Ñ‹ купили каниÑ�тру Ñ� 50 литрами бензина за (%d+) вирт") and isTruckCar() then + local Z1 = string.match(message, " Ð’Ñ‹ купили каниÑ�тру Ñ� 50 литрами бензина за (%d+) вирт") write_table_log('kanistr', {Z1}, 8) end end function sampev.onShowDialog(DdialogId, Dstyle, Dtitle, Dbutton1, Dbutton2, Dtext) - if Dstyle == 0 and string.find(Dtext, "{00AB06}Äàëüíîáîéùèê{CECECE}") and string.find(Dtext, "{00AB06}Ìåõàíèê{CECECE}") then - local Skill, SkillP, Rank, RankP = string.match( Dtext, ".+{00AB06}Äàëüíîáîéùèê{CECECE}.*Ñêèëë: (%d+)\tÎïûò: .+ (%d+%.%d+)%%.*{CECECE}Ðàíã: (%d+) \tÎïûò: .+ (%d+%.%d+)%%") + -- Dtext = u8:encode(Dtext) + -- Dtitle = u8:encode(Dtitle) + addChatMessage(Dtitle) + if Dstyle == 0 and string.find(Dtext, "{00AB06}Дальнобойщик{CECECE}") and string.find(Dtext, "{00AB06}Механик{CECECE}") then + local Skill, SkillP, Rank, RankP = string.match( Dtext, ".+{00AB06}Дальнобойщик{CECECE}.*Скилл: (%d+)\tОпыт: .+ (%d+%.%d+)%%.*{CECECE}Ранг: (%d+) \tОпыт: .+ (%d+%.%d+)%%") if Skill ~= nil then SkillP = tonumber(SkillP) RankP = tonumber(RankP) @@ -2596,11 +2602,11 @@ function loadEvents() end end - if DdialogId == 22 and Dstyle == 0 and string.find(Dtext, "Çàâîäû") then + if DdialogId == 22 and Dstyle == 0 and string.find(Dtext, "Заводы") then delay.mon = 0 mon_life = msk_timestamp mon_time = msk_timestamp - prices_mon.n1, prices_mon.n2, prices_mon.y1, prices_mon.y2, prices_mon.l1, prices_mon.l2, prices_mon.lsn, prices_mon.lsy, prices_mon.lsl, prices_mon.sfn, prices_mon.sfy, prices_mon.sfl = string.match( Dtext, "[Çàâîäû].*Íåôòåçàâîä ¹1.*.*Íåôòü: 0.(%d+) âèðò.*Íåôòåçàâîä ¹2.*.*Íåôòü: 0.(%d+) âèðò.*Ñêëàä óãëÿ ¹1.*.*Óãîëü: 0.(%d+) âèðò.*Ñêëàä óãëÿ ¹2.*.*Óãîëü: 0.(%d+) âèðò.*Ëåñîïèëêà ¹1.*.*Äåðåâî: 0.(%d+) âèðò.*Ëåñîïèëêà ¹2.*.*Äåðåâî: 0.(%d+) âèðò.*[Ïîðòû].*Ïîðò ËÑ.*.*Íåôòü: 0.(%d+) âèðò.*.*Óãîëü: 0.(%d+) âèðò.*.*Äåðåâî: 0.(%d+) âèðò.*Ïîðò ÑÔ.*.*Íåôòü: 0.(%d+) âèðò.*.*Óãîëü: 0.(%d+) âèðò.*.*Äåðåâî: 0.(%d+) âèðò" ) + prices_mon.n1, prices_mon.n2, prices_mon.y1, prices_mon.y2, prices_mon.l1, prices_mon.l2, prices_mon.lsn, prices_mon.lsy, prices_mon.lsl, prices_mon.sfn, prices_mon.sfy, prices_mon.sfl = string.match( Dtext, "[Заводы].*Ð�ефтезавод â„–1.*.*Ð�ефть: 0.(%d+) вирт.*Ð�ефтезавод â„–2.*.*Ð�ефть: 0.(%d+) вирт.*Склад углÑ� â„–1.*.*Уголь: 0.(%d+) вирт.*Склад углÑ� â„–2.*.*Уголь: 0.(%d+) вирт.*ЛеÑ�опилка â„–1.*.*Дерево: 0.(%d+) вирт.*ЛеÑ�опилка â„–2.*.*Дерево: 0.(%d+) вирт.*[Порты].*Порт ЛС.*.*Ð�ефть: 0.(%d+) вирт.*.*Уголь: 0.(%d+) вирт.*.*Дерево: 0.(%d+) вирт.*Порт СФ.*.*Ð�ефть: 0.(%d+) вирт.*.*Уголь: 0.(%d+) вирт.*.*Дерево: 0.(%d+) вирт" ) for k, v in pairs(prices_mon) do if string.find(tostring(prices_mon[k]), "99") then @@ -2628,7 +2634,7 @@ function loadEvents() if delay.chatMon == -1 then SendMonText = string.format( - "[ËÑ Í:%d Ó:%d Ë:%d] [1 Í:%d Ó:%d Ë:%d] [2 Í:%d Ó:%d Ë:%d] [CÔ Í:%d Ó:%d Ë:%d]", + "[ЛС Ð�:%d У:%d Л:%d] [1 Ð�:%d У:%d Л:%d] [2 Ð�:%d У:%d Л:%d] [CФ Ð�:%d У:%d Л:%d]", (prices_mon.lsn / 100), (prices_mon.lsy / 100), (prices_mon.lsl / 100), @@ -2651,27 +2657,27 @@ function loadEvents() end if delay.dir ~= 0 then - if string.find(Dtitle, "Òåë.ñïðàâî÷íèê") and delay.dir == 2 then + if string.find(Dtitle, "Тел.Ñ�правочник") and delay.dir == 2 then sampSendDialogResponse(DdialogId, 1, 1, "") delay.dir = 3 return false end - if string.find(Dtitle, "Ðàáîòû") and delay.dir == 3 then + if string.find(Dtitle, "Работы") and delay.dir == 3 then lua_thread.create( function() repeat wait(0) until delay.dir == 4 wait(150) - sampSendDialogResponse(DdialogId, 1, 9, "[9] Äàëüíîáîéùèê") + sampSendDialogResponse(DdialogId, 1, 9, "[9] Дальнобойщик") end ) delay.dir = 4 return false end - if string.find(Dtitle, "Ìåíþ") and string.find(Dtext, "AFK ñåêóíä") and delay.dir == 4 then + if string.find(Dtitle, "Меню") and string.find(Dtext, "AFK Ñ�екунд") and delay.dir == 4 then delay.dir = 0 sampShowDialog(222, Dtitle, Dtext, Dbutton1, Dbutton2, Dstyle) return false @@ -2689,7 +2695,7 @@ function loadEvents() wait_auto = msk_timestamp end id_3D_text = id - if text:find("Ïîðò") then + if text:find("Порт") then unload_location = true local one_plus = function(price) for i = 1, #price do @@ -2701,14 +2707,14 @@ function loadEvents() end local cargoN, cargoY, cargoL = string.match(text, v) cargoN, cargoY, cargoL = one_plus({cargoN, cargoY, cargoL}) - luChecker.set3Dtext("Ïîðò", {prices_3dtext[k .. "n"], prices_3dtext[k .. "y"], prices_3dtext[k .. "l"]}, {cargoN, cargoY, cargoL}, position) + 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 - local port = (text:find("ËÑ") and "ËÑ" or "ÑÔ") + local port = (text:find("ЛС") and "ЛС" or "СФ") local ctext = string.format( - "Ïîðò %s\nÍåôòü: 0.%s\nÓãîëü: 0.%s\nÄåðåâî: 0.%s ", + "Порт %s\nÐ�ефть: 0.%s\nУголь: 0.%s\nДерево: 0.%s ", port, prices_3dtext[k .. "n"], prices_3dtext[k .. "y"], @@ -2722,13 +2728,13 @@ function loadEvents() until sampIs3dTextDefined(id) if inifiles.Settings.LightingPrice then if current_load == 1 then - ctext = ctext:gsub("Íåôòü:", "{FFFFFF}Íåôòü:") - ctext = ctext:gsub("Óãîëü:", "{FFFF00}Óãîëü:") + ctext = ctext:gsub("Ð�ефть:", "{FFFFFF}Ð�ефть:") + ctext = ctext:gsub("Уголь:", "{FFFF00}Уголь:") elseif current_load == 2 then - ctext = ctext:gsub("Óãîëü:", "{FFFFFF}Óãîëü:") - ctext = ctext:gsub("Äåðåâî:", "{FFFF00}Äåðåâî:") + ctext = ctext:gsub("Уголь:", "{FFFFFF}Уголь:") + ctext = ctext:gsub("Дерево:", "{FFFF00}Дерево:") elseif current_load == 3 then - ctext = ctext:gsub("Äåðåâî:", "{FFFFFF}Äåðåâî:") + ctext = ctext:gsub("Дерево:", "{FFFFFF}Дерево:") end end sampCreate3dTextEx( @@ -2745,7 +2751,7 @@ function loadEvents() ) else local cargo_save = string.match(text, v) - luChecker.set3Dtext("Ñêëàä", {prices_3dtext[k], k}, {cargo_save, k}, position) + 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 @@ -2783,8 +2789,11 @@ function loadEvents() end end, Cid) end + utf8_function({ + { "sampev", "onShowDialog" }, + { "sampev", "onServerMessage" }, + }, AnsiToUtf8, AnsiToUtf8) end - function isTruck3dTextDefined(id) local result = false local delete = {} @@ -2851,14 +2860,14 @@ function write_table_log(key, param, Log) end local text_to_log = { - [1] = { string.format('Çàãðóçêà çà %s$ %s', param[1], (inifiles.Trucker.MaxZP < tonumber(inifiles.log[os.date("%d.%m.%Y", msk_timestamp)].hour[os.date("%H", msk_timestamp)].zp) and ' [Äîñòèãíóò ëèìèò çàðïëàòû]' or '') )}, - [2] = { string.format('Ðàçãðóçêà çà %s$ | Çàðàáîòàíî %s$ %s', param[1], param[2], (inifiles.Trucker.MaxZP < tonumber(inifiles.log[os.date("%d.%m.%Y", msk_timestamp)].hour[os.date("%H", msk_timestamp)].zp) and ' [Äîñòèãíóò ëèìèò çàðïëàòû]' or '')) }, - [3] = { string.format('Àðåíäà ôóðû çà %s$', param[1]) }, - [4] = { string.format('Øòðàô %s$ îôèöåðó %s', param[1], param[2]) }, - [5] = { string.format('Ïî÷èíêà ôóðû çà %s$', param[1]) }, - [6] = { string.format('Çàïðàâêà ôóðû çà %s$', param[1]) }, - [7] = { string.format('Çàïðàâêà ôóðû çà %s$', param[1]) }, - [8] = { string.format('Ïîêóïêà êàíèñòðû çà %s$', param[1]) }, + [1] = { string.format('Загрузка за %s$ %s', param[1], (inifiles.Trucker.MaxZP < tonumber(inifiles.log[os.date("%d.%m.%Y", msk_timestamp)].hour[os.date("%H", msk_timestamp)].zp) and ' [ДоÑ�тигнут лимит зарплаты]' or '') )}, + [2] = { string.format('Разгрузка за %s$ | Заработано %s$ %s', param[1], param[2], (inifiles.Trucker.MaxZP < tonumber(inifiles.log[os.date("%d.%m.%Y", msk_timestamp)].hour[os.date("%H", msk_timestamp)].zp) and ' [ДоÑ�тигнут лимит зарплаты]' or '')) }, + [3] = { string.format('Ð�ренда фуры за %s$', param[1]) }, + [4] = { string.format('Штраф %s$ офицеру %s', param[1], param[2]) }, + [5] = { string.format('Починка фуры за %s$', param[1]) }, + [6] = { string.format('Заправка фуры за %s$', param[1]) }, + [7] = { string.format('Заправка фуры за %s$', param[1]) }, + [8] = { string.format('Покупка каниÑ�тры за %s$', param[1]) }, [9] = { string.format('PayDay') } } for k, v in pairs(text_to_log[Log]) do @@ -3199,7 +3208,7 @@ function doPair_G() error_message(1, '') para_message_send = nil pair_mode_name = sampGetPlayerNickname(pair_mode_id) - menu[4][1] = "SMS » " .. pair_mode_name .. "[" .. pair_mode_id .. "]" + menu[4][1] = "SMS » " .. pair_mode_name .. "[" .. pair_mode_id .. "]" pair_mode = true menu[4].run = true transponder_delay = 100 @@ -3207,7 +3216,7 @@ function doPair_G() pair_mode_id = -1 pair_mode = false menu[4].run = false - sampAddChatMessage("Îøèáêà! Èãðîê ïîä ýòèì ID íå â ñåòè.", -1) + sampAddChatMessage("Ошибка! Игрок под Ñ�тим ID не в Ñ�ети.", -1) end pair_yes = nil end @@ -3251,7 +3260,7 @@ function transponder() local result, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) local myname = sampGetPlayerNickname(myid) - if (os.time() - afk_solo_message_false < 7 or os.time() - live > 7) or (solo_message_send.time ~= 0 and os.time() - solo_message_send.time > 5) then -- Î÷èñòèòü åñëè äàííûå óñòàðåëè + if (os.time() - afk_solo_message_false < 7 or os.time() - live > 7) or (solo_message_send.time ~= 0 and os.time() - solo_message_send.time > 5) then -- ОчиÑ�тить еÑ�ли данные уÑ�тарели clearSoloMessage() end @@ -3318,11 +3327,11 @@ function transponder() info = decodeJson(fileText) end, function(e) sampfuncsLog(fileText) - sampAddChatMessage("[TruckHUD]: Îøèáî÷íûé îòâåò ñåðâåðà!",-1) + sampAddChatMessage("[TruckHUD]: Ошибочный ответ Ñ�ервера!",-1) info = nil end) if info == nil then - print("{ff0000}[" .. string.upper(thisScript().name) .. "]: Áûë ïîëó÷åí íåêîððåêòíûé îòâåò îò ñåðâåðà.") + print("{ff0000}[" .. string.upper(thisScript().name) .. "]: Был получен некорректный ответ от Ñ�ервера.") else if download_call == 0 then if request_table["info"]["solo_message"]["name"] == solo_message_send.name then @@ -3337,16 +3346,16 @@ function transponder() base = info.base error_message('2', '') local minKD = 1000000 - local dialogText = 'Èìÿ[ID]\tÑêèëë\tÔóðà/Ãðóç\tÍàïàðíèê\n' + local dialogText = 'ИмÑ�[ID]\tСкилл\tФура/Груз\tÐ�апарник\n' local tmonitor = {} for k,v in pairs(base) do if v.pair_mode_name == myname then if new_pair[k] == nil then if sampIsPlayerConnected(v.id) and sampGetPlayerNickname(v.id) == k then new_pair[k] = true - sampAddChatMessage('TruckHUD: Èãðîê '..k..'['..v.id..'] äîáàâèë Âàñ â ðåæèì ïàðû.', -1) + sampAddChatMessage('TruckHUD: Игрок '..k..'['..v.id..'] добавил ВаÑ� в режим пары.', -1) if pair_mode_id ~= v.id then - sampAddChatMessage('TruckHUD: Íàæìèòå {e63939}"G"{FFFFFF} ÷òîáû ïðèíÿòü åãî â íàïàðíèêè.', -1) + sampAddChatMessage('TruckHUD: Ð�ажмите {e63939}"G"{FFFFFF} чтобы принÑ�ть его в напарники.', -1) pair_yes = { time = os.time(), id = v.id @@ -3356,7 +3365,7 @@ function transponder() end end if new_pair[k] ~= nil and v.pair_mode_name ~= myname then - sampAddChatMessage('TruckHUD: Èãðîê '..k..'['..v.id..'] óáðàë Âàñ èç ðåæèìà ïàðû.', -1) + sampAddChatMessage('TruckHUD: Игрок '..k..'['..v.id..'] убрал ВаÑ� из режима пары.', -1) new_pair[k] = nil end if inifiles.blacklist[k] == nil then @@ -3395,21 +3404,21 @@ function transponder() pair_status = 200 if para_message_send == nil then para_message_send = 1 - sampAddChatMessage("Óñòàíîâëåí íàïàðíèê "..pair_mode_name.."["..pair_mode_id.."]"..". Òåïåðü âû ìîæåòå ïîëüçîâàòüñÿ êàðòîé.", -1) - sampAddChatMessage(string.format("Àêòèâàöèÿ â ôóðå: %s. Áåç ôóðû: %s + %s.", inifiles.Settings.Key3:gsub("VK_", ""), inifiles.Settings.Key3:gsub("VK_", ""), inifiles.Settings.Key2:gsub("VK_", "")), -1) + sampAddChatMessage("УÑ�тановлен напарник "..pair_mode_name.."["..pair_mode_id.."]"..". Теперь вы можете пользоватьÑ�Ñ� картой.", -1) + sampAddChatMessage(string.format("Ð�ктивациÑ� в фуре: %s. Без фуры: %s + %s.", inifiles.Settings.Key3:gsub("VK_", ""), inifiles.Settings.Key3:gsub("VK_", ""), inifiles.Settings.Key2:gsub("VK_", "")), -1) end elseif info.result == "error" then if info.reason ~= nil then if info.reason == 403 then error_message('2', '') pair_status = info.reason - error_message('1', pair_mode_name.."["..pair_mode_id.."] ïîêà íå óñòàíîâèë Âàñ íàïàðíèêîì â ñâîåì TruckHUD.") + error_message('1', pair_mode_name.."["..pair_mode_id.."] пока не уÑ�тановил ВаÑ� напарником в Ñ�воем TruckHUD.") elseif info.reason == 404 then error_message('2', '') pair_status = info.reason - error_message('1', pair_mode_name.."["..pair_mode_id.."] íå íàéäåí â áàçå èãðîêîâ TruckHUD") + error_message('1', pair_mode_name.."["..pair_mode_id.."] не найден в базе игроков TruckHUD") elseif info.reason == 425 then - error_message('2', 'Ñëèøêîì ÷àñòûå çàïðîñû íà õîñòèíã. Ðàçáåðèòåñü ñ ýòèì èëè îáðàòèòåñü çà ïîìîùüþ â ãðóïïó vk.com/rubin.mods') + error_message('2', 'Слишком чаÑ�тые запроÑ�Ñ‹ на хоÑ�тинг. РазберитеÑ�ÑŒ Ñ� Ñ�тим или обратитеÑ�ÑŒ за помощью в группу vk.com/rubin.mods') end end end @@ -3423,7 +3432,7 @@ function transponder() f = nil end else - error_message('2', 'Íå ïîëó÷èë îòâåòà îò õîñòèíãà. Íàéäèòå ïðè÷èíó ñ ïîìîùüþ /truck server_help èëè íàïèøèòå î ïðîáëåìå â ãðóïïó vk.com/rubin.mods.') + error_message('2', 'Ð�е получил ответа от хоÑ�тинга. Ð�айдите причину Ñ� помощью /truck server_help или напишите о проблеме в группу vk.com/rubin.mods.') end if doesFileExist(response_path) then os.remove(response_path) @@ -3452,14 +3461,14 @@ function transponder_solo_message(info) if solo_data_antiflood[sender] == nil then solo_data_antiflood[sender] = {} end - local result_find = false -- Îòêëîíèòü ïîêàç ñîîáùåíèÿ + local result_find = false -- Отклонить показ Ñ�ообщениÑ� local check_label = { "id", "name", "action", "cargo" } local cargo_symbol = (inifiles.Settings.luCheckerCargo == 1 and "n" or (inifiles.Settings.luCheckerCargo == 2 and "y" or (inifiles.Settings.luCheckerCargo == 3 and "l" or ""))) if cargo_symbol ~= "" or inifiles.Settings.luCheckerCargo == 4 then if (solo_data["cargo"]:find(cargo_symbol) and fix_l(cargo_symbol, solo_data["cargo"])) or inifiles.Settings.luCheckerCargo == 4 then - for i = 1, #solo_data_antiflood[sender] do -- Ïîèñê äóáëèêàòà + for i = 1, #solo_data_antiflood[sender] do -- ПоиÑ�к дубликата local counter = 0 for s = 1, #check_label do if solo_data[s] == solo_data_antiflood[sender][i][s] then @@ -3482,8 +3491,8 @@ function transponder_solo_message(info) end if not result_find then if texts_of_reports[solo_data["cargo"]] ~= nil then - local text1 = string.format("%s[%s] %s %s.", solo_data.name, solo_data.id, (solo_data.action == "load" and "çàãðóçèëñÿ íà" or "ðàçãðóçèë"), texts_of_reports[solo_data["cargo"]]) - local text = string.format("%s Îòïðàâèë: %s", text1, sender) + local text1 = string.format("%s[%s] %s %s.", solo_data.name, solo_data.id, (solo_data.action == "load" and "загрузилÑ�Ñ� на" or "разгрузил"), texts_of_reports[solo_data["cargo"]]) + local text = string.format("%s Отправил: %s", text1, sender) if solo_antiflood_message[text1] == nil or (os.time() - solo_antiflood_message[text1] > 3) then solo_antiflood_message[text1] = os.time() addChatMessage(text) @@ -3509,7 +3518,7 @@ function error_message(key, text) else if error_array[key] ~= nil then if key == '2' or key == '3' then - sampAddChatMessage('Ñâÿçü ñ ñåðâåðîì TruckHUD âîçîáíîâëåíà.', -1) + sampAddChatMessage('СвÑ�зь Ñ� Ñ�ервером TruckHUD возобновлена.', -1) end error_array[key] = nil end @@ -3519,13 +3528,13 @@ end function count_next() local count = (transponder_delay - (os.clock() * 1000 - delay_start * 1000)) / 1000 if count >= 0 then - return string.format("%0.3fñ", count) + return string.format("%0.3fÑ�", count) elseif wait_for_response then - return "Îæèäàíèå îòâåòà" -- WAITING FOR RESPONSE + return "Ожидание ответа" -- WAITING FOR RESPONSE elseif processing_response then - return "Îáðàáîòêà îòâåòà" -- PROCESSING RESPONSE + return "Обработка ответа" -- PROCESSING RESPONSE else - return "Âûïîëíåíèå çàïðîñà" -- PERFOMING REQUEST + return "Выполнение запроÑ�а" -- PERFOMING REQUEST end end @@ -3668,20 +3677,20 @@ function get_time() os.remove(adress) else msk_timestamp = os.time() - sampAddChatMessage('TruckHUD: Îøèáêà ïîëó÷åíèÿ òî÷íîãî âðåìåíè. Èñïîëüçóåòñÿ ëîêàëüíîå.', -1) + sampAddChatMessage('TruckHUD: Ошибка получениÑ� точного времени. ИÑ�пользуетÑ�Ñ� локальное.', -1) end end end if status == 58 then if msk_timestamp == 0 then msk_timestamp = os.time() - sampAddChatMessage('TruckHUD: Îøèáêà ïîëó÷åíèÿ òî÷íîãî âðåìåíè. Èñïîëüçóåòñÿ ëîêàëüíîå.', -1) + sampAddChatMessage('TruckHUD: Ошибка получениÑ� точного времени. ИÑ�пользуетÑ�Ñ� локальное.', -1) end end end) else msk_timestamp = os.time() - sampAddChatMessage('TruckHUD: Îøèáêà ïîëó÷åíèÿ òî÷íîãî âðåìåíè. Èñïîëüçóåòñÿ ëîêàëüíîå.', -1) + sampAddChatMessage('TruckHUD: Ошибка получениÑ� точного времени. ИÑ�пользуетÑ�Ñ� локальное.', -1) end repeat wait(0) until msk_timestamp > 0 @@ -3707,7 +3716,7 @@ function split(str, delim, plain) end function showTruckers() - local dialogText = 'Èìÿ[ID] AFK\tÑêèëë / Ðàíã\tÔóðà / Ãðóç\tÍàïàðíèê\n' + local dialogText = 'ИмÑ�[ID] AFK\tСкилл / Ранг\tФура / Груз\tÐ�апарник\n' local trucker_count = 0 local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED) @@ -3716,11 +3725,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..']')) + 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..']')) end end end - sampShowDialog(0, 'Äàëüíîáîéùèêè ñî ñêðèïòîì â ñåòè: '..trucker_count, (#dialogText == 0 and 'Ñïèñîê ïóñò' or dialogText), 'Âûáðàòü', 'Çàêðûòü', 5) + sampShowDialog(0, 'Дальнобойщики Ñ�о Ñ�криптом в Ñ�ети: '..trucker_count, (#dialogText == 0 and 'СпиÑ�ок пуÑ�Ñ‚' or dialogText), 'Выбрать', 'Закрыть', 5) end function renderTruckers() @@ -3751,10 +3760,10 @@ function renderTruckers() string.format('{%s}<< {%s}0:00 {%s}>>', inifiles.Render.Color1, inifiles.Render.Color2, inifiles.Render.Color1) ) local gruz_player = string.format('{%s}%s', inifiles.Render.Color2, - (base[nickname].gruz == 0 and 'Íåò ãðóçà' or (base[nickname].gruz == 1 and 'Íåôòü' or (base[nickname].gruz == 2 and 'Óãîëü' or (base[nickname].gruz == 3 and 'Äåðåâî' or 'Íåò')))) + (base[nickname].gruz == 0 and 'Ð�ет груза' or (base[nickname].gruz == 1 and 'Ð�ефть' or (base[nickname].gruz == 2 and 'Уголь' or (base[nickname].gruz == 3 and 'Дерево' or 'Ð�ет')))) ) local para_player = string.format('{%s}%s', inifiles.Render.Color2, - (base[nickname].pair_mode_name ~= '____' and base[nickname].pair_mode_name..'['..base[nickname].paraid..']' or 'Íåò íàïàðíèêà') + (base[nickname].pair_mode_name ~= '____' and base[nickname].pair_mode_name..'['..base[nickname].paraid..']' or 'Ð�ет напарника') ) local pair_kd = '' if base[nickname].pair_mode_name ~= '____' and base[base[nickname].pair_mode_name] ~= nil then @@ -3820,38 +3829,38 @@ function loadPtt() skins = { 63, 64, 85, 87, 152, 178, 207, 237, 238, 243, 244, 245, 246, 256, 257 }, names = { "Rachel", "Sara", "Cindy", "Clover", "Cleo", "Lisa", "Melissa", "Jessica", "Samantha", "Susan", "Rose", "April", "Ashley", "Amelia", "Emily", "Angela", "Annabel", "Abby", "Abigail", "Elise", "Milly", "Stacey", "Gloria", "Courtney", "Patricia", "Penelope" }, message = { - "À âîò è êîðîëü äîðîã ïðèåõàë", - "Ðàçãðóçèë òåëåæêó? Ïîòàíöóé ñî ìíîé", - "Îò òåáÿ âîíÿåò áåíçèíîì, ôèè", - "Ðóêàìè íå òðîãàòü", - "Îòîéäè íà 3 ìåòðà, ïðîòèâíûé", - "Èäè êî ìíå, ìîé òèãð!", - "ß ñåé÷àñ òåáå ïîêàæó òàêîå, ÷åãî òû íèêîãäà íå âèäåë â æèçíè", - "Íó èäè ñþäà, òû çàñëóæèë", - "Õî÷åøü ïîðàçâëåêàòüñÿ?", - "ß ìîãó ïîäíÿòü òâîå íàñòðîåíèå, åñëè òû ïîíèìàåøü î ÷åì ÿ", - "Ïåðâûé ÷àñ áåñïëàòíî, çà âòîðîé òû åùå íå îòðàáîòàë", - "Õî÷åòü âûïèòü êîôå ñî ìíîé?", - "Ê òåáå èëè êî ìíå?" + "Ð� вот и король дорог приехал", + "Разгрузил тележку? Потанцуй Ñ�о мной", + "От тебÑ� вонÑ�ет бензином, фии", + "Руками не трогать", + "Отойди на 3 метра, противный", + "Иди ко мне, мой тигр!", + "Я Ñ�ейчаÑ� тебе покажу такое, чего ты никогда не видел в жизни", + "Ð�у иди Ñ�юда, ты заÑ�лужил", + "Хочешь поразвлекатьÑ�Ñ�?", + "Я могу поднÑ�ть твое наÑ�троение, еÑ�ли ты понимаешь о чем Ñ�", + "Первый чаÑ� беÑ�платно, за второй ты еще не отработал", + "Хочеть выпить кофе Ñ�о мной?", + "К тебе или ко мне?" } }, -- shluxi [2] = { skins = { 10, 39, 53, 54, 75, 77, 88, 89, 129, 130, 196, 197, 199, 218, 231, 232 }, names = { "Rachel", "Sara", "Cindy", "Clover", "Cleo", "Lisa", "Melissa", "Jessica", "Samantha", "Susan", "Rose", "April", "Ashley", "Amelia", "Emily", "Angela", "Annabel", "Abby", "Abigail", "Elise", "Milly", "Stacey", "Gloria", "Courtney", "Patricia", "Penelope" }, message = { - "Ýýõ, âñòðÿõíåì ñòàðèíîé", - "Äàâàé òàíöóé âíó÷îê", - "Äåíüãè òîëüêî êðóïíûìè êóïþðàìè, âñå òàêè ïåíñèÿ ïîíèìàåøü", - "Áóòûëî÷êó îò ïèâà íå âûáðàñûâàé", - "È ÷òî êàê ðàáîòà, âíó÷îê? Ïëàòÿò õîòü?", - "Èäè êî ìíå, ìîé òèãð!", - "Èäè ñþäà, ìîé ìèëûé, íå áîéñÿ", - "Äî òåáÿ ïîë ñòðàíû îáñëóæèëà, à âñå òàêàÿ æå êðàñèâàÿ", - "Êàê ãîâîðèòñÿ \" 45 - áàáà ÿãîäêà îïÿòü\"", - "Ìîæåøü îïëàòèòü ïóñòûìè áàíêàìè", - "Òû ïðÿì êàê ìîé âíó÷åê, òàêîé æå ñòåñíèòåëüíûé", - "Òðàõíè ìåíÿ, ÿ òåáå çàïëà÷ó", - "Äà òû íå ïóãàéñÿ, ÿ ïðîñòî íå íàêðàøåíà" + "ЭÑ�Ñ…, вÑ�трÑ�хнем Ñ�тариной", + "Давай танцуй внучок", + "Деньги только крупными купюрами, вÑ�е таки пенÑ�иÑ� понимаешь", + "Бутылочку от пива не выбраÑ�ывай", + "И что как работа, внучок? ПлатÑ�Ñ‚ хоть?", + "Иди ко мне, мой тигр!", + "Иди Ñ�юда, мой милый, не бойÑ�Ñ�", + "До тебÑ� пол Ñ�траны обÑ�лужила, а вÑ�е такаÑ� же краÑ�иваÑ�", + "Как говоритÑ�Ñ� \"Ð’ 45 - баба Ñ�годка опÑ�ть\"", + "Можешь оплатить пуÑ�тыми банками", + "Ты прÑ�м как мой внучек, такой же Ñ�теÑ�нительный", + "Трахни менÑ�, Ñ� тебе заплачу", + "Да ты не пугайÑ�Ñ�, Ñ� проÑ�то не накрашена" } }, -- bomjixi [3] = { @@ -3867,16 +3876,16 @@ function loadPtt() { "FREEWEIGHTS", "GYM_FREE_CELEBRATE" } }, message = { - "Íó òû è äîëãèé, ÿ åå óæå âî âñå ùåëè îòûìåë ïîêà òû ïîëç íà ñâîåì êîðûòå", - "Ó òâîåé áàáî÷êè îòâàëèëèñü êðûëûøêè", - "Ñàäèñü â ñâîå êîðûòî è âàëè îòñþäà", - "Ñâîáîäåí!", - "Øî, è òåáå êîëåíî ïðîñòðåëèòü?", - "Åñëè òû èùåøü äàìó ñâîåãî ñåðäöà, òî òû îïîçäàë", - "Èùåøü êîãî-òî? Òóò òû íèêîãî íå íàéäåøü", - "À òû ÷òî òóò çàáûë?", - "Òû ïîòåðÿëñÿ? Ïîêàçàòü äîðîãó íàõóé?", - "ß êîíå÷íî íå áàáà, íî ìîæíî ïîïðîáîâàòü" + "Ð�у ты и долгий, Ñ� ее уже во вÑ�е щели отымел пока ты полз на Ñ�воем корыте", + "У твоей бабочки отвалилиÑ�ÑŒ крылышки", + "СадиÑ�ÑŒ в Ñ�вое корыто и вали отÑ�юда", + "Свободен!", + "Шо, и тебе колено проÑ�трелить?", + "ЕÑ�ли ты ищешь даму Ñ�воего Ñ�ердца, то ты опоздал", + "Ищешь кого-то? Тут ты никого не найдешь", + "Ð� ты что тут забыл?", + "Ты потерÑ�лÑ�Ñ�? Показать дорогу нахуй?", + "Я конечно не баба, но можно попробовать" } } -- bomji @@ -3921,7 +3930,7 @@ function pttStart() pttName = pttArr[pttStatus].names[math.random(1, #pttArr[pttStatus].names)] create3DtextPtt(pttName, pttX, pttY, pttZ) pttTime = os.time() - local text = string.format(" SMS: %s æä¸ò Âàñ! Äèñòàíöèÿ: %0.2d ì. Îòïðàâèòåëü: Prostitute_Radar", pttName, getDistanceBetweenCoords3d(x, y, z, pttX, pttY, pttZ)) + local text = string.format(" SMS: %s ждёт ВаÑ�! ДиÑ�танциÑ�: %0.2d м. Отправитель: Prostitute_Radar", pttName, getDistanceBetweenCoords3d(x, y, z, pttX, pttY, pttZ)) sampAddChatMessage(text, 0xFFFFFF00) removeBlip(pttBlip) pttBlip = addBlipForCoord(pttX, pttY, pttZ) @@ -3971,7 +3980,7 @@ function doPtt() createActor(999, pttArr[pttStatus].skins[math.random(1, #pttArr[pttStatus].skins)], pttX, pttY, pttZ, pttHeading, 100.0) pttName = pttArr[pttStatus].names[math.random(1, #pttArr[pttStatus].names)] create3DtextPtt(pttName, pttX, pttY, pttZ) - local text = string.format(" SMS: Ñëèøêîì äîëãî. Îòïðàâèòåëü: Prostitute_Radar") + local text = string.format(" SMS: Слишком долго. Отправитель: Prostitute_Radar") sampAddChatMessage(text, 0xFFFFFF00) end @@ -4064,7 +4073,7 @@ end luChecker = { vehicles = {}, - truckers = {}, -- Èãðîêè íå â ñêðèïòå + truckers = {}, -- Игроки не в Ñ�крипте price_set = {}, trailer_delete = {}, load_position = { x = 0.0, y = 0.0, z = 0.0 } @@ -4072,10 +4081,10 @@ luChecker = { --[[ - ðàçãðóçèë ýâåíò - ñìåíèëñÿ 3ä òåêñò ýâåíò - ðàçãðóçèë ýâåíò - ñìåíèëñÿ 3ä òåêñò ýâåíò + разгрузил Ñ�вент + Ñ�менилÑ�Ñ� 3д текÑ�Ñ‚ Ñ�вент + разгрузил Ñ�вент + Ñ�менилÑ�Ñ� 3д текÑ�Ñ‚ Ñ�вент ]] @@ -4166,7 +4175,7 @@ function luChecker.trailerSync(playerId, data) end end -function luChecker.checkerLoad(playerId, data, position) -- Ïðîâåðêà êîãäà èãðîê ïîëó÷èë ãðóç +function luChecker.checkerLoad(playerId, data, position) -- Проверка когда игрок получил груз if luChecker.truckers[playerId]["trailerData"]["trailerId"] ~= data["trailerId"] then if getLocalPlayerId() ~= playerId then local trucker_x, trucker_y, trucker_z = position.x, position.y, position.z @@ -4190,7 +4199,7 @@ function luChecker.checkerLoad(playerId, data, position) -- end function luChecker.set3Dtext(type, data_old, data, position) - if type == "Ïîðò" then + if type == "Порт" then for key = 1, 3 do 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 @@ -4198,7 +4207,7 @@ function luChecker.set3Dtext(type, data_old, data, position) end end end - elseif type == "Ñêëàä" then + elseif type == "Склад" then 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))) if cargoId ~= 0 then @@ -4386,7 +4395,7 @@ function openURL(url, fpath) if (text:find("Not found") and not text:find('"Not found"')) or text == "" then text = "" - addChatMessage("Íå óäàëîñü ñêà÷àòü îáíîâëåíèå ïî ññûëêå:") + addChatMessage("Ð�е удалоÑ�ÑŒ Ñ�качать обновление по Ñ�Ñ�ылке:") addChatMessage(url) end @@ -4400,9 +4409,9 @@ function addChatMessage(text) end script_update = { - version_url = "http://git.deadpoo.net/rubin/TruckHUD/raw/branch/master/version", - script_url = "http://git.deadpoo.net/rubin/TruckHUD/raw/branch/master/TruckHUD.lua", - changelog_url = "http://git.deadpoo.net/rubin/TruckHUD/raw/branch/master/changelog", + version_url = "http://git.deadpoo.net/rubin/TruckHUD/raw/branch/test-utf-8/version", + script_url = "http://git.deadpoo.net/rubin/TruckHUD/raw/branch/test-utf-8/TruckHUD.lua", + changelog_url = "http://git.deadpoo.net/rubin/TruckHUD/raw/branch/test-utf-8/changelog", address_ini = "rubin-mods-updates.ini", main = function() local name = thisScript().name @@ -4426,12 +4435,12 @@ script_update = { if result then ini[name].server_version = text if text ~= "" and not string.find(text, thisScript().version) then - addChatMessage( string.format("Âûøëà íîâàÿ âåðñèÿ '%s'. Òåêóùàÿ: '%s'", text, thisScript().version) ) + addChatMessage( string.format("Вышла новаÑ� верÑ�иÑ� '%s'. ТекущаÑ�: '%s'", text, thisScript().version) ) if ini[name].auto_update then - addChatMessage( string.format("Àâòîîáíîâëåíèå ñêðèïòà âêëþ÷åíî. Ïðîöåññ çàïóùåí!") ) + addChatMessage( string.format("Ð�втообновление Ñ�крипта включено. ПроцеÑ�Ñ� запущен!") ) script_update.command() else - addChatMessage( string.format("Àâòîîáíîâëåíèå ñêðèïòà âûêëþ÷åíî. Îáíîâèòü ñàìîìó: /%s", command) ) + addChatMessage( string.format("Ð�втообновление Ñ�крипта выключено. Обновить Ñ�амому: /%s", command) ) end end end @@ -4445,7 +4454,7 @@ script_update = { local result, text = pcall(openURL, script_update.version_url, fpath) if result then if text ~= "" and not string.find(text, thisScript().version) then - addChatMessage( string.format("Âûøëà íîâàÿ âåðñèÿ '%s'. Òåêóùàÿ: '%s'", text, thisScript().version) ) + addChatMessage( string.format("Вышла новаÑ� верÑ�иÑ� '%s'. ТекущаÑ�: '%s'", text, thisScript().version) ) local fpath = os.tmpname() local result, text = pcall(openURL, script_update.script_url, fpath) if result and text ~= "" and text:find(thisScript().name:gsub("%-", "%%-")) then @@ -4454,13 +4463,13 @@ script_update = { file:write(text) file:flush() io.close(file) - addChatMessage("Îáíîâëåíèå çàâåðøåíî, ñêðèïò ïåðåçàãðóæåí!") + addChatMessage("Обновление завершено, Ñ�крипт перезагружен!") wait(500) thisScript():reload() end end else - addChatMessage("Ó Âàñ óñòàíîâëåíà ïîñëåäíÿÿ âåðñèÿ!") + addChatMessage("У ВаÑ� уÑ�тановлена поÑ�леднÑ�Ñ� верÑ�иÑ�!") end end end) @@ -4470,7 +4479,7 @@ script_update = { dialog = {}, init = function() if not sampIsChatCommandDefined("rubin-mods") then - sampAddChatMessage("{667dff}[RUBIN MODS]{FFFFFF} Óïðàâëåíèå îáíîâëåíèÿìè ñêðèïòîâ: /rubin-mods", 0xFFFFFFFF) + sampAddChatMessage("{667dff}[RUBIN MODS]{FFFFFF} Управление обновлениÑ�ми Ñ�криптов: /rubin-mods", 0xFFFFFFFF) sampRegisterChatCommand("rubin-mods",script_update.menu.show) while true do wait(0) @@ -4513,7 +4522,7 @@ script_update = { for i = 1, #script_update.menu.text do text = text..script_update.menu.text[i].."\n" end - sampShowDialog(2160,"Îáíîâëåíèå ñêðèïòîâ: Rubin Mods","Ñêðèïò\tÂåðñèÿ\n"..text,"Âûáðàòü","Çàêðûòü",5) + sampShowDialog(2160,"Обновление Ñ�криптов: Rubin Mods","Скрипт\tВерÑ�иÑ�\n"..text,"Выбрать","Закрыть",5) end }, menu2 = { @@ -4526,25 +4535,25 @@ script_update = { script_update.menu2.dialog = {} local ini = inicfg.load({}, script_update.address_ini) local k = data.script_name - script_update.menu2.text[#script_update.menu2.text+1] = string.format("Àâòîîáíîâëåíèå %s", (ini[k].auto_update and "{59fc30}ON" or "{ff0000}OFF")) + script_update.menu2.text[#script_update.menu2.text+1] = string.format("Ð�втообновление %s", (ini[k].auto_update and "{59fc30}ON" or "{ff0000}OFF")) script_update.menu2.dialog[#script_update.menu2.dialog+1] = function() ini[k].auto_update = not ini[k].auto_update inicfg.save(ini, script_update.address_ini) script_update.menu2.show(data) end if not ini[k].auto_update then - script_update.menu2.text[#script_update.menu2.text+1] = string.format("Ïðîâåðÿòü îáíîâëåíèÿ %s", (ini[k].check_update and "{59fc30}ON" or "{ff0000}OFF")) + script_update.menu2.text[#script_update.menu2.text+1] = string.format("ПроверÑ�ть обновлениÑ� %s", (ini[k].check_update and "{59fc30}ON" or "{ff0000}OFF")) script_update.menu2.dialog[#script_update.menu2.dialog+1] = function() ini[k].check_update = not ini[k].check_update inicfg.save(ini, script_update.address_ini) script_update.menu2.show(data) end end - script_update.menu2.text[#script_update.menu2.text+1] = string.format("Ïîñëåäíèå èçìåíåíèÿ") + script_update.menu2.text[#script_update.menu2.text+1] = string.format("ПоÑ�ледние изменениÑ�") script_update.menu2.dialog[#script_update.menu2.dialog+1] = function() script_update.changelog(ini[k].changelog_url) end - script_update.menu2.text[#script_update.menu2.text+1] = string.format("Óäàëèòü èç ñïèñêà") + script_update.menu2.text[#script_update.menu2.text+1] = string.format("Удалить из Ñ�пиÑ�ка") script_update.menu2.dialog[#script_update.menu2.dialog+1] = function() ini[k] = nil inicfg.save(ini, script_update.address_ini) @@ -4555,14 +4564,66 @@ script_update = { for i = 1, #script_update.menu2.text do text = text..script_update.menu2.text[i].."\n" end - sampShowDialog(2162,"Íàñòðîéêè îáíîâëåíèÿ äëÿ "..data.script_name,text,"Âûáðàòü","Íàçàä",2) + sampShowDialog(2162,"Ð�аÑ�тройки обновлениÑ� длÑ� "..data.script_name,text,"Выбрать","Ð�азад",2) end }, changelog = function(url, data) local fpath = os.tmpname() local result, text = pcall(openURL, url, fpath) if result then - sampShowDialog(2161,"Changelog - "..thisScript().name,text,"Âûáðàòü","Íàçàä",4) + sampShowDialog(2161,"Changelog - "..thisScript().name,text,"Выбрать","Ð�азад",4) end end } + +-->> SCRIPT UTF-8 +function utf8_function(utf8_func, in_encoding, out_encoding) + for i = 1, #utf8_func do + if _G[utf8_func[i][1]] ~= nil then + local new_function = function(...) + local pack = table.pack(...) + for i = 1, pack.n do + if type(pack[i]) == "string" then + pack[i] = in_encoding(pack[i]) + end + end + local result = {utf8_func[i][1000](table.unpack(pack))} + for i = 1, #result do + if type(result[i]) == "string" then + result[i] = out_encoding(result[i]) + end + end + return table.unpack(result) + end + if #utf8_func[i] == 1 then + utf8_func[i][1000] = _G[utf8_func[i][1]] + _G[utf8_func[i][1]] = new_function + else + utf8_func[i][1000] = _G[utf8_func[i][1]][utf8_func[i][2]] + _G[utf8_func[i][1]][utf8_func[i][2]] = new_function + end + end + end +end + +--- decode = Utf8ToAnsi / encode = AnsiToUtf8 +function AnsiToUtf8(text) + return u8(text) +end +function Utf8ToAnsi(text) --> ANSI to UTF-8 + return u8:decode(text) +end + +utf8_function({ + { "sampShowDialog" }, + { "sampSendChat" }, + { "sampAddChatMessage" }, + { "print" }, + { "renderGetFontDrawTextLength" }, + { "renderFontDrawText" }, + { "sampSetCurrentDialogEditboxText" } +}, Utf8ToAnsi, AnsiToUtf8) +utf8_function({ + { "sampGetDialogCaption" }, + { "sampHasDialogRespond" } +}, AnsiToUtf8, AnsiToUtf8) \ No newline at end of file diff --git a/changelog b/changelog index 3e4d53d..e789585 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,10 @@ -Âåðñèÿ îò 20.01.2023 +ВерÑ�иÑ� от 20.01.2023 -Ôèêñ ïðèíÿòèÿ ïàðû ñ êíîïêîé "G", êîãäà íàïàðíèê óæå ñòîèò -Ôèêñ ëîæíûõ ñîîáùåíèé ñîëî-÷åêåðà î ñäà÷è â ïîðòó ËÑ, åñëè ó âàñ ñòîÿëî Äåðåâî -Ôèêñ óâåäîìëåíèÿ î òîì, ÷òî âàñ äîáàâèëè â ïàðó, åñëè íàïàðíèê âûøåë èç èãðû -Óáðàíî îòêëþ÷åíèå êðóèç-êîíòðîëÿ íà Space +ФикÑ� принÑ�тиÑ� пары Ñ� кнопкой "G", когда напарник уже Ñ�тоит +ФикÑ� ложных Ñ�ообщений Ñ�оло-чекера о Ñ�дачи в порту ЛС, еÑ�ли у ваÑ� Ñ�тоÑ�ло Дерево +ФикÑ� уведомлениÑ� о том, что ваÑ� добавили в пару, еÑ�ли напарник вышел из игры +Убрано отключение круиз-контролÑ� на Space -Âåðñèÿ îò 22.01.2023 +ВерÑ�иÑ� от 22.01.2023 -Òåïåðü /truckhud-update ïðîâåðÿåò îáíîâëåíèÿ è îáíîâëÿåò ñêðèïò \ No newline at end of file +Теперь /truckhud-update проверÑ�ет обновлениÑ� и обновлÑ�ет Ñ�крипт \ No newline at end of file