Advertisement
SlonPvpru

[DRP] CompanyMonster v0.3.9.2

Apr 23rd, 2020
848
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 52.50 KB | None | 0 0
  1. -- https://www.blast.hk/threads/51240/
  2.  
  3. script_version("0.3.9.2")
  4. script_properties("work-in-pause")
  5. require "lib.moonloader"
  6. require "lib.sampfuncs"
  7. local memory = require "memory"
  8.  
  9. item_id = 0
  10. accept_id = 0
  11. lic_day = 0
  12. places = {}
  13.  
  14. local sampev = require 'lib.samp.events'
  15. local keyy = 0
  16. local effil = require 'effil'
  17. local imgui = require 'imgui'
  18. local ip = 'ws://45.140.167.12:27800'
  19. local websocket = ''
  20. local client =''
  21. if not doesFileExist('moonloader\\lib\\websocket.lua') or
  22.      not doesFileExist('moonloader\\lib\\copas.lua') then
  23.          print('Отсутствуют сетевые библиотеки')
  24.      else
  25.           websocket = require 'websocket'
  26.           client = websocket.client.copas({timeout = 2})
  27. end
  28. local font_flag = require('moonloader').font_flag
  29. local encoding = require 'encoding'
  30. local res, https = pcall(require, 'ssl.https')
  31. local inicfg = require 'inicfg'
  32. imgui.BufferingBar = require('imgui_addons').BufferingBar
  33. imgui.Spinner = require('imgui_addons').Spinner
  34. encoding.default = 'CP1251'
  35. u8 = encoding.UTF8
  36. if not doesFileExist('moonloader\\config\\gsorter\\gsorter.ini') then
  37.     if not doesDirectoryExist('moonloader\\config\\gsorter') then  createDirectory('moonloader\\config\\gsorter') end
  38.     local  ini =
  39.         {
  40.                 filters =
  41.                 {
  42.                         check_gun    = true,
  43.                         check_food   = true,
  44.                         check_furniture = true,
  45.                         check_furnitur = true,
  46.                         check_clothes = true,
  47.                         check_general = true,
  48.                         check_alcohol = true,
  49.                         check_transport = true,
  50.                         check_accessory = true,
  51.                         check_radio = true,
  52.                         check_cosmetics = true,
  53.                         check_pyrotechnics = true,
  54.                         check_auto = true,
  55.                         check_sport = true,
  56.                         int_price_dost = 0,1,
  57.                         check_parachute = true,
  58.                         check_type_towar = true,
  59.                         check_type_product = true,
  60.                         check_type_auto = true,
  61.                         check_office = true,
  62.                         text_maxprice = 6,
  63.                         int_sklad = 0,
  64.                         check_fruit = true,
  65.                         int_sklad2 = 0,
  66.                         int_quantity = 100,
  67.                         text_maxdilprice = 0.1,
  68.                         item_id = 1141,
  69.                         accept_id = 1144,
  70.                         delivery_id = 1147,
  71.                         go_delivery = true,
  72.                         accept_sleep = 350,
  73.                         check_sf = true,
  74.                         check_ls = true,
  75.                         check_lv = true,
  76.                         int_maxquantity=3000,
  77.                         vk_send_error=true,
  78.                         vk_send_sklad=true,
  79.                         vk_send_zakaz=true,
  80.                         vk_send_warning=true,
  81.                         check_cm = true,
  82.                         work_afk = false,
  83.                         vk_send_connectreject = true,
  84.                         text_minprice = 0,
  85.                         text_minpricedel = 0,
  86.                         check_chat = true
  87.                 }
  88.         }
  89.     inicfg.save(ini, 'gsorter\\gsorter')
  90. end
  91. local directIni = 'moonloader\\config\\gsorter\\gsorter.ini'
  92. local mainIni = inicfg.load(nil, directIni)
  93. local img_logo = imgui.CreateTextureFromFile(getGameDirectory() .. '\\moonloader\\image\\face.png')
  94. local main_window_state = imgui.ImBool(false)
  95. local menu_item = 1
  96. local check_cm = imgui.ImBool(mainIni.filters.check_cm == true )
  97. local accept_sleep = imgui.ImInt((mainIni.filters.accept_sleep and mainIni.filters.accept_sleep or 350))
  98. local vk_send_error = imgui.ImBool(mainIni.filters.vk_send_error )
  99. local vk_send_sklad = imgui.ImBool(mainIni.filters.vk_send_sklad )
  100. local vk_send_warning = imgui.ImBool(mainIni.filters.vk_send_warning )
  101. local vk_send_zakaz = imgui.ImBool(mainIni.filters.vk_send_zakaz )
  102. local vk_send_chat = imgui.ImBool(mainIni.filters.vk_send_chat==true )
  103. local vk_send_admin = imgui.ImBool(mainIni.filters.vk_send_admin==true )
  104. local vk_send_connectreject = imgui.ImBool(mainIni.filters.vk_send_connectreject == true )
  105. local check_sf = imgui.ImBool(mainIni.filters.check_sf==true)
  106. local check_chat = imgui.ImBool(mainIni.filters.check_chat==true)
  107. local soft = 'bot_sorter'
  108. local start_status = true
  109. local check_ls = imgui.ImBool(mainIni.filters.check_ls)
  110. local check_lv = imgui.ImBool(mainIni.filters.check_lv)
  111. local text_maxprice = imgui.ImFloat(mainIni.filters.text_maxprice)
  112. local text_chat = imgui.ImBuffer((mainIni.filters.text_chat and mainIni.filters.text_chat or u8'Котик'),256)
  113. local text_minprice_ls = imgui.ImFloat((mainIni.filters.text_minprice_ls and mainIni.filters.text_minprice_ls or 0))
  114. local int_maxquantity_ls = imgui.ImInt((mainIni.filters.int_maxquantity_ls and mainIni.filters.int_maxquantity_ls  or 7500) )
  115. local int_quantity_ls = imgui.ImInt((mainIni.filters.int_quantity_ls and mainIni.filters.int_quantity_ls or 0))
  116. local text_minpricedel_ls = imgui.ImFloat((mainIni.filters.text_minpricedel_ls and mainIni.filters.text_minpricedel_ls or 0))
  117. local text_minprice_sf = imgui.ImFloat((mainIni.filters.text_minprice_sf and mainIni.filters.text_minprice_sf or 0))
  118. local int_maxquantity_sf = imgui.ImInt((mainIni.filters.int_maxquantity_sf and mainIni.filters.int_maxquantity_sf  or 7500) )
  119. local int_quantity_sf = imgui.ImInt((mainIni.filters.int_quantity_sf and mainIni.filters.int_quantity_sf or 0))
  120. local text_minpricedel_sf = imgui.ImFloat((mainIni.filters.text_minpricedel_sf and mainIni.filters.text_minpricedel_sf or 0))
  121. local text_minprice_lv = imgui.ImFloat((mainIni.filters.text_minprice_lv and mainIni.filters.text_minprice_lv or 0))
  122. local int_maxquantity_lv = imgui.ImInt((mainIni.filters.int_maxquantity_lv and mainIni.filters.int_maxquantity_lv  or 7500) )
  123. local int_quantity_lv = imgui.ImInt((mainIni.filters.int_quantity_lv and mainIni.filters.int_quantity_lv or 0))
  124. local text_minpricedel_lv = imgui.ImFloat((mainIni.filters.text_minpricedel_lv and mainIni.filters.text_minpricedel_lv or 0))
  125. local text_maxdilprice = imgui.ImFloat(mainIni.filters.text_maxdilprice)
  126. local work_afk = imgui.ImBool(mainIni.filters.work_afk==true)
  127. local senddialog = imgui.ImBool(mainIni.filters.senddialog==true)
  128. local black_select_sklad = imgui.ImInt(0)
  129. local black = {}
  130.  black[1] = {}
  131.  black[2] = {}
  132.  black[1]['El Quebrados Hotel'] = imgui.ImBool(mainIni.filters.black_El_Quebrados_Hotel==true)
  133.  black[1]['Alcatraz'] = imgui.ImBool(mainIni.filters.black_Alcatraz==true)
  134.  black[1]['Rock Hotel'] = imgui.ImBool(mainIni.filters.black_Rock_Hotel==true)
  135.  black[1]['South Cluckin Bell'] = imgui.ImBool(mainIni.filters.black_South_Cluckin_Bell==true)
  136.  black[1]['Beach Side Motel'] = imgui.ImBool(mainIni.filters.black_Beach_Side_Motel ==true)
  137.  black[1]['Business center'] = imgui.ImBool(mainIni.filters.black_Business_center ==true)
  138.  black[1]['Central Hotel LS'] = imgui.ImBool(mainIni.filters.black_Central_Hotel_LS ==true)
  139.  black[1]['Concert hall'] = imgui.ImBool(mainIni.filters.black_Concert_hall ==true)
  140.  black[1]['Emerald Isle Motel'] = imgui.ImBool(mainIni.filters.black_Emerald_Isle_Motel ==true)
  141.  black[1]['Family Center'] = imgui.ImBool(mainIni.filters.black_Family_Center ==true)
  142.  black[1]['Jefferson hotel'] = imgui.ImBool(mainIni.filters.black_Jefferson_hotel==true)
  143.  black[1]['Больница Los Santos'] = imgui.ImBool(mainIni.filters.black_bls==true)
  144.  black[1]['Больница San Fierro'] = imgui.ImBool(mainIni.filters.black_bsf==true)
  145.  black[1]['Больница Las Venturas'] = imgui.ImBool(mainIni.filters.black_blv==true)
  146.  black[1]['Шахта'] = imgui.ImBool(mainIni.filters.black_mine==true)
  147.  black[1]['СТО San Fierro'] = imgui.ImBool(mainIni.filters.black_STO_San_Fierro==true)
  148.  black[1]['СТО Los Santos'] = imgui.ImBool(mainIni.filters.black_STO_Los_Santos==true)
  149.  black[1]['СТО Las Venturas'] = imgui.ImBool(mainIni.filters.black_STO_Las_Venturas==true)
  150.  black[1]['Порт Bayside'] = imgui.ImBool(mainIni.filters.black_Bayside==true)
  151.  black[1]['Pirates Hotel'] = imgui.ImBool(mainIni.filters.black_Pirates_Hotel==true)
  152.  black[1]['Police Department LS'] = imgui.ImBool(mainIni.filters.black_Police_Department_LS==true)
  153.  black[1]['Police Department SF'] = imgui.ImBool(mainIni.filters.black_Police_Department_SF==true)
  154.  black[1]['Police Department LV'] = imgui.ImBool(mainIni.filters.black_Police_Department_LV==true)
  155.  black[1]['Аэропорт Los Santos'] = imgui.ImBool(mainIni.filters.black_A_P_LS==true)
  156.  black[1]['Аэропорт San Fierro'] = imgui.ImBool(mainIni.filters.black_A_P_SF==true)
  157.  black[1]['Аэропорт Las Venturas'] = imgui.ImBool(mainIni.filters.black_A_P_LV==true)
  158.  black[1]['Байкерский клуб Bandidos'] = imgui.ImBool(mainIni.filters.black_Bandidos==true)
  159.  black[1]['Байкерский клуб Outlaws'] = imgui.ImBool(mainIni.filters.black_Outlaws==true)
  160.  black[1]['Байкерский клуб Hells Angels'] = imgui.ImBool(mainIni.filters.black_Hells_Angels==true)
  161.  black[1]['База ВВС'] = imgui.ImBool(mainIni.filters.black_vvs==true)
  162.  black[1]['База ВМФ'] = imgui.ImBool(mainIni.filters.black_vmf==true)
  163.  black[1]['База СВ'] = imgui.ImBool(mainIni.filters.black_sv==true)
  164.  black[1]['Деревообрабатывающий завод'] = imgui.ImBool(mainIni.filters.black_wood==true)
  165.  black[2]['El Quebrados Hotel'] = imgui.ImBool(mainIni.filters.black2_El_Quebrados_Hotel==true)
  166.  black[2]['Alcatraz'] = imgui.ImBool(mainIni.filters.black2_Alcatraz==true)
  167.  black[2]['Rock Hotel'] = imgui.ImBool(mainIni.filters.black2_Rock_Hotel==true)
  168.  black[2]['Больница Los Santos'] = imgui.ImBool(mainIni.filters.black2_bls==true)
  169.  black[2]['Больница San Fierro'] = imgui.ImBool(mainIni.filters.black2_bsf==true)
  170.  black[2]['Больница Las Venturas'] = imgui.ImBool(mainIni.filters.black2_blv==true)
  171.  black[2]['South Cluckin Bell'] = imgui.ImBool(mainIni.filters.black2_South_Cluckin_Bell==true)
  172.  black[2]['Beach Side Motel'] = imgui.ImBool(mainIni.filters.black2_Beach_Side_Motel ==true)
  173.  black[2]['Business center'] = imgui.ImBool(mainIni.filters.black2_Business_center ==true)
  174.  black[2]['Central Hotel LS'] = imgui.ImBool(mainIni.filters.black2_Central_Hotel_LS ==true)
  175.  black[2]['Concert hall'] = imgui.ImBool(mainIni.filters.black2_Concert_hall ==true)
  176.  black[2]['Emerald Isle Motel'] = imgui.ImBool(mainIni.filters.black2_Emerald_Isle_Motel ==true)
  177.  black[2]['Family Center'] = imgui.ImBool(mainIni.filters.black2_Family_Center ==true)
  178.  black[2]['Jefferson hotel'] = imgui.ImBool(mainIni.filters.black2_Jefferson_hotel==true)
  179.  black[2]['Шахта'] = imgui.ImBool(mainIni.filters.black2_mine==true)
  180.  black[2]['СТО San Fierro'] = imgui.ImBool(mainIni.filters.black2_STO_San_Fierro==true)
  181.  black[2]['СТО Los Santos'] = imgui.ImBool(mainIni.filters.black2_STO_Los_Santos==true)
  182.  black[2]['СТО Las Venturas'] = imgui.ImBool(mainIni.filters.black2_STO_Las_Venturas==true)
  183.  black[2]['Порт Bayside'] = imgui.ImBool(mainIni.filters.black2_Bayside==true)
  184.  black[2]['Pirates Hotel'] = imgui.ImBool(mainIni.filters.black2_Pirates_Hotel==true)
  185.  black[2]['Police Department LS'] = imgui.ImBool(mainIni.filters.black2_Police_Department_LS==true)
  186.  black[2]['Police Department SF'] = imgui.ImBool(mainIni.filters.black2_Police_Department_SF==true)
  187.  black[2]['Police Department LV'] = imgui.ImBool(mainIni.filters.black2_Police_Department_LV==true)
  188.  black[2]['Аэропорт Los Santos'] = imgui.ImBool(mainIni.filters.black2_A_P_LS==true)
  189.  black[2]['Аэропорт San Fierro'] = imgui.ImBool(mainIni.filters.black2_A_P_SF==true)
  190.  black[2]['Аэропорт Las Venturas'] = imgui.ImBool(mainIni.filters.black2_A_P_LV==true)
  191.  black[2]['Байкерский клуб Bandidos'] = imgui.ImBool(mainIni.filters.black2_Bandidos==true)
  192.  black[2]['Байкерский клуб Outlaws'] = imgui.ImBool(mainIni.filters.black2_Outlaws==true)
  193.  black[2]['Байкерский клуб Hells Angels'] = imgui.ImBool(mainIni.filters.black2_Hells_Angels==true)
  194.  black[2]['База ВВС'] = imgui.ImBool(mainIni.filters.black2_vvs==true)
  195.  black[2]['База ВМФ'] = imgui.ImBool(mainIni.filters.black2_vmf==true)
  196.  black[2]['База СВ'] = imgui.ImBool(mainIni.filters.black2_sv==true)
  197.  black[2]['Деревообрабатывающий завод'] = imgui.ImBool(mainIni.filters.black2_wood==true)
  198. local password = imgui.ImBuffer((mainIni.filters.password and mainIni.filters.password or '' ),256)
  199. local auth_window = imgui.ImBool(false)
  200. local bNotf, notf = pcall(import, "imgui_notf.lua")
  201. local update_sklad = 0
  202. local sklad_count=0
  203. local status = false
  204. local sklad_statistic={}
  205. local sendstat = {}
  206. local my_id = 0
  207. local statistic = {}
  208. statistic['ping'] = {}
  209. statistic['product'] = {}
  210. local user = 0
  211. function main()
  212. while not isSampAvailable() do wait(100) end
  213. autoupdate("http://www.zamcontroller.ru/sorter/bot/update.json", '['..string.upper(thisScript().name)..']: ', "http://zamcontroller.ru/MONSTER.luac")
  214. if websocket == '' then
  215.     sampAddChatMessage('ОТСУТСТВУЮТ СЕТЕВЫЕ БИБЛИОТЕКИ, СКАЧАЙТЕ ИХ В ГРУППЕ РАЗРАБОТЧИКАВ', -1)
  216.     sampAddChatMessage('vk.com/diamond_inc', -1)
  217. end
  218.  _, my_id =  sampGetPlayerIdByCharHandle(PLAYER_PED)
  219.  user =  sampGetPlayerNickname(my_id)
  220.  local connected, err = client:connect(ip, '')
  221.  if err then print(err) end
  222.  if connected then
  223.      if not connected then
  224.          sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Ошибка соединения с сервером.',-1)
  225.      else
  226.          sampAddChatMessage('{5858FA}[MONSTER]{ffffff} - Вы успешно подключились к серверу скрипта, ожидание авторизации...',-1)
  227.      end
  228.  end
  229. sampSendChat('/stats')
  230. sampRegisterChatCommand('monster', cmd_status)
  231. sampRegisterChatCommand('mset', cmd_mset)
  232. sampRegisterChatCommand('gst', cmd_gst)
  233. sampRegisterChatCommand('z', cmd_z)
  234. if work_afk.v then
  235.     afk_start()
  236. end
  237. lua_thread.create(function()
  238.     while true do wait(0)
  239.         local message, opcode = client:receive()
  240.         if message then
  241.         --  print(u8:decode(message))
  242.             local result = decodeJson(message)
  243.             if result.days and tonumber(result.days)>0 then
  244.                 _G.item_id  = result.item_id
  245.                 _G.accept_id = result.accept_id
  246.                 _G.lic_day = result.days
  247.                 _G.places = result.places
  248.                 _G.vip = result.vip
  249.                 sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Успешная авторизация, данные о лицензии подтверждены!', -1)
  250.                 sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Осталось {B40431}'..lic_day..'{ffffff} дней лицензии',-1)
  251.                 sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Анонимный чат: {B40431}/z <text>',-1)
  252.                 auth_window.v = false
  253.                 bot = true
  254.             elseif result['action']=='stats' and result['data'] then
  255.                 for key, val in pairs(result['data']) do
  256.                  statistic['product'][u8:decode(key)] = val
  257.                 end
  258.             elseif result['action']=='error' then
  259.                 sampAddChatMessage('{ff0000}[ERROR] - {ffffff}'..u8:decode(result['text']), -1)
  260.             elseif result['action']=='chat_message' and check_chat.v then
  261.                 sampAddChatMessage(u8:decode(tostring(result['text'])), -1)
  262.             elseif result['action']=='ping' then
  263.                 client:send(encodeJson({action='pong'}))
  264.                 local products = {}
  265.                 if status and sklad_statistic[1] and sklad_statistic[2] then
  266.                     for key, val in pairs(sklad_statistic[1]) do
  267.                     --  sampAddChatMessage(key, -1)
  268.                      if not products[key] then
  269.                          table.insert(products,key)
  270.                      end
  271.                     end
  272.                     for key, val in pairs(sklad_statistic[2]) do
  273.                      if not products[key] then
  274.                          table.insert(products,key)
  275.  
  276.                      end
  277.                     end
  278.                 end
  279.                 client:send(u8:encode(encodeJson({action='sendstat',data=products})))
  280.                 table.insert(statistic['ping'],sampGetPlayerPing(my_id))
  281.             elseif result['action']=='statistic' then
  282.                 statistic['product']=result['data']
  283.             elseif result['action']=='poll' then
  284.                 result = result['act']
  285.                     if result['action'] == 'cmd' then
  286.                         sampSendChat(u8:decode(result['value']))
  287.                     elseif result['action'] == 'dialogclose' then
  288.                         sampCloseCurrentDialogWithButton(result['value'])
  289.                     elseif result['action'] == 'dialogtext' then
  290.                             sampSendDialogResponse(sampGetCurrentDialogId(),1,65535,u8:decode(result['value']))
  291.                     elseif result['action'] == 'stop' then
  292.                         update_sklad = 0
  293.                         update_product = 0
  294.                         status = false
  295.                         sampAddChatMessage('Бот был остановлен через ВКонтакте', -1)
  296.                     elseif result['action'] == 'dialogresponse' then
  297.                         local id,line   = result['value']:match('(%d+)%s+(%d+)')
  298.                         sampSendDialogResponse(id,-1,line)
  299.                     elseif result['action'] == 'start' then
  300.                         update_sklad = 1
  301.                         update_product = 1
  302.                         status = true
  303.                         sampSendChat('/company')
  304.                         sampAddChatMessage('Бот был запущен через ВКонтакте', -1)
  305.                     elseif result['action'] == 'chatstop' then
  306.                         vk_send_chat.v = false
  307.                         mainIni.filters.vk_send_chat = vk_send_chat.v
  308.                         inicfg.save(mainIni, directIni)
  309.                         sampAddChatMessage('Трансляция чата отключена через ВКонтакте', -1)
  310.                     elseif result['action'] == 'chatstart' then
  311.                         vk_send_chat.v = true
  312.                         mainIni.filters.vk_send_chat = vk_send_chat.v
  313.                         inicfg.save(mainIni, directIni)
  314.                         sampAddChatMessage('Трансляция чата включена через ВКонтакте', -1)
  315.                     end
  316.             end
  317.         end
  318.     end
  319. end)
  320. while true do wait(0)
  321.     imgui.Process = true
  322.     if isKeyJustPressed(VK_END) then
  323.             main_window_state.v = not main_window_state.v
  324.     end
  325. end
  326. end
  327. function cmd_gst()
  328.  
  329. end
  330. function cmd_z(text)
  331. lua_thread.create(function()
  332.     if #text>0 then
  333.         if check_chat.v then
  334.             client:send(encodeJson({soft=soft,user=tostring(user),prefix=tostring(text_chat.v:gsub('%{[A-Za-z%d+]+%}','')),action='chat_message',text=u8:encode(tostring(text:gsub('%{[A-Za-z%d+]+%}','')))}))
  335.         else
  336.             sampAddChatMessage('У Вас выключен чат, включить его можно в настройках бота', -1)
  337.         end
  338.     else
  339.         sampAddChatMessage('/z <Текст>', -1)
  340.     end
  341. end)
  342. end
  343. function cmd_mset()
  344.  main_window_state.v = not main_window_state.v
  345. end
  346. function onWindowMessage(msg, wparam, lparam)
  347.     if(msg == 0x100) then
  348.         if(wparam == VK_ESCAPE and main_window_state.v) then
  349.             main_window_state.v = false
  350.             consumeWindowMessage()
  351.         end
  352.     end
  353. end
  354. function sampev.onShowDialog(id,style,title,button1,button2,text)
  355.  if title:find('Статистика') and not bot then
  356.      auth_window.v = true
  357.     sampSendDialogResponse(id,0,-1)
  358. return false
  359. end
  360. if bot then
  361. if (style==5 and id==item_id and update_product==1 and status) then
  362.     lua_thread.create(function()
  363.     for line in text: gmatch("[^\n]+") do
  364.             if (line:find("%{FFDF80%}(%d+)%.%{FFFFFF%}%s+([A-Za-zА-Я а-я]+)%s+([A-Za-zА-Я а-я%-]+)%s+(%d+)%s+-%s+%$(%d+%.%d+)%s+%$(%d+%.%d+)")) then
  365.                   key,pos,product,quantity,price,delprice = line:   match("%{FFDF80%}(%d+)%.%{FFFFFF%}%s+([A-Za-zА-Я а-я]+)%s+([A-Za-zА-Я а-я%-]+)%s+(%d+)%s+-%s+%$(%d+%.%d+)%s+%$(%d+%.%d+)")
  366.             --      sampAddChatMessage((sklad_statistic[1][product] and sklad_statistic[1][product] or '-' )..' '..(sklad_statistic[2][product] and sklad_statistic[2][product] or '-' )..' '.. product..' '..quantity..' '..places[u8:encode(pos)], -1)
  367.                 if ( sklad_statistic[1] and  (sklad_statistic[1][product] and sklad_statistic[1][product]>=tonumber(quantity)) and
  368.                  (black[1][pos] == nil or not black[1][pos].v)) and
  369.                     (
  370.                         ( places[u8:encode(pos)]=='LS' and
  371.                          (
  372.                              check_ls.v and
  373.                              tonumber(quantity) >= int_quantity_ls.v      and
  374.                              tonumber(quantity) <= int_maxquantity_ls.v  and
  375.                              tonumber(delprice) >= text_minpricedel_ls.v and
  376.                              tonumber(price)        >= text_minprice_ls.v
  377.                          )
  378.                       ) or
  379.                         (  places[u8:encode(pos)]=='SF' and
  380.                          (
  381.                              check_sf.v and
  382.                              tonumber(quantity) >= int_quantity_sf.v      and
  383.                              tonumber(quantity) <= int_maxquantity_sf.v  and
  384.                              tonumber(delprice) >= text_minpricedel_sf.v and
  385.                              tonumber(price)        >= text_minprice_sf.v
  386.                          )
  387.                         ) or
  388.                         (  places[u8:encode(pos)]=='LV' and
  389.                          (
  390.                              check_lv.v and
  391.                              tonumber(quantity) >= int_quantity_lv.v      and
  392.                              tonumber(quantity) <= int_maxquantity_lv.v  and
  393.                              tonumber(delprice) >= text_minpricedel_lv.v and
  394.                              tonumber(price)        >= text_minprice_lv.v
  395.                          )
  396.                       )
  397.                  ) then
  398.                     update_product = 2
  399.                     sampSendDialogResponse(id,-1,key-1)
  400.                     sklad_statistic[1][product] = sklad_statistic[1][product]-quantity
  401.                     if  sklad_statistic[1][product] < 10000 then
  402.                         client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('На первом складу осталось всего '..sklad_statistic[1][product]..' единиц '..product))}))
  403.                     end
  404.                     break
  405.                 elseif ( sklad_statistic[2] and (sklad_statistic[2][product] and sklad_statistic[2][product]>=tonumber(quantity)) and
  406.                  (black[2][pos] == nil or not black[2][pos].v)) and
  407.                  (
  408.  
  409.                             places[u8:encode(pos)]=='LS' and
  410.                             (
  411.                                 check_ls.v and
  412.                                 tonumber(quantity) >= int_quantity_ls.v       and
  413.                                 tonumber(quantity) <= int_maxquantity_ls.v  and
  414.                                 tonumber(delprice) >= text_minpricedel_ls.v and
  415.                                 tonumber(price)     >= text_minprice_ls.v
  416.                             ) or
  417.                             places[u8:encode(pos)]=='SF' and
  418.                             (
  419.                                 check_sf.v and
  420.                                 tonumber(quantity) >= int_quantity_sf.v       and
  421.                                 tonumber(quantity) <= int_maxquantity_sf.v  and
  422.                                 tonumber(delprice) >= text_minpricedel_sf.v and
  423.                                 tonumber(price)     >= text_minprice_sf.v
  424.                             ) or
  425.                             places[u8:encode(pos)]=='LV' and
  426.                             (
  427.                                 check_lv.v and
  428.                                 tonumber(quantity) >= int_quantity_lv.v       and
  429.                                 tonumber(quantity) <= int_maxquantity_lv.v  and
  430.                                 tonumber(delprice) >= text_minpricedel_lv.v and
  431.                                 tonumber(price)     >= text_minprice_lv.v
  432.                             )
  433.                     ) then
  434.                     update_product = 2
  435.                     sampSendDialogResponse(id,-1,key-1)
  436.                     sklad_statistic[2][product] = sklad_statistic[2][product]-quantity
  437.                     if  sklad_statistic[2][product] < 10000 then
  438.                         client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('На втором складу осталось всего '..sklad_statistic[2][product]..' единиц '..product))}))
  439.                     end
  440.                     break
  441.                 end
  442.                 end
  443.          end
  444.          if update_product == 1 then sampAddChatMessage('Нет подходящих.',-1)
  445.              update_product=4
  446.              sampSendDialogResponse(id,0,-1)
  447.           end
  448.      end)
  449.          return false
  450. elseif id == accept_id and update_product == 2 then  -- если надо свой заказ принять
  451.         lua_thread.create(function()
  452.             keyy = 0
  453.             for line in text:gmatch("[^\n]+") do
  454.                 if (line:find(quantity)) then
  455.                     wait(mainIni.filters.accept_sleep )
  456.                     sampSendDialogResponse(id,1,(keyy-1))
  457.                     sampAddChatMessage((keyy-1),-1)
  458.                     break
  459.                 else
  460.                      keyy = keyy+1
  461.                 end
  462.             end
  463.         end)
  464.                  return false
  465. elseif ((update_product==2 or update_sklad==1 or update_product==4) and title=="{FFDF80}Компания") then
  466.     lua_thread.create(function()
  467.     if update_product==2 then
  468.         sampSendDialogResponse(id,-1,3)
  469.     elseif update_sklad == 1 then
  470.         sampSendDialogResponse(id,-1,1)
  471.     elseif update_product==4 then
  472.         update_product=0
  473.         sampSendDialogResponse(id,0,-1)
  474.         update_sklad = 1
  475.         sampSendChat('/company')
  476.     end
  477. end)
  478.     return false
  479. elseif title=='{FFDF80}Склад' and update_sklad==1 then
  480.     lua_thread.create(function()
  481.     sklad_statistic[sklad_count] = {}
  482.     for line in text:gmatch("[^\n]+") do
  483.         if line:find('%{FFDF80%}%d+.%{FFFFFF%}%s+(.*)%s+(%d+)') then
  484.               product,var=line:match('%{FFDF80%}%d+.%{FFFFFF%}%s+(.*)%s+(%d+)')
  485.                 var = tonumber(var)
  486.                 if var > 0 then  sklad_statistic[sklad_count][product]=var end
  487.         end
  488.     end
  489.     local text = ''
  490.     for key, val in pairs(sklad_statistic[sklad_count]) do
  491.    text = text..'<br>'..key..': '..val
  492.     end
  493.     if vk_send_sklad.v and start_status then
  494.         client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring("Состояние "..sklad_count.." склада:"..text))}))
  495.     end
  496.     sampSendDialogResponse(id,0,-1)
  497.     sklad_count = sklad_count-1
  498.     if sklad_count >= 1 then sampSendChat('/company')
  499.     else
  500.         update_sklad = 0
  501.         if start_status then
  502.             update_product=1
  503.             sampSendChat('/exchange1')
  504.             start_status = false
  505.         end
  506.      end
  507. end)
  508.     return false
  509. elseif (title:find('Управление складом') and update_sklad==1) then
  510.     lua_thread.create(function()
  511.         sampSendDialogResponse(id,-1,3)
  512.     end)
  513.         return false
  514. elseif (title:find('Выберите склад') and update_product==2) then
  515.     lua_thread.create(function()
  516.     sampSendDialogResponse(id,-1,0)
  517.     end)
  518.     return false
  519. elseif (title:find('Состав компании') and update_sklad==1) then
  520.     lua_thread.create(function()
  521.     if sklad_count <= 0 then
  522.         for line in text:gmatch("[^\n]+") do
  523.             if line:find('Склад') then
  524.                 sklad_count = sklad_count+1
  525.             end
  526.         end
  527.     end
  528.     if sklad_count then sampSendDialogResponse(id,1,sklad_count-1) end
  529. end)
  530.     return false
  531. elseif (title:find('Выберите стоянку') and update_product==2) then
  532.     lua_thread.create(function()
  533.         wait(mainIni.filters.accept_sleep )
  534.         update_product = 3
  535.         sampSendDialogResponse(id,-1,0)
  536.     end)
  537.         return false
  538. elseif (title:find('Свободные заказы') and update_product==2 or update_product == 3) then
  539.     lua_thread.create(function()
  540.         wait(mainIni.filters.accept_sleep )
  541.             sampSendDialogResponse(id,1,65535,65535)
  542.             if update_product==3 then
  543.                 update_product=1
  544.             end
  545.         end)
  546.                 return false
  547.     elseif senddialog.v then
  548.     lua_thread.create(function()
  549.         local buttons = ''
  550.         if style == 2 or style == 5 or style==4 then
  551.             buttons = {}
  552.             local line_count = 0
  553.             local last_line_count = 0
  554.             for line in text:gmatch("[^\n]+") do
  555.                 line = string.sub(line:gsub('%{[A-Za-z%d+]+%}',''),1,40)
  556.                 if #buttons < 5 then
  557.                     table.insert(buttons,line_count,
  558.                     {{
  559.                             '!dialogresponse '..id..' '..last_line_count,
  560.                             u8:encode(tostring(line)),
  561.                             'blue'
  562.                         }})
  563.         --      end
  564.     else
  565.                 client:send(encodeJson(
  566.                 {
  567.                     soft=soft,
  568.                     action='vk',
  569.                     dialog_id=id,
  570.                     dialog_title=u8:encode(tostring(title:gsub('%{[A-Za-z%d+]+%}',''))),
  571.                     dialog_line=buttons,
  572.                     dialog_style=style,
  573.                     user=tostring(user),
  574.                     button1=u8:encode(button1),
  575.                     button2=u8:encode(button2)
  576.                 }))
  577.                 line_count = 0
  578.                 buttons = {}
  579. --              if string.len(line)<60 then
  580.                     table.insert(buttons,line_count,
  581.                     {{
  582.                             '!dialogresponse '..id..' '..last_line_count,
  583.                             u8:encode(tostring(line)),
  584.                             'blue'
  585.                     }})
  586. --              end
  587.             end
  588.                 last_line_count = last_line_count+1
  589.                 line_count = line_count+1
  590.             end
  591.         elseif style == 0 or style == 1 or style == 3 then
  592.             for line in text:gmatch("[^\n]+") do
  593.                 buttons = buttons..'<br>'..u8:encode(tostring(line:gsub('%{[A-Za-z%d+]+%}',''):gsub('%[.*%]','')))
  594.             end
  595.             if style == 1 or style == 3 then
  596.                 buttons = buttons..u8:encode('<br><br>Чтобы ввести значение, отправьте !dialogtext *текст*')
  597.             end
  598.         end
  599.                 client:send(encodeJson(
  600.                 {
  601.                     soft=soft,
  602.                     action='vk',
  603.                     dialog_id=id,
  604.                     dialog_title=u8:encode(tostring(title:gsub('%{[A-Za-z%d+]+%}',''))),
  605.                     dialog_line=buttons,
  606.                     dialog_style=style,
  607.                     user=tostring(user),
  608.                     button1=u8:encode(button1),
  609.                     button2=u8:encode(button2)
  610.                 }))
  611.     end)
  612. end
  613. end
  614. end
  615. function sampev.onServerMessage(color,text)
  616.  lua_thread.create(function()
  617.  if text=='• {FFC800}[Подсказка] {ffffff}2 новых заказов на бирже продажи товара. Введите /company для просмотра' and status then
  618.      update_product = 1
  619.      sampSendChat('/exchange1')
  620.  elseif text=='• {00CC00}[Успешно] {ffffff}Вы приняли заказ на доставку товара. Теперь он доступен сотрудникам стоянки компании' then
  621.      if vk_send_zakaz.v then
  622.          sendstat.data = u8:encode("&action=message&text=Взял заказ: "..pos..", "..product..". <br>Количество: "..quantity.."<br>Цена за 1 ед: "..price.."$<br>Цена за доставку 1ед: "..delprice.."$".."&user=" ..tostring(user))
  623.      client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('Взял заказ: '..pos..', '..product..'. <br>Количество: '..quantity..'<br>Цена за 1 ед: '..price..'$<br>Цена за доставку 1ед: '..delprice..'$'))}))
  624.      end
  625.      if check_cm.v then
  626.          sampSendChat('/cm Заказчик: '.. pos..', товар: '..product)
  627.          sampSendChat('/cm Количество: '..quantity..'ед. Доставка: ' ..delprice..'$/ед.')
  628.      end
  629.      wait(1000)
  630.      sampSendChat('/exchange1')
  631.  elseif (text=='• {00CC00}[Успешно] {ffffff}Вы забронировали товар для продажи. Ожидайте принятия службы доставки в течение 30 минут') then
  632.     update_product=2
  633.     sampSendChat('/company')
  634.  elseif (text == '• {AC0000}[Ошибка] {ffffff}На Ваших складах недостаточно товара для этого заказа' )   then
  635.         update_product = 0
  636.         status = false
  637.         if vk_send_error.v then
  638.             client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('Почему-то на складах кончились продукты без моего ведома. Пытался продать:'..product))}))
  639.         end
  640.     elseif text:find('Администратор [A-Za-z_%d+]+%[%d+%]:') and vk_send_admin.v then
  641.         client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('&#9888;ВНИМАНИЕ!!! Пишет администратор!<br><br>'..text))}))
  642.     elseif text:find('Добро пожаловать на Diamond Role Play!') then
  643.         if not bot then
  644.             wait(3000)
  645.             auth_window.v = true
  646.         end
  647.     elseif text=='• {AC0000}[Ошибка] {ffffff}Нет свободных заказов на доставку товара'   then
  648.         update_product = 1
  649.         if vk_send_error.v then
  650.             client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('Почему-то не смог словить заказ на доставку. Кто-то быстрее успел.'))}))
  651.         end
  652.         wait(1000)
  653.         sampSendChat('/exchange1')
  654.     elseif vk_send_chat.v then
  655.         client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring(text:gsub('%{[A-Za-z%d+]+%}','')))}))
  656.     end
  657. end)
  658. end
  659.  
  660. function imgui.OnDrawFrame()
  661.     local iScreenWidth, iScreenHeight = getScreenResolution()
  662.     if main_window_state.v then imgui.ShowCursor = true else imgui.ShowCursor = false end
  663.     if auth_window.v then
  664.         imgui.SetNextWindowPos(imgui.ImVec2(iScreenWidth/2,iScreenHeight/2), imgui.Cond.FirstUseEver)
  665.         imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
  666.         imgui.Begin(u8"Авторизация",-1, imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoCollapse+imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoMove+imgui.WindowFlags.NoResize)
  667.         imgui.Text(u8'Введите пароль от лицензии')
  668.         imgui.InputText('##password',password)
  669.         if imgui.Button(u8'Далее') then
  670.             mainIni.filters.password = password.v
  671.             inicfg.save(mainIni, directIni)
  672.             lua_thread.create(function()
  673.                 _, my_id =  sampGetPlayerIdByCharHandle(PLAYER_PED)
  674.              user =  sampGetPlayerNickname(my_id)
  675.              local server,port =  sampGetCurrentServerAddress()
  676.              client:send(encodeJson({
  677.                                                                 soft=soft,
  678.                                                                 action = 'auth',
  679.                                                                 password = password.v,
  680.                                                                 user = tostring(user),
  681.                                                                 server = tostring(server)
  682.                                                             }))
  683.         end)
  684.         end
  685.         imgui.End()
  686.     end
  687.     if main_window_state.v then
  688.         imgui.SetNextWindowPos(imgui.ImVec2(0,0), imgui.Cond.FirstUseEver)
  689.         imgui.SetNextWindowSize(imgui.ImVec2(iScreenWidth, iScreenHeight), imgui.Cond.FirstUseEver)
  690.         imgui.Begin(u8"CompanyMonster ["..thisScript().version.."]",main_window_state, imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoCollapse+imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoMove+imgui.WindowFlags.NoResize)
  691.         local draw_list = imgui.GetWindowDrawList();
  692.         local p = imgui.GetCursorScreenPos();
  693.         imgui.Columns(3,1,false)
  694.         imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/5)
  695.         imgui.SetCursorPos(imgui.ImVec2(0, 0))
  696.         draw_list:AddRectFilled(imgui.ImVec2(0,0), imgui.ImVec2(p.x+imgui.GetWindowSize().x/3.3 ,p.y+imgui.GetWindowSize().y), 0x990E0E0E)
  697.             imgui.SetCursorPos(imgui.ImVec2(20, 20))
  698.             imgui.Image(img_logo, imgui.ImVec2(170, 170))
  699.             if imgui.Selectable(u8'\t\t\t\tСтартовая',menu_item==1) then menu_item = 1
  700.             elseif imgui.Selectable(u8'\t\t\t\tСтатистика',menu_item==5 ) then menu_item = 5
  701.             elseif imgui.Selectable(u8'\t\t\tНастройки бота',menu_item==2) then menu_item = 2
  702.             elseif imgui.Selectable(u8'\t\tЧерный список заказов',menu_item==4 ) then menu_item = 4
  703.             elseif imgui.Selectable(u8'\t\tУведомления ВКонтакте',menu_item==3 ) then menu_item = 3 end
  704.             imgui.SetCursorPos(imgui.ImVec2(imgui.GetWindowSize().x/15,imgui.GetWindowSize().y-30))
  705.             imgui.Text(u8'Осталось дней: '..lic_day)
  706.             imgui.SetCursorPos(imgui.ImVec2(imgui.GetWindowSize().x/13,imgui.GetWindowSize().y-70))
  707.             if imgui.Button((not status and u8'Запустить' or u8'Остановить'),imgui.ImVec2(80, 30)) then
  708.                 if status then
  709.                     update_sklad = 0
  710.                     update_product = 0
  711.                     status = false
  712.                 else
  713.                     update_sklad = 1
  714.                     update_product = 1
  715.                     status = true
  716.                 end
  717.                 if status then sampSendChat('/company') end
  718.             end
  719.     imgui.NextColumn()
  720.         if menu_item == 1 then
  721.             imgui.Columns(2,1,false)
  722.             imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3.3)
  723.             imgui.NextColumn()
  724.             imgui.SetCursorPos(imgui.ImVec2(imgui.GetColumnWidth()/1.4,40))
  725.             imgui.Image(img_logo, imgui.ImVec2(570, 570))
  726.             imgui.CenterColumnText(u8'Ебись оно всё конем ;c')
  727.         elseif menu_item == 4 then
  728.             imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3)
  729.                 imgui.Text(u8'Выбранные пункты НЕ будут ловиться')
  730.                 if imgui.Checkbox(u8'Alcatraz',black[black_select_sklad.v+1]['Alcatraz']) then
  731.                     if black_select_sklad.v == 0 then
  732.                          mainIni.filters.black_Alcatraz = black[black_select_sklad.v+1]['Alcatraz'].v
  733.                     else
  734.                          mainIni.filters.black2_Alcatraz = black[black_select_sklad.v+1]['Alcatraz'].v
  735.                     end
  736.                     inicfg.save(mainIni, directIni)
  737.                 elseif imgui.Checkbox(u8' El Quebrados Hotel',black[black_select_sklad.v+1]['El Quebrados Hotel']) then
  738.                     if black_select_sklad.v == 0 then
  739.                         mainIni.filters.black_El_Quebrados_Hotel = black[black_select_sklad.v+1]['El Quebrados Hotel'].v
  740.                     else
  741.                         mainIni.filters.black2_El_Quebrados_Hotel = black[black_select_sklad.v+1]['El Quebrados Hotel'].v
  742.                     end
  743.                     inicfg.save(mainIni, directIni)
  744.                 elseif imgui.Checkbox(u8'Beach Side Motel',black[black_select_sklad.v+1]['Beach Side Motel']) then
  745.                     if black_select_sklad.v == 0 then
  746.                         mainIni.filters.black2_Beach_Side_Motel = black[black_select_sklad.v+1]['Beach Side Motel'].v
  747.                     else
  748.                         mainIni.filters.black_Beach_Side_Motel = black[black_select_sklad.v+1]['Beach Side Motel'].v
  749.                     end
  750.                     inicfg.save(mainIni, directIni)
  751.                 elseif imgui.Checkbox(u8'Business center',black[black_select_sklad.v+1]['Business center']) then
  752.                     if black_select_sklad.v == 0 then
  753.                         mainIni.filters.black_Business_center = black[black_select_sklad.v+1]['Business center'].v
  754.                     else
  755.                         mainIni.filters.black2_Business_center = black[black_select_sklad.v+1]['Business center'].v
  756.                     end
  757.                     inicfg.save(mainIni, directIni)
  758.                 elseif imgui.Checkbox(u8'Central Hotel LS',black[black_select_sklad.v+1]['Central Hotel LS']) then
  759.                     if black_select_sklad.v == 0 then
  760.                         mainIni.filters.black_Central_Hotel_LS = black[black_select_sklad.v+1]['Central Hotel LS'].v
  761.                     else
  762.                         mainIni.filters.black2_Central_Hotel_LS = black[black_select_sklad.v+1]['Central Hotel LS'].v
  763.                     end
  764.                 inicfg.save(mainIni, directIni)
  765.                 elseif imgui.Checkbox(u8'Concert hall',black[black_select_sklad.v+1]['Concert hall']) then
  766.                     if black_select_sklad.v == 0 then
  767.                         mainIni.filters.black_Concert_hall = black[black_select_sklad.v+1]['Concert hall'].v
  768.                     else
  769.                         mainIni.filters.black2_Concert_hall = black[black_select_sklad.v+1]['Concert hall'].v
  770.                     end
  771.                     inicfg.save(mainIni, directIni)
  772.                 elseif imgui.Checkbox(u8'Emerald Isle Motel',black[black_select_sklad.v+1]['Emerald Isle Motel']) then
  773.                     if black_select_sklad.v == 0 then
  774.                         mainIni.filters.black_Emerald_Isle_Motel = black[black_select_sklad.v+1]['Emerald Isle Motel'].v
  775.                     else
  776.                         mainIni.filters.black2_Emerald_Isle_Motel = black[black_select_sklad.v+1]['Emerald Isle Motel'].v
  777.                     end
  778.                     inicfg.save(mainIni, directIni)
  779.                 elseif imgui.Checkbox(u8'Порт Bayside',black[black_select_sklad.v+1]['Порт Bayside']) then
  780.                     if black_select_sklad.v == 0 then
  781.                         mainIni.filters.black_Bayside = black[black_select_sklad.v+1]['Порт Bayside'].v
  782.                     else
  783.                         mainIni.filters.black2_Bayside = black[black_select_sklad.v+1]['Порт Bayside'].v
  784.                     end
  785.                     inicfg.save(mainIni, directIni)
  786.                 elseif imgui.Checkbox(u8'Шахта',black[black_select_sklad.v+1]['Шахта']) then
  787.                     if black_select_sklad.v == 0 then
  788.                         mainIni.filters.black_mine = black[black_select_sklad.v+1]['Шахта'].v
  789.                     else
  790.                         mainIni.filters.black2_mine = black[black_select_sklad.v+1]['Шахта'].v
  791.                     end
  792.                     inicfg.save(mainIni, directIni)
  793.                 elseif imgui.Checkbox(u8'Байкерский клуб Hells Angels',black[black_select_sklad.v+1]['Байкерский клуб Hells Angels']) then
  794.                     if black_select_sklad.v == 0 then
  795.                         mainIni.filters.black_Hells_Angels = black[black_select_sklad.v+1]['Байкерский клуб Hells Angels'].v
  796.                     else
  797.                         mainIni.filters.black2_Hells_Angels = black[black_select_sklad.v+1]['Байкерский клуб Hells Angels'].v
  798.                     end
  799.                     inicfg.save(mainIni, directIni)
  800.                 elseif imgui.Checkbox(u8'Байкерский клуб Bandidos',black[black_select_sklad.v+1]['Байкерский клуб Bandidos']) then
  801.                     if black_select_sklad.v == 0 then
  802.                         mainIni.filters.black_Bandidos = black[black_select_sklad.v+1]['Байкерский клуб Bandidos'].v
  803.                     else
  804.                         mainIni.filters.black2_Bandidos = black[black_select_sklad.v+1]['Байкерский клуб Bandidos'].v
  805.                     end
  806.                     inicfg.save(mainIni, directIni)
  807.                 elseif imgui.Checkbox(u8'Байкерский клуб Outlaws',black[black_select_sklad.v+1]['Байкерский клуб Outlaws']) then
  808.                     if black_select_sklad.v == 0 then
  809.                         mainIni.filters.black_Outlaws = black[black_select_sklad.v+1]['Байкерский клуб Outlaws'].v
  810.                     else
  811.                         mainIni.filters.black2_Outlaws = black[black_select_sklad.v+1]['Байкерский клуб Outlaws'].v
  812.                     end
  813.                     inicfg.save(mainIni, directIni)
  814.                 elseif imgui.Checkbox(u8'Аэропорт ЛС',black[black_select_sklad.v+1]['Аэропорт Los Santos']) then
  815.                     if black_select_sklad.v == 0 then
  816.                         mainIni.filters.black_A_P_LS = black[black_select_sklad.v+1]['Аэропорт Los Santos'].v
  817.                     else
  818.                         mainIni.filters.black2_A_P_LS = black[black_select_sklad.v+1]['Аэропорт Los Santos'].v
  819.                     end
  820.                     inicfg.save(mainIni, directIni)
  821.                 elseif imgui.Checkbox(u8'Аэропорт СФ',black[black_select_sklad.v+1]['Аэропорт San Fierro']) then
  822.                     if black_select_sklad.v == 0 then
  823.                         mainIni.filters.black_A_P_SF = black[black_select_sklad.v+1]['Аэропорт San Fierro'].v
  824.                     else
  825.                         mainIni.filters.black2_A_P_SF = black[black_select_sklad.v+1]['Аэропорт San Fierro'].v
  826.                     end
  827.                     inicfg.save(mainIni, directIni)
  828.                 elseif imgui.Checkbox(u8'Аэропорт ЛВ',black[black_select_sklad.v+1]['Аэропорт Las Venturas']) then
  829.                     if black_select_sklad.v == 0 then
  830.                         mainIni.filters.black_A_P_LV = black[black_select_sklad.v+1]['Аэропорт Las Venturas'].v
  831.                     else
  832.                         mainIni.filters.black2_A_P_LV = black[black_select_sklad.v+1]['Аэропорт Las Venturas'].v
  833.                     end
  834.                     inicfg.save(mainIni, directIni)
  835.             end
  836.                 imgui.NextColumn()
  837.                 imgui.ListBox('##1', black_select_sklad,{u8'Первый склад',u8'Второй склад'}, 2)
  838.                 if imgui.Checkbox(u8'Family Center',black[black_select_sklad.v+1]['Family Center']) then
  839.                     if black_select_sklad.v == 0 then
  840.                         mainIni.filters.black_Family_Center = black[black_select_sklad.v+1]['Family Center'].v
  841.                     else
  842.                         mainIni.filters.black2_Family_Center = black[black_select_sklad.v+1]['Family Center'].v
  843.                     end
  844.                     inicfg.save(mainIni, directIni)
  845.                 elseif imgui.Checkbox(u8'Jefferson hotel',black[black_select_sklad.v+1]['Jefferson hotel']) then
  846.                     if black_select_sklad.v == 0 then
  847.                         mainIni.filters.black_Jefferson_hotel = black[black_select_sklad.v+1]['Jefferson hotel'].v
  848.                     else
  849.                         mainIni.filters.black2_Jefferson_hotel = black[black_select_sklad.v+1]['Jefferson hotel'].v
  850.                     end
  851.                     inicfg.save(mainIni, directIni)
  852.                 elseif imgui.Checkbox(u8'Pirates Hotel',black[black_select_sklad.v+1]['Pirates Hotel']) then mainIni.filters.black_Pirates_Hotel = black[black_select_sklad.v+1]['Pirates Hotel'].v; inicfg.save(mainIni, directIni)
  853.                     if black_select_sklad.v == 0 then
  854.                         mainIni.filters.black_Pirates_Hotel = black[black_select_sklad.v+1]['Pirates Hotel'].v
  855.                     else
  856.                         mainIni.filters.black2_Pirates_Hotel = black[black_select_sklad.v+1]['Pirates Hotel'].v
  857.                     end
  858.                     inicfg.save(mainIni, directIni)
  859.                 elseif imgui.Checkbox(u8'Police Department LS',black[black_select_sklad.v+1]['Police Department LS']) then
  860.                     if black_select_sklad.v == 0 then
  861.                         mainIni.filters.black_Concert_hall = black[black_select_sklad.v+1]['Police Department LS'].v
  862.                     else
  863.                         mainIni.filters.black2_Concert_hall = black[black_select_sklad.v+1]['Police Department LS'].v
  864.                     end
  865.                     inicfg.save(mainIni, directIni)
  866.                 elseif imgui.Checkbox(u8'Police Department SF',black[black_select_sklad.v+1]['Police Department SF']) then
  867.                     if black_select_sklad.v == 0 then
  868.                         mainIni.filters.black_Police_Department_SF = black[black_select_sklad.v+1]['Police Department SF'].v
  869.                     else
  870.                         mainIni.filters.black2_Police_Department_SF = black[black_select_sklad.v+1]['Police Department SF'].v
  871.                     end
  872.                     inicfg.save(mainIni, directIni)
  873.                 elseif imgui.Checkbox(u8'Police Department LV',black[black_select_sklad.v+1]['Police Department LV']) then
  874.                     if black_select_sklad.v == 0 then
  875.                         mainIni.filters.black_Police_Department_LV = black[black_select_sklad.v+1]['Police Department LV'].v
  876.                     else
  877.                         mainIni.filters.black2_Police_Department_LV = black[black_select_sklad.v+1]['Police Department LV'].v
  878.                     end
  879.                     inicfg.save(mainIni, directIni)
  880.                 elseif imgui.Checkbox(u8'СТО Los Santos',black[black_select_sklad.v+1]['СТО Los Santos']) then
  881.                     if black_select_sklad.v == 0 then
  882.                         mainIni.filters.black_STO_Los_Santos = black[black_select_sklad.v+1]['СТО Los Santos'].v
  883.                     else
  884.                         mainIni.filters.black2_STO_Los_Santos = black[black_select_sklad.v+1]['СТО Los Santos'].v
  885.                     end
  886.                     inicfg.save(mainIni, directIni)
  887.                 elseif imgui.Checkbox(u8'СТО San Fierro',black[black_select_sklad.v+1]['СТО San Fierro']) then
  888.                     if black_select_sklad.v == 0 then
  889.                         mainIni.filters.black_A_P_LS_STO_San_Fierro = black[black_select_sklad.v+1]['СТО San Fierro'].v
  890.                     else
  891.                         mainIni.filters.black2_STO_San_Fierro = black[black_select_sklad.v+1]['СТО San Fierro'].v
  892.                     end
  893.                     inicfg.save(mainIni, directIni)
  894.                 elseif imgui.Checkbox(u8'СТО Las Venturas',black[black_select_sklad.v+1]['СТО Las Venturas']) then
  895.                     if black_select_sklad.v == 0 then
  896.                         mainIni.filters.black_STO_Las_Venturas = black[black_select_sklad.v+1]['СТО Las Venturas'].v
  897.                     else
  898.                         mainIni.filters.black2_STO_Las_Venturas = black[black_select_sklad.v+1]['СТО Las Venturas'].v
  899.                     end
  900.                     inicfg.save(mainIni, directIni)
  901.                 elseif imgui.Checkbox(u8'База ВВС',black[black_select_sklad.v+1]['База ВВС']) then
  902.                     if black_select_sklad.v == 0 then
  903.                         mainIni.filters.black_vvs = black[black_select_sklad.v+1]['База ВВС'].v
  904.                     else
  905.                         mainIni.filters.black2_vvs = black[black_select_sklad.v+1]['База ВВС'].v
  906.                     end
  907.                     inicfg.save(mainIni, directIni)
  908.                 elseif imgui.Checkbox(u8'База ВМФ',black[black_select_sklad.v+1]['База ВМФ']) then
  909.                     if black_select_sklad.v == 0 then
  910.                         mainIni.filters.black_vmf = black[black_select_sklad.v+1]['База ВМФ'].v
  911.                     else
  912.                         mainIni.filters.black2_vmf = black[black_select_sklad.v+1]['База ВМФ'].v
  913.                     end
  914.                     inicfg.save(mainIni, directIni)
  915.                 elseif imgui.Checkbox(u8'База СВ',black[black_select_sklad.v+1]['База СВ']) then
  916.                     if black_select_sklad.v == 0 then
  917.                         mainIni.filters.black_sv = black[black_select_sklad.v+1]['База СВ'].v
  918.                     else
  919.                         mainIni.filters.black2_sv = black[black_select_sklad.v+1]['База СВ'].v
  920.                     end
  921.                     inicfg.save(mainIni, directIni)
  922.                 elseif imgui.Checkbox(u8'Деревообрабатывающий завод',black[black_select_sklad.v+1]['Деревообрабатывающий завод']) then
  923.                     if black_select_sklad.v == 0 then
  924.                         mainIni.filters.black_wood = black[black_select_sklad.v+1]['Деревообрабатывающий завод'].v
  925.                     else
  926.                         mainIni.filters.black2_wood = black[black_select_sklad.v+1]['Деревообрабатывающий завод'].v
  927.                     end
  928.                     inicfg.save(mainIni, directIni)
  929.                 elseif imgui.Checkbox(u8'Больница Los Santos',black[black_select_sklad.v+1]['Больница Los Santos']) then
  930.                     if black_select_sklad.v == 0 then
  931.                         mainIni.filters.black_bls = black[black_select_sklad.v+1]['Больница Los Santos'].v
  932.                     else
  933.                         mainIni.filters.black2_bls = black[black_select_sklad.v+1]['Больница Los Santos'].v
  934.                     end
  935.                     inicfg.save(mainIni, directIni)
  936.                 elseif imgui.Checkbox(u8'Больница San Fierro',black[black_select_sklad.v+1]['Больница San Fierro']) then
  937.                     if black_select_sklad.v == 0 then
  938.                         mainIni.filters.black_bsf = black[black_select_sklad.v+1]['Больница San Fierro'].v
  939.                     else
  940.                         mainIni.filters.black2_bsf = black[black_select_sklad.v+1]['Больница San Fierro'].v
  941.                     end
  942.                     inicfg.save(mainIni, directIni)
  943.                 elseif imgui.Checkbox(u8'Больница Las Venturas',black[black_select_sklad.v+1]['Больница Las Venturas']) then
  944.                     if black_select_sklad.v == 0 then
  945.                         mainIni.filters.black_blv = black[black_select_sklad.v+1]['Больница Las Venturas'].v
  946.                     else
  947.                         mainIni.filters.black2_blv = black[black_select_sklad.v+1]['Больница Las Venturas'].v
  948.                     end
  949.                     inicfg.save(mainIni, directIni)
  950.                 end
  951.         elseif menu_item == 3 then
  952.             if imgui.Checkbox(u8'Транслировать чат ',vk_send_chat) or
  953.                  imgui.Checkbox(u8'Присылать диалоги (Только для VIP)',senddialog) or
  954.                  imgui.Checkbox(u8'Варнинг в вк, если пишет админ',vk_send_admin) or
  955.                  imgui.Checkbox(u8'Присылать ошибки',vk_send_error) or
  956.                  imgui.Checkbox(u8'Сообщить, если меня кикнул сервер',vk_send_connectreject) or
  957.                  imgui.Checkbox(u8'Присылать состояния складов',vk_send_sklad) or
  958.                  imgui.Checkbox(u8'Присылать принятые заказы',vk_send_zakaz) or
  959.                  imgui.Checkbox(u8'Присылать варнинги',vk_send_warning) then
  960.                      mainIni.filters.vk_send_error = vk_send_error.v
  961.                      mainIni.filters.senddialog = senddialog.v
  962.                      mainIni.filters.vk_send_admin = vk_send_admin.v
  963.                      mainIni.filters.vk_send_connectreject = vk_send_connectreject.v
  964.                      mainIni.filters.vk_send_sklad = vk_send_sklad.v
  965.                      mainIni.filters.vk_send_zakaz = vk_send_zakaz.v
  966.                      mainIni.filters.vk_send_warning = vk_send_warning.v
  967.                      mainIni.filters.vk_send_chat = vk_send_chat.v
  968.                      inicfg.save(mainIni, directIni)
  969.                  end
  970.              elseif  menu_item == 5 then
  971.                  imgui.SetColumnWidth(-1, imgui.GetWindowSize().x - imgui.GetWindowSize().x/3.3)
  972.                  imgui.Text(u8'Личное:')
  973.                  imgui.PlotLines('##ping',statistic['ping'],0,'PING', 0, 200, imgui.ImVec2(680, 160))
  974.                  imgui.Text(u8'Статистика по серверу:')
  975.                  imgui.BeginChild('load', imgui.ImVec2(680,300), true)
  976.                  imgui.Spinner("##spinner", 10, 3, imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonHovered]))
  977.                  imgui.SameLine();imgui.Text(u8'Нагрузка на продукты')
  978.                     for key, val in pairs(statistic['product']) do
  979.                         imgui.BufferingBar(key, val/10, imgui.ImVec2(390, 6), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.Button]),         imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonHovered]));imgui.SameLine()
  980.                         imgui.Text('['..tostring(val)..']\t'..u8:encode(key))
  981.                     end
  982.                  imgui.EndChild()
  983.                  imgui.Text(u8'Склады:')
  984.                  if sklad_statistic[1] then
  985.                      imgui.BeginChild('sklad1', imgui.ImVec2(540,300), true)
  986.                      imgui.Text(u8'Первый склад:')
  987.                      for key, val in pairs(sklad_statistic[1]) do
  988.                          imgui.BufferingBar(key, val/100000, imgui.ImVec2(390, 6), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.Button]),    imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonHovered]));imgui.SameLine()
  989.                          imgui.Text('['..tostring(val)..']\t'..u8:encode(key))
  990.                      end
  991.                      imgui.EndChild()
  992.                  end
  993.                  imgui.SameLine()
  994.                  if sklad_statistic[2] then
  995.                      imgui.BeginChild('sklad2', imgui.ImVec2(540,300), true)
  996.                      imgui.Text(u8'Второй склад:')
  997.                      for key, val in pairs(sklad_statistic[2]) do
  998.                          imgui.BufferingBar(key, val/100000, imgui.ImVec2(390, 6), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.Button]), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonHovered]));imgui.SameLine()
  999.                      imgui.Text('['..tostring(val)..']\t'..u8:encode(key))
  1000.                  end
  1001.                  imgui.EndChild()
  1002.              end
  1003.              elseif menu_item == 2 then
  1004.                  imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3)
  1005.                 if imgui.Checkbox(u8'Работать в АФК',work_afk) then
  1006.                     mainIni.filters.work_afk = work_afk.v
  1007.                     inicfg.save(mainIni, directIni)
  1008.                     if work_afk.v then
  1009.                         afk_start()
  1010.                     else
  1011.                         afk_stop()
  1012.                     end
  1013.                 elseif imgui.Checkbox(u8'Отчеты в /cm',check_cm) then
  1014.                      mainIni.filters.check_cm = check_cm.v
  1015.                         inicfg.save(mainIni, directIni)
  1016.                 elseif imgui.Checkbox(u8'Анонимный чат',check_chat) then
  1017.                     mainIni.filters.check_chat = check_chat.v
  1018.                     inicfg.save(mainIni, directIni)
  1019.                 end
  1020.                 imgui.NextColumn()
  1021.                     imgui.Columns(2,1,false)
  1022.                     imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3.3)
  1023.                     imgui.NextColumn()
  1024.                     imgui.SetCursorPos(imgui.ImVec2(imgui.GetWindowSize().x/3.3+15, 140))
  1025.                     if imgui.InputInt(u8'Стартовая задержка', accept_sleep) then mainIni.filters.accept_sleep = accept_sleep.v ;       inicfg.save(mainIni, directIni) end
  1026.                     if imgui.InputText(u8'Тэг в чате /z', text_chat) then mainIni.filters.text_chat = text_chat.v ;     inicfg.save(mainIni, directIni) end
  1027.                     imgui.BeginChild('LS_SET', imgui.ImVec2(680,180), true)
  1028.                         if imgui.Checkbox(u8'Los-Santos',check_ls) then mainIni.filters.check_ls = check_ls.v;inicfg.save(mainIni, directIni) end
  1029.                         if imgui.InputInt(u8'Мин. кол-во единиц', int_quantity_ls) then mainIni.filters.int_quantity_ls = int_quantity_ls.v ;     inicfg.save(mainIni, directIni) end
  1030.                         if imgui.InputInt(u8'Макс. кол-во единиц', int_maxquantity_ls) then mainIni.filters.int_maxquantity_ls = int_maxquantity_ls.v ;  inicfg.save(mainIni, directIni) end
  1031.                         if imgui.SliderFloat(u8'Мин. цена', text_minprice_ls, 0.0, 7) then mainIni.filters.text_minprice_ls = text_minprice_ls.v ;   inicfg.save(mainIni, directIni) end
  1032.                         if imgui.SliderFloat(u8'Мин. цена доставки', text_minpricedel_ls, 0.0, 1.5) then mainIni.filters.text_minpricedel_ls = text_minpricedel_ls.v ;   inicfg.save(mainIni, directIni) end
  1033.                     imgui.EndChild()
  1034.                     ----------------
  1035.                     imgui.BeginChild('SF_SET', imgui.ImVec2(680,180), true)
  1036.                     if imgui.Checkbox(u8'San-Fierro',check_sf) then mainIni.filters.check_sf = check_sf.v;inicfg.save(mainIni, directIni) end
  1037.                         if imgui.InputInt(u8'Мин. кол-во единиц', int_quantity_sf) then mainIni.filters.int_quantity_sf = int_quantity_sf.v ;     inicfg.save(mainIni, directIni) end
  1038.                         if imgui.InputInt(u8'Макс. кол-во единиц', int_maxquantity_sf) then mainIni.filters.int_maxquantity_sf = int_maxquantity_sf.v ;  inicfg.save(mainIni, directIni) end
  1039.                         if imgui.SliderFloat(u8'Мин. цена', text_minprice_sf, 0.0, 7) then mainIni.filters.text_minprice_sf = text_minprice_sf.v ;   inicfg.save(mainIni, directIni) end
  1040.                         if imgui.SliderFloat(u8'Мин. цена доставки', text_minpricedel_sf, 0.0, 1.5) then mainIni.filters.text_minprice_sf = text_minprice_sf.v ;     inicfg.save(mainIni, directIni) end
  1041.                     imgui.EndChild()
  1042.                     ----------------
  1043.                     imgui.BeginChild('LV_SET', imgui.ImVec2(680,180), true)
  1044.                         if imgui.Checkbox(u8'Las-Venturas',check_lv) then   mainIni.filters.check_lv = check_lv.v;inicfg.save(mainIni, directIni) end
  1045.                         if imgui.InputInt(u8'Мин. кол-во единиц', int_quantity_lv) then mainIni.filters.int_quantity_lv = int_quantity_lv.v ;     inicfg.save(mainIni, directIni) end
  1046.                         if imgui.InputInt(u8'Макс. кол-во единиц', int_maxquantity_lv) then mainIni.filters.int_maxquantity_lv = int_maxquantity_lv.v ;  inicfg.save(mainIni, directIni) end
  1047.                         if imgui.SliderFloat(u8'Мин. цена', text_minprice_lv, 0.0, 7) then mainIni.filters.text_minprice_lv = text_minprice_lv.v ;   inicfg.save(mainIni, directIni) end
  1048.                         if imgui.SliderFloat(u8'Мин. цена доставки', text_minpricedel_lv, 0.0, 1.5) then mainIni.filters.text_minprice_lv = text_minprice_lv.v ;     inicfg.save(mainIni, directIni) end
  1049.                     imgui.EndChild()
  1050.  
  1051.             end
  1052.             imgui.Columns(1)
  1053.             imgui.End()
  1054.         end
  1055.     end
  1056.  
  1057. function apply_custom_style()
  1058.   imgui.SwitchContext()
  1059.   local style = imgui.GetStyle()
  1060.   local colors = style.Colors
  1061.   local clr = imgui.Col
  1062.   local ImVec4 = imgui.ImVec4
  1063.     style.WindowTitleAlign = imgui.ImVec2(0.08, 0.5)
  1064.   style.WindowPadding = imgui.ImVec2(15, 15)
  1065.   style.WindowRounding = 1.5
  1066.   style.FramePadding = imgui.ImVec2(5, 5)
  1067.   style.FrameRounding = 4.0
  1068.   style.ItemSpacing = imgui.ImVec2(12, 8)
  1069.   style.ItemInnerSpacing = imgui.ImVec2(8, 6)
  1070.   style.IndentSpacing = 25.0
  1071.   style.ScrollbarSize = 15.0
  1072.   style.ScrollbarRounding = 9.0
  1073.   style.GrabMinSize = 5.0
  1074.   style.GrabRounding = 3.0
  1075.   colors[clr.Text] = ImVec4(0.80, 0.80, 0.83, 1.00)
  1076.   colors[clr.TextDisabled] = ImVec4(0.24, 0.23, 0.29, 1.00)
  1077.   colors[clr.WindowBg] = ImVec4(0.06, 0.05, 0.07, 0.95)
  1078.   colors[clr.ChildWindowBg] = ImVec4(0.06, 0.05, 0.07, 0.70)
  1079.   colors[clr.PopupBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
  1080.   colors[clr.Border] = ImVec4(0.80, 0.80, 0.83, 0.28)
  1081.   colors[clr.BorderShadow] = ImVec4(0.92, 0.91, 0.88, 0.00)
  1082.   colors[clr.FrameBg] = ImVec4(0.06, 0.05, 0.07, 0.70)
  1083.   colors[clr.FrameBgHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
  1084.   colors[clr.FrameBgActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
  1085.   colors[clr.TitleBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
  1086.   colors[clr.TitleBgCollapsed] = ImVec4(1.00, 0.98, 0.95, 0.75)
  1087.   colors[clr.TitleBgActive] = ImVec4(0.07, 0.07, 0.09, 1.00)
  1088.   colors[clr.MenuBarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
  1089.   colors[clr.ScrollbarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
  1090.   colors[clr.ScrollbarGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
  1091.   colors[clr.ScrollbarGrabHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
  1092.   colors[clr.ScrollbarGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
  1093.   colors[clr.ComboBg] = ImVec4(0.19, 0.18, 0.21, 1.00)
  1094.   colors[clr.CheckMark] = ImVec4(0.80, 0.80, 0.83, 0.31)
  1095.     colors[clr.Separator] = ImVec4(0.06, 0.05, 0.07, 1.00)
  1096.   colors[clr.SliderGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
  1097.   colors[clr.SliderGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
  1098.   colors[clr.Button] = ImVec4(0.10, 0.09, 0.12, 1.00)
  1099.   colors[clr.ButtonHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
  1100.   colors[clr.ButtonActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
  1101.   colors[clr.Header] = ImVec4(0.56, 0.56, 0.58, 0.20)
  1102.   colors[clr.HeaderHovered] = ImVec4(0.56, 0.56, 0.58, 0.20)
  1103.   colors[clr.HeaderActive]     = ImVec4(0.56, 0.56, 0.58, 0.20)
  1104.   colors[clr.ResizeGrip] = ImVec4(0.00, 0.00, 0.00, 0.00)
  1105.   colors[clr.ResizeGripHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
  1106.   colors[clr.ResizeGripActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
  1107.   colors[clr.CloseButton] = ImVec4(0.40, 0.39, 0.38, 0.16)
  1108.   colors[clr.CloseButtonHovered] = ImVec4(0.40, 0.39, 0.38, 0.39)
  1109.   colors[clr.CloseButtonActive] = ImVec4(0.40, 0.39, 0.38, 0.00)
  1110.   colors[clr.PlotLines] = ImVec4(0.48, 0.16, 0.16, 0.70)
  1111.   colors[clr.PlotLinesHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
  1112.   colors[clr.PlotHistogram] = ImVec4(0.40, 0.39, 0.38, 0.63)
  1113.   colors[clr.PlotHistogramHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
  1114.   colors[clr.TextSelectedBg] = ImVec4(0.25, 1.00, 0.00, 0.43)
  1115.   colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
  1116. end
  1117.  
  1118. apply_custom_style()
  1119.  
  1120. function autoupdate(json_url, prefix, url)
  1121.   local dlstatus = require('moonloader').download_status
  1122.   local json = getWorkingDirectory() .. '\\'..thisScript().name..'-version.json'
  1123.   if doesFileExist(json) then os.remove(json) end
  1124.   downloadUrlToFile(json_url, json,
  1125.     function(id, status, p1, p2)
  1126.       if status == dlstatus.STATUSEX_ENDDOWNLOAD then
  1127.         if doesFileExist(json) then
  1128.           local f = io.open(json, 'r')
  1129.           if f then
  1130.             local info = decodeJson(f:read('*a'))
  1131.             updatelink = info.updateurl
  1132.             updateversion = info.latest
  1133.             f:close()
  1134.             os.remove(json)
  1135.             if updateversion ~= thisScript().version then
  1136.               lua_thread.create(function(prefix)
  1137.                 local dlstatus = require('moonloader').download_status
  1138.                 local color = -1
  1139.                 wait(250)
  1140.                 downloadUrlToFile(updatelink, thisScript().path,
  1141.                   function(id3, status1, p13, p23)
  1142.                     if status1 == dlstatus.STATUS_DOWNLOADINGDATA then
  1143.                       print(string.format('Загружено %d из %d.', p13, p23))
  1144.                     elseif status1 == dlstatus.STATUS_ENDDOWNLOADDATA then
  1145.                       print('Загрузка обновления завершена.')
  1146.  
  1147.                       goupdatestatus = true
  1148.                       lua_thread.create(function() wait(500) thisScript():reload() end)
  1149.                     end
  1150.                     if status1 == dlstatus.STATUSEX_ENDDOWNLOAD then
  1151.                       if goupdatestatus == nil then
  1152.                         update = false
  1153.                       end
  1154.                     end
  1155.                   end
  1156.                 )
  1157.                 end, prefix
  1158.               )
  1159.             else
  1160.               update = false
  1161.             end
  1162.           end
  1163.         else
  1164.           print('v'..thisScript().version..': Не могу проверить обновление. Смиритесь или проверьте самостоятельно на '..url)
  1165.           update = false
  1166.         end
  1167.       end
  1168.     end
  1169.   )
  1170.   while update ~= false do wait(100) end
  1171. end
  1172.  
  1173. function cmd_status()
  1174.     if status then
  1175.         update_sklad = 0
  1176.         update_product = 0
  1177.         status = false
  1178.         if bNotf then   notf.addNotification("MONSTER OFF", 3, 1) else sampAddChatMessage('MONSTER {00ff00}OFF',-1) end
  1179.     else
  1180.         update_sklad = 1
  1181.         update_product = 1
  1182.         status = true
  1183.         if bNotf then   notf.addNotification("MONSTER ON", 3, 1) else sampAddChatMessage('MONSTER {FF0000}ON',-1) end
  1184.         sampSendChat('/company')
  1185. end
  1186. end
  1187.  
  1188. function afk_start()
  1189.     writeMemory(7634870, 1, 1, 1)
  1190.     writeMemory(7635034, 1, 1, 1)
  1191.     memory.fill(7623723, 144, 8)
  1192.     memory.fill(5499528, 144, 6)
  1193. end
  1194.  
  1195. function afk_stop()
  1196.     writeMemory(7634870, 1, 0, 0)
  1197.     writeMemory(7635034, 1, 0, 0)
  1198.     memory.hex2bin('5051FF1500838500', 7623723, 8)
  1199.     memory.hex2bin('0F847B010000', 5499528, 6)
  1200. end
  1201. function threadHandle(runner, url, args, resolve, reject) -- обработка effil потока без блокировок
  1202.     local t = runner(url, args)
  1203.     local r = t:get(0)
  1204.     while not r do
  1205.         r = t:get(0)
  1206.         wait(0)
  1207.     end
  1208.     local status = t:status()
  1209.     if status == 'completed' then
  1210.         local ok, result = r[1], r[2]
  1211.         if ok then resolve(result) else reject(result) end
  1212.     elseif err then
  1213.         reject(err)
  1214.     elseif status == 'canceled' then
  1215.         reject(status)
  1216.     end
  1217.     t:cancel(0)
  1218. end
  1219. function imgui.CenterColumnText(text)
  1220.     imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
  1221.     imgui.Text(text)
  1222. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement