Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- https://www.blast.hk/threads/51240/
- script_version("0.3.9.2")
- script_properties("work-in-pause")
- require "lib.moonloader"
- require "lib.sampfuncs"
- local memory = require "memory"
- item_id = 0
- accept_id = 0
- lic_day = 0
- places = {}
- local sampev = require 'lib.samp.events'
- local keyy = 0
- local effil = require 'effil'
- local imgui = require 'imgui'
- local ip = 'ws://45.140.167.12:27800'
- local websocket = ''
- local client =''
- if not doesFileExist('moonloader\\lib\\websocket.lua') or
- not doesFileExist('moonloader\\lib\\copas.lua') then
- print('Отсутствуют сетевые библиотеки')
- else
- websocket = require 'websocket'
- client = websocket.client.copas({timeout = 2})
- end
- local font_flag = require('moonloader').font_flag
- local encoding = require 'encoding'
- local res, https = pcall(require, 'ssl.https')
- local inicfg = require 'inicfg'
- imgui.BufferingBar = require('imgui_addons').BufferingBar
- imgui.Spinner = require('imgui_addons').Spinner
- encoding.default = 'CP1251'
- u8 = encoding.UTF8
- if not doesFileExist('moonloader\\config\\gsorter\\gsorter.ini') then
- if not doesDirectoryExist('moonloader\\config\\gsorter') then createDirectory('moonloader\\config\\gsorter') end
- local ini =
- {
- filters =
- {
- check_gun = true,
- check_food = true,
- check_furniture = true,
- check_furnitur = true,
- check_clothes = true,
- check_general = true,
- check_alcohol = true,
- check_transport = true,
- check_accessory = true,
- check_radio = true,
- check_cosmetics = true,
- check_pyrotechnics = true,
- check_auto = true,
- check_sport = true,
- int_price_dost = 0,1,
- check_parachute = true,
- check_type_towar = true,
- check_type_product = true,
- check_type_auto = true,
- check_office = true,
- text_maxprice = 6,
- int_sklad = 0,
- check_fruit = true,
- int_sklad2 = 0,
- int_quantity = 100,
- text_maxdilprice = 0.1,
- item_id = 1141,
- accept_id = 1144,
- delivery_id = 1147,
- go_delivery = true,
- accept_sleep = 350,
- check_sf = true,
- check_ls = true,
- check_lv = true,
- int_maxquantity=3000,
- vk_send_error=true,
- vk_send_sklad=true,
- vk_send_zakaz=true,
- vk_send_warning=true,
- check_cm = true,
- work_afk = false,
- vk_send_connectreject = true,
- text_minprice = 0,
- text_minpricedel = 0,
- check_chat = true
- }
- }
- inicfg.save(ini, 'gsorter\\gsorter')
- end
- local directIni = 'moonloader\\config\\gsorter\\gsorter.ini'
- local mainIni = inicfg.load(nil, directIni)
- local img_logo = imgui.CreateTextureFromFile(getGameDirectory() .. '\\moonloader\\image\\face.png')
- local main_window_state = imgui.ImBool(false)
- local menu_item = 1
- local check_cm = imgui.ImBool(mainIni.filters.check_cm == true )
- local accept_sleep = imgui.ImInt((mainIni.filters.accept_sleep and mainIni.filters.accept_sleep or 350))
- local vk_send_error = imgui.ImBool(mainIni.filters.vk_send_error )
- local vk_send_sklad = imgui.ImBool(mainIni.filters.vk_send_sklad )
- local vk_send_warning = imgui.ImBool(mainIni.filters.vk_send_warning )
- local vk_send_zakaz = imgui.ImBool(mainIni.filters.vk_send_zakaz )
- local vk_send_chat = imgui.ImBool(mainIni.filters.vk_send_chat==true )
- local vk_send_admin = imgui.ImBool(mainIni.filters.vk_send_admin==true )
- local vk_send_connectreject = imgui.ImBool(mainIni.filters.vk_send_connectreject == true )
- local check_sf = imgui.ImBool(mainIni.filters.check_sf==true)
- local check_chat = imgui.ImBool(mainIni.filters.check_chat==true)
- local soft = 'bot_sorter'
- local start_status = true
- local check_ls = imgui.ImBool(mainIni.filters.check_ls)
- local check_lv = imgui.ImBool(mainIni.filters.check_lv)
- local text_maxprice = imgui.ImFloat(mainIni.filters.text_maxprice)
- local text_chat = imgui.ImBuffer((mainIni.filters.text_chat and mainIni.filters.text_chat or u8'Котик'),256)
- local text_minprice_ls = imgui.ImFloat((mainIni.filters.text_minprice_ls and mainIni.filters.text_minprice_ls or 0))
- local int_maxquantity_ls = imgui.ImInt((mainIni.filters.int_maxquantity_ls and mainIni.filters.int_maxquantity_ls or 7500) )
- local int_quantity_ls = imgui.ImInt((mainIni.filters.int_quantity_ls and mainIni.filters.int_quantity_ls or 0))
- local text_minpricedel_ls = imgui.ImFloat((mainIni.filters.text_minpricedel_ls and mainIni.filters.text_minpricedel_ls or 0))
- local text_minprice_sf = imgui.ImFloat((mainIni.filters.text_minprice_sf and mainIni.filters.text_minprice_sf or 0))
- local int_maxquantity_sf = imgui.ImInt((mainIni.filters.int_maxquantity_sf and mainIni.filters.int_maxquantity_sf or 7500) )
- local int_quantity_sf = imgui.ImInt((mainIni.filters.int_quantity_sf and mainIni.filters.int_quantity_sf or 0))
- local text_minpricedel_sf = imgui.ImFloat((mainIni.filters.text_minpricedel_sf and mainIni.filters.text_minpricedel_sf or 0))
- local text_minprice_lv = imgui.ImFloat((mainIni.filters.text_minprice_lv and mainIni.filters.text_minprice_lv or 0))
- local int_maxquantity_lv = imgui.ImInt((mainIni.filters.int_maxquantity_lv and mainIni.filters.int_maxquantity_lv or 7500) )
- local int_quantity_lv = imgui.ImInt((mainIni.filters.int_quantity_lv and mainIni.filters.int_quantity_lv or 0))
- local text_minpricedel_lv = imgui.ImFloat((mainIni.filters.text_minpricedel_lv and mainIni.filters.text_minpricedel_lv or 0))
- local text_maxdilprice = imgui.ImFloat(mainIni.filters.text_maxdilprice)
- local work_afk = imgui.ImBool(mainIni.filters.work_afk==true)
- local senddialog = imgui.ImBool(mainIni.filters.senddialog==true)
- local black_select_sklad = imgui.ImInt(0)
- local black = {}
- black[1] = {}
- black[2] = {}
- black[1]['El Quebrados Hotel'] = imgui.ImBool(mainIni.filters.black_El_Quebrados_Hotel==true)
- black[1]['Alcatraz'] = imgui.ImBool(mainIni.filters.black_Alcatraz==true)
- black[1]['Rock Hotel'] = imgui.ImBool(mainIni.filters.black_Rock_Hotel==true)
- black[1]['South Cluckin Bell'] = imgui.ImBool(mainIni.filters.black_South_Cluckin_Bell==true)
- black[1]['Beach Side Motel'] = imgui.ImBool(mainIni.filters.black_Beach_Side_Motel ==true)
- black[1]['Business center'] = imgui.ImBool(mainIni.filters.black_Business_center ==true)
- black[1]['Central Hotel LS'] = imgui.ImBool(mainIni.filters.black_Central_Hotel_LS ==true)
- black[1]['Concert hall'] = imgui.ImBool(mainIni.filters.black_Concert_hall ==true)
- black[1]['Emerald Isle Motel'] = imgui.ImBool(mainIni.filters.black_Emerald_Isle_Motel ==true)
- black[1]['Family Center'] = imgui.ImBool(mainIni.filters.black_Family_Center ==true)
- black[1]['Jefferson hotel'] = imgui.ImBool(mainIni.filters.black_Jefferson_hotel==true)
- black[1]['Больница Los Santos'] = imgui.ImBool(mainIni.filters.black_bls==true)
- black[1]['Больница San Fierro'] = imgui.ImBool(mainIni.filters.black_bsf==true)
- black[1]['Больница Las Venturas'] = imgui.ImBool(mainIni.filters.black_blv==true)
- black[1]['Шахта'] = imgui.ImBool(mainIni.filters.black_mine==true)
- black[1]['СТО San Fierro'] = imgui.ImBool(mainIni.filters.black_STO_San_Fierro==true)
- black[1]['СТО Los Santos'] = imgui.ImBool(mainIni.filters.black_STO_Los_Santos==true)
- black[1]['СТО Las Venturas'] = imgui.ImBool(mainIni.filters.black_STO_Las_Venturas==true)
- black[1]['Порт Bayside'] = imgui.ImBool(mainIni.filters.black_Bayside==true)
- black[1]['Pirates Hotel'] = imgui.ImBool(mainIni.filters.black_Pirates_Hotel==true)
- black[1]['Police Department LS'] = imgui.ImBool(mainIni.filters.black_Police_Department_LS==true)
- black[1]['Police Department SF'] = imgui.ImBool(mainIni.filters.black_Police_Department_SF==true)
- black[1]['Police Department LV'] = imgui.ImBool(mainIni.filters.black_Police_Department_LV==true)
- black[1]['Аэропорт Los Santos'] = imgui.ImBool(mainIni.filters.black_A_P_LS==true)
- black[1]['Аэропорт San Fierro'] = imgui.ImBool(mainIni.filters.black_A_P_SF==true)
- black[1]['Аэропорт Las Venturas'] = imgui.ImBool(mainIni.filters.black_A_P_LV==true)
- black[1]['Байкерский клуб Bandidos'] = imgui.ImBool(mainIni.filters.black_Bandidos==true)
- black[1]['Байкерский клуб Outlaws'] = imgui.ImBool(mainIni.filters.black_Outlaws==true)
- black[1]['Байкерский клуб Hells Angels'] = imgui.ImBool(mainIni.filters.black_Hells_Angels==true)
- black[1]['База ВВС'] = imgui.ImBool(mainIni.filters.black_vvs==true)
- black[1]['База ВМФ'] = imgui.ImBool(mainIni.filters.black_vmf==true)
- black[1]['База СВ'] = imgui.ImBool(mainIni.filters.black_sv==true)
- black[1]['Деревообрабатывающий завод'] = imgui.ImBool(mainIni.filters.black_wood==true)
- black[2]['El Quebrados Hotel'] = imgui.ImBool(mainIni.filters.black2_El_Quebrados_Hotel==true)
- black[2]['Alcatraz'] = imgui.ImBool(mainIni.filters.black2_Alcatraz==true)
- black[2]['Rock Hotel'] = imgui.ImBool(mainIni.filters.black2_Rock_Hotel==true)
- black[2]['Больница Los Santos'] = imgui.ImBool(mainIni.filters.black2_bls==true)
- black[2]['Больница San Fierro'] = imgui.ImBool(mainIni.filters.black2_bsf==true)
- black[2]['Больница Las Venturas'] = imgui.ImBool(mainIni.filters.black2_blv==true)
- black[2]['South Cluckin Bell'] = imgui.ImBool(mainIni.filters.black2_South_Cluckin_Bell==true)
- black[2]['Beach Side Motel'] = imgui.ImBool(mainIni.filters.black2_Beach_Side_Motel ==true)
- black[2]['Business center'] = imgui.ImBool(mainIni.filters.black2_Business_center ==true)
- black[2]['Central Hotel LS'] = imgui.ImBool(mainIni.filters.black2_Central_Hotel_LS ==true)
- black[2]['Concert hall'] = imgui.ImBool(mainIni.filters.black2_Concert_hall ==true)
- black[2]['Emerald Isle Motel'] = imgui.ImBool(mainIni.filters.black2_Emerald_Isle_Motel ==true)
- black[2]['Family Center'] = imgui.ImBool(mainIni.filters.black2_Family_Center ==true)
- black[2]['Jefferson hotel'] = imgui.ImBool(mainIni.filters.black2_Jefferson_hotel==true)
- black[2]['Шахта'] = imgui.ImBool(mainIni.filters.black2_mine==true)
- black[2]['СТО San Fierro'] = imgui.ImBool(mainIni.filters.black2_STO_San_Fierro==true)
- black[2]['СТО Los Santos'] = imgui.ImBool(mainIni.filters.black2_STO_Los_Santos==true)
- black[2]['СТО Las Venturas'] = imgui.ImBool(mainIni.filters.black2_STO_Las_Venturas==true)
- black[2]['Порт Bayside'] = imgui.ImBool(mainIni.filters.black2_Bayside==true)
- black[2]['Pirates Hotel'] = imgui.ImBool(mainIni.filters.black2_Pirates_Hotel==true)
- black[2]['Police Department LS'] = imgui.ImBool(mainIni.filters.black2_Police_Department_LS==true)
- black[2]['Police Department SF'] = imgui.ImBool(mainIni.filters.black2_Police_Department_SF==true)
- black[2]['Police Department LV'] = imgui.ImBool(mainIni.filters.black2_Police_Department_LV==true)
- black[2]['Аэропорт Los Santos'] = imgui.ImBool(mainIni.filters.black2_A_P_LS==true)
- black[2]['Аэропорт San Fierro'] = imgui.ImBool(mainIni.filters.black2_A_P_SF==true)
- black[2]['Аэропорт Las Venturas'] = imgui.ImBool(mainIni.filters.black2_A_P_LV==true)
- black[2]['Байкерский клуб Bandidos'] = imgui.ImBool(mainIni.filters.black2_Bandidos==true)
- black[2]['Байкерский клуб Outlaws'] = imgui.ImBool(mainIni.filters.black2_Outlaws==true)
- black[2]['Байкерский клуб Hells Angels'] = imgui.ImBool(mainIni.filters.black2_Hells_Angels==true)
- black[2]['База ВВС'] = imgui.ImBool(mainIni.filters.black2_vvs==true)
- black[2]['База ВМФ'] = imgui.ImBool(mainIni.filters.black2_vmf==true)
- black[2]['База СВ'] = imgui.ImBool(mainIni.filters.black2_sv==true)
- black[2]['Деревообрабатывающий завод'] = imgui.ImBool(mainIni.filters.black2_wood==true)
- local password = imgui.ImBuffer((mainIni.filters.password and mainIni.filters.password or '' ),256)
- local auth_window = imgui.ImBool(false)
- local bNotf, notf = pcall(import, "imgui_notf.lua")
- local update_sklad = 0
- local sklad_count=0
- local status = false
- local sklad_statistic={}
- local sendstat = {}
- local my_id = 0
- local statistic = {}
- statistic['ping'] = {}
- statistic['product'] = {}
- local user = 0
- function main()
- while not isSampAvailable() do wait(100) end
- autoupdate("http://www.zamcontroller.ru/sorter/bot/update.json", '['..string.upper(thisScript().name)..']: ', "http://zamcontroller.ru/MONSTER.luac")
- if websocket == '' then
- sampAddChatMessage('ОТСУТСТВУЮТ СЕТЕВЫЕ БИБЛИОТЕКИ, СКАЧАЙТЕ ИХ В ГРУППЕ РАЗРАБОТЧИКАВ', -1)
- sampAddChatMessage('vk.com/diamond_inc', -1)
- end
- _, my_id = sampGetPlayerIdByCharHandle(PLAYER_PED)
- user = sampGetPlayerNickname(my_id)
- local connected, err = client:connect(ip, '')
- if err then print(err) end
- if connected then
- if not connected then
- sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Ошибка соединения с сервером.',-1)
- else
- sampAddChatMessage('{5858FA}[MONSTER]{ffffff} - Вы успешно подключились к серверу скрипта, ожидание авторизации...',-1)
- end
- end
- sampSendChat('/stats')
- sampRegisterChatCommand('monster', cmd_status)
- sampRegisterChatCommand('mset', cmd_mset)
- sampRegisterChatCommand('gst', cmd_gst)
- sampRegisterChatCommand('z', cmd_z)
- if work_afk.v then
- afk_start()
- end
- lua_thread.create(function()
- while true do wait(0)
- local message, opcode = client:receive()
- if message then
- -- print(u8:decode(message))
- local result = decodeJson(message)
- if result.days and tonumber(result.days)>0 then
- _G.item_id = result.item_id
- _G.accept_id = result.accept_id
- _G.lic_day = result.days
- _G.places = result.places
- _G.vip = result.vip
- sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Успешная авторизация, данные о лицензии подтверждены!', -1)
- sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Осталось {B40431}'..lic_day..'{ffffff} дней лицензии',-1)
- sampAddChatMessage('{B40431}[MONSTER]{ffffff} - Анонимный чат: {B40431}/z <text>',-1)
- auth_window.v = false
- bot = true
- elseif result['action']=='stats' and result['data'] then
- for key, val in pairs(result['data']) do
- statistic['product'][u8:decode(key)] = val
- end
- elseif result['action']=='error' then
- sampAddChatMessage('{ff0000}[ERROR] - {ffffff}'..u8:decode(result['text']), -1)
- elseif result['action']=='chat_message' and check_chat.v then
- sampAddChatMessage(u8:decode(tostring(result['text'])), -1)
- elseif result['action']=='ping' then
- client:send(encodeJson({action='pong'}))
- local products = {}
- if status and sklad_statistic[1] and sklad_statistic[2] then
- for key, val in pairs(sklad_statistic[1]) do
- -- sampAddChatMessage(key, -1)
- if not products[key] then
- table.insert(products,key)
- end
- end
- for key, val in pairs(sklad_statistic[2]) do
- if not products[key] then
- table.insert(products,key)
- end
- end
- end
- client:send(u8:encode(encodeJson({action='sendstat',data=products})))
- table.insert(statistic['ping'],sampGetPlayerPing(my_id))
- elseif result['action']=='statistic' then
- statistic['product']=result['data']
- elseif result['action']=='poll' then
- result = result['act']
- if result['action'] == 'cmd' then
- sampSendChat(u8:decode(result['value']))
- elseif result['action'] == 'dialogclose' then
- sampCloseCurrentDialogWithButton(result['value'])
- elseif result['action'] == 'dialogtext' then
- sampSendDialogResponse(sampGetCurrentDialogId(),1,65535,u8:decode(result['value']))
- elseif result['action'] == 'stop' then
- update_sklad = 0
- update_product = 0
- status = false
- sampAddChatMessage('Бот был остановлен через ВКонтакте', -1)
- elseif result['action'] == 'dialogresponse' then
- local id,line = result['value']:match('(%d+)%s+(%d+)')
- sampSendDialogResponse(id,-1,line)
- elseif result['action'] == 'start' then
- update_sklad = 1
- update_product = 1
- status = true
- sampSendChat('/company')
- sampAddChatMessage('Бот был запущен через ВКонтакте', -1)
- elseif result['action'] == 'chatstop' then
- vk_send_chat.v = false
- mainIni.filters.vk_send_chat = vk_send_chat.v
- inicfg.save(mainIni, directIni)
- sampAddChatMessage('Трансляция чата отключена через ВКонтакте', -1)
- elseif result['action'] == 'chatstart' then
- vk_send_chat.v = true
- mainIni.filters.vk_send_chat = vk_send_chat.v
- inicfg.save(mainIni, directIni)
- sampAddChatMessage('Трансляция чата включена через ВКонтакте', -1)
- end
- end
- end
- end
- end)
- while true do wait(0)
- imgui.Process = true
- if isKeyJustPressed(VK_END) then
- main_window_state.v = not main_window_state.v
- end
- end
- end
- function cmd_gst()
- end
- function cmd_z(text)
- lua_thread.create(function()
- if #text>0 then
- if check_chat.v then
- 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+]+%}','')))}))
- else
- sampAddChatMessage('У Вас выключен чат, включить его можно в настройках бота', -1)
- end
- else
- sampAddChatMessage('/z <Текст>', -1)
- end
- end)
- end
- function cmd_mset()
- main_window_state.v = not main_window_state.v
- end
- function onWindowMessage(msg, wparam, lparam)
- if(msg == 0x100) then
- if(wparam == VK_ESCAPE and main_window_state.v) then
- main_window_state.v = false
- consumeWindowMessage()
- end
- end
- end
- function sampev.onShowDialog(id,style,title,button1,button2,text)
- if title:find('Статистика') and not bot then
- auth_window.v = true
- sampSendDialogResponse(id,0,-1)
- return false
- end
- if bot then
- if (style==5 and id==item_id and update_product==1 and status) then
- lua_thread.create(function()
- for line in text: gmatch("[^\n]+") do
- if (line:find("%{FFDF80%}(%d+)%.%{FFFFFF%}%s+([A-Za-zА-Я а-я]+)%s+([A-Za-zА-Я а-я%-]+)%s+(%d+)%s+-%s+%$(%d+%.%d+)%s+%$(%d+%.%d+)")) then
- 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+)")
- -- 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)
- if ( sklad_statistic[1] and (sklad_statistic[1][product] and sklad_statistic[1][product]>=tonumber(quantity)) and
- (black[1][pos] == nil or not black[1][pos].v)) and
- (
- ( places[u8:encode(pos)]=='LS' and
- (
- check_ls.v and
- tonumber(quantity) >= int_quantity_ls.v and
- tonumber(quantity) <= int_maxquantity_ls.v and
- tonumber(delprice) >= text_minpricedel_ls.v and
- tonumber(price) >= text_minprice_ls.v
- )
- ) or
- ( places[u8:encode(pos)]=='SF' and
- (
- check_sf.v and
- tonumber(quantity) >= int_quantity_sf.v and
- tonumber(quantity) <= int_maxquantity_sf.v and
- tonumber(delprice) >= text_minpricedel_sf.v and
- tonumber(price) >= text_minprice_sf.v
- )
- ) or
- ( places[u8:encode(pos)]=='LV' and
- (
- check_lv.v and
- tonumber(quantity) >= int_quantity_lv.v and
- tonumber(quantity) <= int_maxquantity_lv.v and
- tonumber(delprice) >= text_minpricedel_lv.v and
- tonumber(price) >= text_minprice_lv.v
- )
- )
- ) then
- update_product = 2
- sampSendDialogResponse(id,-1,key-1)
- sklad_statistic[1][product] = sklad_statistic[1][product]-quantity
- if sklad_statistic[1][product] < 10000 then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('На первом складу осталось всего '..sklad_statistic[1][product]..' единиц '..product))}))
- end
- break
- elseif ( sklad_statistic[2] and (sklad_statistic[2][product] and sklad_statistic[2][product]>=tonumber(quantity)) and
- (black[2][pos] == nil or not black[2][pos].v)) and
- (
- places[u8:encode(pos)]=='LS' and
- (
- check_ls.v and
- tonumber(quantity) >= int_quantity_ls.v and
- tonumber(quantity) <= int_maxquantity_ls.v and
- tonumber(delprice) >= text_minpricedel_ls.v and
- tonumber(price) >= text_minprice_ls.v
- ) or
- places[u8:encode(pos)]=='SF' and
- (
- check_sf.v and
- tonumber(quantity) >= int_quantity_sf.v and
- tonumber(quantity) <= int_maxquantity_sf.v and
- tonumber(delprice) >= text_minpricedel_sf.v and
- tonumber(price) >= text_minprice_sf.v
- ) or
- places[u8:encode(pos)]=='LV' and
- (
- check_lv.v and
- tonumber(quantity) >= int_quantity_lv.v and
- tonumber(quantity) <= int_maxquantity_lv.v and
- tonumber(delprice) >= text_minpricedel_lv.v and
- tonumber(price) >= text_minprice_lv.v
- )
- ) then
- update_product = 2
- sampSendDialogResponse(id,-1,key-1)
- sklad_statistic[2][product] = sklad_statistic[2][product]-quantity
- if sklad_statistic[2][product] < 10000 then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('На втором складу осталось всего '..sklad_statistic[2][product]..' единиц '..product))}))
- end
- break
- end
- end
- end
- if update_product == 1 then sampAddChatMessage('Нет подходящих.',-1)
- update_product=4
- sampSendDialogResponse(id,0,-1)
- end
- end)
- return false
- elseif id == accept_id and update_product == 2 then -- если надо свой заказ принять
- lua_thread.create(function()
- keyy = 0
- for line in text:gmatch("[^\n]+") do
- if (line:find(quantity)) then
- wait(mainIni.filters.accept_sleep )
- sampSendDialogResponse(id,1,(keyy-1))
- sampAddChatMessage((keyy-1),-1)
- break
- else
- keyy = keyy+1
- end
- end
- end)
- return false
- elseif ((update_product==2 or update_sklad==1 or update_product==4) and title=="{FFDF80}Компания") then
- lua_thread.create(function()
- if update_product==2 then
- sampSendDialogResponse(id,-1,3)
- elseif update_sklad == 1 then
- sampSendDialogResponse(id,-1,1)
- elseif update_product==4 then
- update_product=0
- sampSendDialogResponse(id,0,-1)
- update_sklad = 1
- sampSendChat('/company')
- end
- end)
- return false
- elseif title=='{FFDF80}Склад' and update_sklad==1 then
- lua_thread.create(function()
- sklad_statistic[sklad_count] = {}
- for line in text:gmatch("[^\n]+") do
- if line:find('%{FFDF80%}%d+.%{FFFFFF%}%s+(.*)%s+(%d+)') then
- product,var=line:match('%{FFDF80%}%d+.%{FFFFFF%}%s+(.*)%s+(%d+)')
- var = tonumber(var)
- if var > 0 then sklad_statistic[sklad_count][product]=var end
- end
- end
- local text = ''
- for key, val in pairs(sklad_statistic[sklad_count]) do
- text = text..'<br>'..key..': '..val
- end
- if vk_send_sklad.v and start_status then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring("Состояние "..sklad_count.." склада:"..text))}))
- end
- sampSendDialogResponse(id,0,-1)
- sklad_count = sklad_count-1
- if sklad_count >= 1 then sampSendChat('/company')
- else
- update_sklad = 0
- if start_status then
- update_product=1
- sampSendChat('/exchange1')
- start_status = false
- end
- end
- end)
- return false
- elseif (title:find('Управление складом') and update_sklad==1) then
- lua_thread.create(function()
- sampSendDialogResponse(id,-1,3)
- end)
- return false
- elseif (title:find('Выберите склад') and update_product==2) then
- lua_thread.create(function()
- sampSendDialogResponse(id,-1,0)
- end)
- return false
- elseif (title:find('Состав компании') and update_sklad==1) then
- lua_thread.create(function()
- if sklad_count <= 0 then
- for line in text:gmatch("[^\n]+") do
- if line:find('Склад') then
- sklad_count = sklad_count+1
- end
- end
- end
- if sklad_count then sampSendDialogResponse(id,1,sklad_count-1) end
- end)
- return false
- elseif (title:find('Выберите стоянку') and update_product==2) then
- lua_thread.create(function()
- wait(mainIni.filters.accept_sleep )
- update_product = 3
- sampSendDialogResponse(id,-1,0)
- end)
- return false
- elseif (title:find('Свободные заказы') and update_product==2 or update_product == 3) then
- lua_thread.create(function()
- wait(mainIni.filters.accept_sleep )
- sampSendDialogResponse(id,1,65535,65535)
- if update_product==3 then
- update_product=1
- end
- end)
- return false
- elseif senddialog.v then
- lua_thread.create(function()
- local buttons = ''
- if style == 2 or style == 5 or style==4 then
- buttons = {}
- local line_count = 0
- local last_line_count = 0
- for line in text:gmatch("[^\n]+") do
- line = string.sub(line:gsub('%{[A-Za-z%d+]+%}',''),1,40)
- if #buttons < 5 then
- table.insert(buttons,line_count,
- {{
- '!dialogresponse '..id..' '..last_line_count,
- u8:encode(tostring(line)),
- 'blue'
- }})
- -- end
- else
- client:send(encodeJson(
- {
- soft=soft,
- action='vk',
- dialog_id=id,
- dialog_title=u8:encode(tostring(title:gsub('%{[A-Za-z%d+]+%}',''))),
- dialog_line=buttons,
- dialog_style=style,
- user=tostring(user),
- button1=u8:encode(button1),
- button2=u8:encode(button2)
- }))
- line_count = 0
- buttons = {}
- -- if string.len(line)<60 then
- table.insert(buttons,line_count,
- {{
- '!dialogresponse '..id..' '..last_line_count,
- u8:encode(tostring(line)),
- 'blue'
- }})
- -- end
- end
- last_line_count = last_line_count+1
- line_count = line_count+1
- end
- elseif style == 0 or style == 1 or style == 3 then
- for line in text:gmatch("[^\n]+") do
- buttons = buttons..'<br>'..u8:encode(tostring(line:gsub('%{[A-Za-z%d+]+%}',''):gsub('%[.*%]','')))
- end
- if style == 1 or style == 3 then
- buttons = buttons..u8:encode('<br><br>Чтобы ввести значение, отправьте !dialogtext *текст*')
- end
- end
- client:send(encodeJson(
- {
- soft=soft,
- action='vk',
- dialog_id=id,
- dialog_title=u8:encode(tostring(title:gsub('%{[A-Za-z%d+]+%}',''))),
- dialog_line=buttons,
- dialog_style=style,
- user=tostring(user),
- button1=u8:encode(button1),
- button2=u8:encode(button2)
- }))
- end)
- end
- end
- end
- function sampev.onServerMessage(color,text)
- lua_thread.create(function()
- if text=='• {FFC800}[Подсказка] {ffffff}2 новых заказов на бирже продажи товара. Введите /company для просмотра' and status then
- update_product = 1
- sampSendChat('/exchange1')
- elseif text=='• {00CC00}[Успешно] {ffffff}Вы приняли заказ на доставку товара. Теперь он доступен сотрудникам стоянки компании' then
- if vk_send_zakaz.v then
- sendstat.data = u8:encode("&action=message&text=Взял заказ: "..pos..", "..product..". <br>Количество: "..quantity.."<br>Цена за 1 ед: "..price.."$<br>Цена за доставку 1ед: "..delprice.."$".."&user=" ..tostring(user))
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('Взял заказ: '..pos..', '..product..'. <br>Количество: '..quantity..'<br>Цена за 1 ед: '..price..'$<br>Цена за доставку 1ед: '..delprice..'$'))}))
- end
- if check_cm.v then
- sampSendChat('/cm Заказчик: '.. pos..', товар: '..product)
- sampSendChat('/cm Количество: '..quantity..'ед. Доставка: ' ..delprice..'$/ед.')
- end
- wait(1000)
- sampSendChat('/exchange1')
- elseif (text=='• {00CC00}[Успешно] {ffffff}Вы забронировали товар для продажи. Ожидайте принятия службы доставки в течение 30 минут') then
- update_product=2
- sampSendChat('/company')
- elseif (text == '• {AC0000}[Ошибка] {ffffff}На Ваших складах недостаточно товара для этого заказа' ) then
- update_product = 0
- status = false
- if vk_send_error.v then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('Почему-то на складах кончились продукты без моего ведома. Пытался продать:'..product))}))
- end
- elseif text:find('Администратор [A-Za-z_%d+]+%[%d+%]:') and vk_send_admin.v then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('⚠ВНИМАНИЕ!!! Пишет администратор!<br><br>'..text))}))
- elseif text:find('Добро пожаловать на Diamond Role Play!') then
- if not bot then
- wait(3000)
- auth_window.v = true
- end
- elseif text=='• {AC0000}[Ошибка] {ffffff}Нет свободных заказов на доставку товара' then
- update_product = 1
- if vk_send_error.v then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring('Почему-то не смог словить заказ на доставку. Кто-то быстрее успел.'))}))
- end
- wait(1000)
- sampSendChat('/exchange1')
- elseif vk_send_chat.v then
- client:send(encodeJson({soft=soft,action='vk',user=tostring(user),text=u8:encode(tostring(text:gsub('%{[A-Za-z%d+]+%}','')))}))
- end
- end)
- end
- function imgui.OnDrawFrame()
- local iScreenWidth, iScreenHeight = getScreenResolution()
- if main_window_state.v then imgui.ShowCursor = true else imgui.ShowCursor = false end
- if auth_window.v then
- imgui.SetNextWindowPos(imgui.ImVec2(iScreenWidth/2,iScreenHeight/2), imgui.Cond.FirstUseEver)
- imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
- imgui.Begin(u8"Авторизация",-1, imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoCollapse+imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoMove+imgui.WindowFlags.NoResize)
- imgui.Text(u8'Введите пароль от лицензии')
- imgui.InputText('##password',password)
- if imgui.Button(u8'Далее') then
- mainIni.filters.password = password.v
- inicfg.save(mainIni, directIni)
- lua_thread.create(function()
- _, my_id = sampGetPlayerIdByCharHandle(PLAYER_PED)
- user = sampGetPlayerNickname(my_id)
- local server,port = sampGetCurrentServerAddress()
- client:send(encodeJson({
- soft=soft,
- action = 'auth',
- password = password.v,
- user = tostring(user),
- server = tostring(server)
- }))
- end)
- end
- imgui.End()
- end
- if main_window_state.v then
- imgui.SetNextWindowPos(imgui.ImVec2(0,0), imgui.Cond.FirstUseEver)
- imgui.SetNextWindowSize(imgui.ImVec2(iScreenWidth, iScreenHeight), imgui.Cond.FirstUseEver)
- imgui.Begin(u8"CompanyMonster ["..thisScript().version.."]",main_window_state, imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoCollapse+imgui.WindowFlags.ShowBorders+imgui.WindowFlags.NoMove+imgui.WindowFlags.NoResize)
- local draw_list = imgui.GetWindowDrawList();
- local p = imgui.GetCursorScreenPos();
- imgui.Columns(3,1,false)
- imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/5)
- imgui.SetCursorPos(imgui.ImVec2(0, 0))
- draw_list:AddRectFilled(imgui.ImVec2(0,0), imgui.ImVec2(p.x+imgui.GetWindowSize().x/3.3 ,p.y+imgui.GetWindowSize().y), 0x990E0E0E)
- imgui.SetCursorPos(imgui.ImVec2(20, 20))
- imgui.Image(img_logo, imgui.ImVec2(170, 170))
- if imgui.Selectable(u8'\t\t\t\tСтартовая',menu_item==1) then menu_item = 1
- elseif imgui.Selectable(u8'\t\t\t\tСтатистика',menu_item==5 ) then menu_item = 5
- elseif imgui.Selectable(u8'\t\t\tНастройки бота',menu_item==2) then menu_item = 2
- elseif imgui.Selectable(u8'\t\tЧерный список заказов',menu_item==4 ) then menu_item = 4
- elseif imgui.Selectable(u8'\t\tУведомления ВКонтакте',menu_item==3 ) then menu_item = 3 end
- imgui.SetCursorPos(imgui.ImVec2(imgui.GetWindowSize().x/15,imgui.GetWindowSize().y-30))
- imgui.Text(u8'Осталось дней: '..lic_day)
- imgui.SetCursorPos(imgui.ImVec2(imgui.GetWindowSize().x/13,imgui.GetWindowSize().y-70))
- if imgui.Button((not status and u8'Запустить' or u8'Остановить'),imgui.ImVec2(80, 30)) then
- if status then
- update_sklad = 0
- update_product = 0
- status = false
- else
- update_sklad = 1
- update_product = 1
- status = true
- end
- if status then sampSendChat('/company') end
- end
- imgui.NextColumn()
- if menu_item == 1 then
- imgui.Columns(2,1,false)
- imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3.3)
- imgui.NextColumn()
- imgui.SetCursorPos(imgui.ImVec2(imgui.GetColumnWidth()/1.4,40))
- imgui.Image(img_logo, imgui.ImVec2(570, 570))
- imgui.CenterColumnText(u8'Ебись оно всё конем ;c')
- elseif menu_item == 4 then
- imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3)
- imgui.Text(u8'Выбранные пункты НЕ будут ловиться')
- if imgui.Checkbox(u8'Alcatraz',black[black_select_sklad.v+1]['Alcatraz']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Alcatraz = black[black_select_sklad.v+1]['Alcatraz'].v
- else
- mainIni.filters.black2_Alcatraz = black[black_select_sklad.v+1]['Alcatraz'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8' El Quebrados Hotel',black[black_select_sklad.v+1]['El Quebrados Hotel']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_El_Quebrados_Hotel = black[black_select_sklad.v+1]['El Quebrados Hotel'].v
- else
- mainIni.filters.black2_El_Quebrados_Hotel = black[black_select_sklad.v+1]['El Quebrados Hotel'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Beach Side Motel',black[black_select_sklad.v+1]['Beach Side Motel']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black2_Beach_Side_Motel = black[black_select_sklad.v+1]['Beach Side Motel'].v
- else
- mainIni.filters.black_Beach_Side_Motel = black[black_select_sklad.v+1]['Beach Side Motel'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Business center',black[black_select_sklad.v+1]['Business center']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Business_center = black[black_select_sklad.v+1]['Business center'].v
- else
- mainIni.filters.black2_Business_center = black[black_select_sklad.v+1]['Business center'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Central Hotel LS',black[black_select_sklad.v+1]['Central Hotel LS']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Central_Hotel_LS = black[black_select_sklad.v+1]['Central Hotel LS'].v
- else
- mainIni.filters.black2_Central_Hotel_LS = black[black_select_sklad.v+1]['Central Hotel LS'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Concert hall',black[black_select_sklad.v+1]['Concert hall']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Concert_hall = black[black_select_sklad.v+1]['Concert hall'].v
- else
- mainIni.filters.black2_Concert_hall = black[black_select_sklad.v+1]['Concert hall'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Emerald Isle Motel',black[black_select_sklad.v+1]['Emerald Isle Motel']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Emerald_Isle_Motel = black[black_select_sklad.v+1]['Emerald Isle Motel'].v
- else
- mainIni.filters.black2_Emerald_Isle_Motel = black[black_select_sklad.v+1]['Emerald Isle Motel'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Порт Bayside',black[black_select_sklad.v+1]['Порт Bayside']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Bayside = black[black_select_sklad.v+1]['Порт Bayside'].v
- else
- mainIni.filters.black2_Bayside = black[black_select_sklad.v+1]['Порт Bayside'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Шахта',black[black_select_sklad.v+1]['Шахта']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_mine = black[black_select_sklad.v+1]['Шахта'].v
- else
- mainIni.filters.black2_mine = black[black_select_sklad.v+1]['Шахта'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Байкерский клуб Hells Angels',black[black_select_sklad.v+1]['Байкерский клуб Hells Angels']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Hells_Angels = black[black_select_sklad.v+1]['Байкерский клуб Hells Angels'].v
- else
- mainIni.filters.black2_Hells_Angels = black[black_select_sklad.v+1]['Байкерский клуб Hells Angels'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Байкерский клуб Bandidos',black[black_select_sklad.v+1]['Байкерский клуб Bandidos']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Bandidos = black[black_select_sklad.v+1]['Байкерский клуб Bandidos'].v
- else
- mainIni.filters.black2_Bandidos = black[black_select_sklad.v+1]['Байкерский клуб Bandidos'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Байкерский клуб Outlaws',black[black_select_sklad.v+1]['Байкерский клуб Outlaws']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Outlaws = black[black_select_sklad.v+1]['Байкерский клуб Outlaws'].v
- else
- mainIni.filters.black2_Outlaws = black[black_select_sklad.v+1]['Байкерский клуб Outlaws'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Аэропорт ЛС',black[black_select_sklad.v+1]['Аэропорт Los Santos']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_A_P_LS = black[black_select_sklad.v+1]['Аэропорт Los Santos'].v
- else
- mainIni.filters.black2_A_P_LS = black[black_select_sklad.v+1]['Аэропорт Los Santos'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Аэропорт СФ',black[black_select_sklad.v+1]['Аэропорт San Fierro']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_A_P_SF = black[black_select_sklad.v+1]['Аэропорт San Fierro'].v
- else
- mainIni.filters.black2_A_P_SF = black[black_select_sklad.v+1]['Аэропорт San Fierro'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Аэропорт ЛВ',black[black_select_sklad.v+1]['Аэропорт Las Venturas']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_A_P_LV = black[black_select_sklad.v+1]['Аэропорт Las Venturas'].v
- else
- mainIni.filters.black2_A_P_LV = black[black_select_sklad.v+1]['Аэропорт Las Venturas'].v
- end
- inicfg.save(mainIni, directIni)
- end
- imgui.NextColumn()
- imgui.ListBox('##1', black_select_sklad,{u8'Первый склад',u8'Второй склад'}, 2)
- if imgui.Checkbox(u8'Family Center',black[black_select_sklad.v+1]['Family Center']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Family_Center = black[black_select_sklad.v+1]['Family Center'].v
- else
- mainIni.filters.black2_Family_Center = black[black_select_sklad.v+1]['Family Center'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Jefferson hotel',black[black_select_sklad.v+1]['Jefferson hotel']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Jefferson_hotel = black[black_select_sklad.v+1]['Jefferson hotel'].v
- else
- mainIni.filters.black2_Jefferson_hotel = black[black_select_sklad.v+1]['Jefferson hotel'].v
- end
- inicfg.save(mainIni, directIni)
- 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)
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Pirates_Hotel = black[black_select_sklad.v+1]['Pirates Hotel'].v
- else
- mainIni.filters.black2_Pirates_Hotel = black[black_select_sklad.v+1]['Pirates Hotel'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Police Department LS',black[black_select_sklad.v+1]['Police Department LS']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Concert_hall = black[black_select_sklad.v+1]['Police Department LS'].v
- else
- mainIni.filters.black2_Concert_hall = black[black_select_sklad.v+1]['Police Department LS'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Police Department SF',black[black_select_sklad.v+1]['Police Department SF']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Police_Department_SF = black[black_select_sklad.v+1]['Police Department SF'].v
- else
- mainIni.filters.black2_Police_Department_SF = black[black_select_sklad.v+1]['Police Department SF'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Police Department LV',black[black_select_sklad.v+1]['Police Department LV']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_Police_Department_LV = black[black_select_sklad.v+1]['Police Department LV'].v
- else
- mainIni.filters.black2_Police_Department_LV = black[black_select_sklad.v+1]['Police Department LV'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'СТО Los Santos',black[black_select_sklad.v+1]['СТО Los Santos']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_STO_Los_Santos = black[black_select_sklad.v+1]['СТО Los Santos'].v
- else
- mainIni.filters.black2_STO_Los_Santos = black[black_select_sklad.v+1]['СТО Los Santos'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'СТО San Fierro',black[black_select_sklad.v+1]['СТО San Fierro']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_A_P_LS_STO_San_Fierro = black[black_select_sklad.v+1]['СТО San Fierro'].v
- else
- mainIni.filters.black2_STO_San_Fierro = black[black_select_sklad.v+1]['СТО San Fierro'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'СТО Las Venturas',black[black_select_sklad.v+1]['СТО Las Venturas']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_STO_Las_Venturas = black[black_select_sklad.v+1]['СТО Las Venturas'].v
- else
- mainIni.filters.black2_STO_Las_Venturas = black[black_select_sklad.v+1]['СТО Las Venturas'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'База ВВС',black[black_select_sklad.v+1]['База ВВС']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_vvs = black[black_select_sklad.v+1]['База ВВС'].v
- else
- mainIni.filters.black2_vvs = black[black_select_sklad.v+1]['База ВВС'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'База ВМФ',black[black_select_sklad.v+1]['База ВМФ']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_vmf = black[black_select_sklad.v+1]['База ВМФ'].v
- else
- mainIni.filters.black2_vmf = black[black_select_sklad.v+1]['База ВМФ'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'База СВ',black[black_select_sklad.v+1]['База СВ']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_sv = black[black_select_sklad.v+1]['База СВ'].v
- else
- mainIni.filters.black2_sv = black[black_select_sklad.v+1]['База СВ'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Деревообрабатывающий завод',black[black_select_sklad.v+1]['Деревообрабатывающий завод']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_wood = black[black_select_sklad.v+1]['Деревообрабатывающий завод'].v
- else
- mainIni.filters.black2_wood = black[black_select_sklad.v+1]['Деревообрабатывающий завод'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Больница Los Santos',black[black_select_sklad.v+1]['Больница Los Santos']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_bls = black[black_select_sklad.v+1]['Больница Los Santos'].v
- else
- mainIni.filters.black2_bls = black[black_select_sklad.v+1]['Больница Los Santos'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Больница San Fierro',black[black_select_sklad.v+1]['Больница San Fierro']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_bsf = black[black_select_sklad.v+1]['Больница San Fierro'].v
- else
- mainIni.filters.black2_bsf = black[black_select_sklad.v+1]['Больница San Fierro'].v
- end
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Больница Las Venturas',black[black_select_sklad.v+1]['Больница Las Venturas']) then
- if black_select_sklad.v == 0 then
- mainIni.filters.black_blv = black[black_select_sklad.v+1]['Больница Las Venturas'].v
- else
- mainIni.filters.black2_blv = black[black_select_sklad.v+1]['Больница Las Venturas'].v
- end
- inicfg.save(mainIni, directIni)
- end
- elseif menu_item == 3 then
- if imgui.Checkbox(u8'Транслировать чат ',vk_send_chat) or
- imgui.Checkbox(u8'Присылать диалоги (Только для VIP)',senddialog) or
- imgui.Checkbox(u8'Варнинг в вк, если пишет админ',vk_send_admin) or
- imgui.Checkbox(u8'Присылать ошибки',vk_send_error) or
- imgui.Checkbox(u8'Сообщить, если меня кикнул сервер',vk_send_connectreject) or
- imgui.Checkbox(u8'Присылать состояния складов',vk_send_sklad) or
- imgui.Checkbox(u8'Присылать принятые заказы',vk_send_zakaz) or
- imgui.Checkbox(u8'Присылать варнинги',vk_send_warning) then
- mainIni.filters.vk_send_error = vk_send_error.v
- mainIni.filters.senddialog = senddialog.v
- mainIni.filters.vk_send_admin = vk_send_admin.v
- mainIni.filters.vk_send_connectreject = vk_send_connectreject.v
- mainIni.filters.vk_send_sklad = vk_send_sklad.v
- mainIni.filters.vk_send_zakaz = vk_send_zakaz.v
- mainIni.filters.vk_send_warning = vk_send_warning.v
- mainIni.filters.vk_send_chat = vk_send_chat.v
- inicfg.save(mainIni, directIni)
- end
- elseif menu_item == 5 then
- imgui.SetColumnWidth(-1, imgui.GetWindowSize().x - imgui.GetWindowSize().x/3.3)
- imgui.Text(u8'Личное:')
- imgui.PlotLines('##ping',statistic['ping'],0,'PING', 0, 200, imgui.ImVec2(680, 160))
- imgui.Text(u8'Статистика по серверу:')
- imgui.BeginChild('load', imgui.ImVec2(680,300), true)
- imgui.Spinner("##spinner", 10, 3, imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonHovered]))
- imgui.SameLine();imgui.Text(u8'Нагрузка на продукты')
- for key, val in pairs(statistic['product']) do
- 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()
- imgui.Text('['..tostring(val)..']\t'..u8:encode(key))
- end
- imgui.EndChild()
- imgui.Text(u8'Склады:')
- if sklad_statistic[1] then
- imgui.BeginChild('sklad1', imgui.ImVec2(540,300), true)
- imgui.Text(u8'Первый склад:')
- for key, val in pairs(sklad_statistic[1]) do
- 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()
- imgui.Text('['..tostring(val)..']\t'..u8:encode(key))
- end
- imgui.EndChild()
- end
- imgui.SameLine()
- if sklad_statistic[2] then
- imgui.BeginChild('sklad2', imgui.ImVec2(540,300), true)
- imgui.Text(u8'Второй склад:')
- for key, val in pairs(sklad_statistic[2]) do
- 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()
- imgui.Text('['..tostring(val)..']\t'..u8:encode(key))
- end
- imgui.EndChild()
- end
- elseif menu_item == 2 then
- imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3)
- if imgui.Checkbox(u8'Работать в АФК',work_afk) then
- mainIni.filters.work_afk = work_afk.v
- inicfg.save(mainIni, directIni)
- if work_afk.v then
- afk_start()
- else
- afk_stop()
- end
- elseif imgui.Checkbox(u8'Отчеты в /cm',check_cm) then
- mainIni.filters.check_cm = check_cm.v
- inicfg.save(mainIni, directIni)
- elseif imgui.Checkbox(u8'Анонимный чат',check_chat) then
- mainIni.filters.check_chat = check_chat.v
- inicfg.save(mainIni, directIni)
- end
- imgui.NextColumn()
- imgui.Columns(2,1,false)
- imgui.SetColumnWidth(-1, imgui.GetWindowSize().x/3.3)
- imgui.NextColumn()
- imgui.SetCursorPos(imgui.ImVec2(imgui.GetWindowSize().x/3.3+15, 140))
- if imgui.InputInt(u8'Стартовая задержка', accept_sleep) then mainIni.filters.accept_sleep = accept_sleep.v ; inicfg.save(mainIni, directIni) end
- if imgui.InputText(u8'Тэг в чате /z', text_chat) then mainIni.filters.text_chat = text_chat.v ; inicfg.save(mainIni, directIni) end
- imgui.BeginChild('LS_SET', imgui.ImVec2(680,180), true)
- if imgui.Checkbox(u8'Los-Santos',check_ls) then mainIni.filters.check_ls = check_ls.v;inicfg.save(mainIni, directIni) end
- if imgui.InputInt(u8'Мин. кол-во единиц', int_quantity_ls) then mainIni.filters.int_quantity_ls = int_quantity_ls.v ; inicfg.save(mainIni, directIni) end
- if imgui.InputInt(u8'Макс. кол-во единиц', int_maxquantity_ls) then mainIni.filters.int_maxquantity_ls = int_maxquantity_ls.v ; inicfg.save(mainIni, directIni) end
- 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
- 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
- imgui.EndChild()
- ----------------
- imgui.BeginChild('SF_SET', imgui.ImVec2(680,180), true)
- if imgui.Checkbox(u8'San-Fierro',check_sf) then mainIni.filters.check_sf = check_sf.v;inicfg.save(mainIni, directIni) end
- if imgui.InputInt(u8'Мин. кол-во единиц', int_quantity_sf) then mainIni.filters.int_quantity_sf = int_quantity_sf.v ; inicfg.save(mainIni, directIni) end
- if imgui.InputInt(u8'Макс. кол-во единиц', int_maxquantity_sf) then mainIni.filters.int_maxquantity_sf = int_maxquantity_sf.v ; inicfg.save(mainIni, directIni) end
- 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
- 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
- imgui.EndChild()
- ----------------
- imgui.BeginChild('LV_SET', imgui.ImVec2(680,180), true)
- if imgui.Checkbox(u8'Las-Venturas',check_lv) then mainIni.filters.check_lv = check_lv.v;inicfg.save(mainIni, directIni) end
- if imgui.InputInt(u8'Мин. кол-во единиц', int_quantity_lv) then mainIni.filters.int_quantity_lv = int_quantity_lv.v ; inicfg.save(mainIni, directIni) end
- if imgui.InputInt(u8'Макс. кол-во единиц', int_maxquantity_lv) then mainIni.filters.int_maxquantity_lv = int_maxquantity_lv.v ; inicfg.save(mainIni, directIni) end
- 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
- 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
- imgui.EndChild()
- end
- imgui.Columns(1)
- imgui.End()
- end
- end
- function apply_custom_style()
- imgui.SwitchContext()
- local style = imgui.GetStyle()
- local colors = style.Colors
- local clr = imgui.Col
- local ImVec4 = imgui.ImVec4
- style.WindowTitleAlign = imgui.ImVec2(0.08, 0.5)
- style.WindowPadding = imgui.ImVec2(15, 15)
- style.WindowRounding = 1.5
- style.FramePadding = imgui.ImVec2(5, 5)
- style.FrameRounding = 4.0
- style.ItemSpacing = imgui.ImVec2(12, 8)
- style.ItemInnerSpacing = imgui.ImVec2(8, 6)
- style.IndentSpacing = 25.0
- style.ScrollbarSize = 15.0
- style.ScrollbarRounding = 9.0
- style.GrabMinSize = 5.0
- style.GrabRounding = 3.0
- colors[clr.Text] = ImVec4(0.80, 0.80, 0.83, 1.00)
- colors[clr.TextDisabled] = ImVec4(0.24, 0.23, 0.29, 1.00)
- colors[clr.WindowBg] = ImVec4(0.06, 0.05, 0.07, 0.95)
- colors[clr.ChildWindowBg] = ImVec4(0.06, 0.05, 0.07, 0.70)
- colors[clr.PopupBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
- colors[clr.Border] = ImVec4(0.80, 0.80, 0.83, 0.28)
- colors[clr.BorderShadow] = ImVec4(0.92, 0.91, 0.88, 0.00)
- colors[clr.FrameBg] = ImVec4(0.06, 0.05, 0.07, 0.70)
- colors[clr.FrameBgHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
- colors[clr.FrameBgActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
- colors[clr.TitleBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
- colors[clr.TitleBgCollapsed] = ImVec4(1.00, 0.98, 0.95, 0.75)
- colors[clr.TitleBgActive] = ImVec4(0.07, 0.07, 0.09, 1.00)
- colors[clr.MenuBarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
- colors[clr.ScrollbarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
- colors[clr.ScrollbarGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
- colors[clr.ScrollbarGrabHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
- colors[clr.ScrollbarGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
- colors[clr.ComboBg] = ImVec4(0.19, 0.18, 0.21, 1.00)
- colors[clr.CheckMark] = ImVec4(0.80, 0.80, 0.83, 0.31)
- colors[clr.Separator] = ImVec4(0.06, 0.05, 0.07, 1.00)
- colors[clr.SliderGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
- colors[clr.SliderGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
- colors[clr.Button] = ImVec4(0.10, 0.09, 0.12, 1.00)
- colors[clr.ButtonHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
- colors[clr.ButtonActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
- colors[clr.Header] = ImVec4(0.56, 0.56, 0.58, 0.20)
- colors[clr.HeaderHovered] = ImVec4(0.56, 0.56, 0.58, 0.20)
- colors[clr.HeaderActive] = ImVec4(0.56, 0.56, 0.58, 0.20)
- colors[clr.ResizeGrip] = ImVec4(0.00, 0.00, 0.00, 0.00)
- colors[clr.ResizeGripHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
- colors[clr.ResizeGripActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
- colors[clr.CloseButton] = ImVec4(0.40, 0.39, 0.38, 0.16)
- colors[clr.CloseButtonHovered] = ImVec4(0.40, 0.39, 0.38, 0.39)
- colors[clr.CloseButtonActive] = ImVec4(0.40, 0.39, 0.38, 0.00)
- colors[clr.PlotLines] = ImVec4(0.48, 0.16, 0.16, 0.70)
- colors[clr.PlotLinesHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
- colors[clr.PlotHistogram] = ImVec4(0.40, 0.39, 0.38, 0.63)
- colors[clr.PlotHistogramHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
- colors[clr.TextSelectedBg] = ImVec4(0.25, 1.00, 0.00, 0.43)
- colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
- end
- apply_custom_style()
- function autoupdate(json_url, prefix, url)
- local dlstatus = require('moonloader').download_status
- local json = getWorkingDirectory() .. '\\'..thisScript().name..'-version.json'
- if doesFileExist(json) then os.remove(json) end
- downloadUrlToFile(json_url, json,
- function(id, status, p1, p2)
- if status == dlstatus.STATUSEX_ENDDOWNLOAD then
- if doesFileExist(json) then
- local f = io.open(json, 'r')
- if f then
- local info = decodeJson(f:read('*a'))
- updatelink = info.updateurl
- updateversion = info.latest
- f:close()
- os.remove(json)
- if updateversion ~= thisScript().version then
- lua_thread.create(function(prefix)
- local dlstatus = require('moonloader').download_status
- local color = -1
- wait(250)
- downloadUrlToFile(updatelink, thisScript().path,
- function(id3, status1, p13, p23)
- if status1 == dlstatus.STATUS_DOWNLOADINGDATA then
- print(string.format('Загружено %d из %d.', p13, p23))
- elseif status1 == dlstatus.STATUS_ENDDOWNLOADDATA then
- print('Загрузка обновления завершена.')
- goupdatestatus = true
- lua_thread.create(function() wait(500) thisScript():reload() end)
- end
- if status1 == dlstatus.STATUSEX_ENDDOWNLOAD then
- if goupdatestatus == nil then
- update = false
- end
- end
- end
- )
- end, prefix
- )
- else
- update = false
- end
- end
- else
- print('v'..thisScript().version..': Не могу проверить обновление. Смиритесь или проверьте самостоятельно на '..url)
- update = false
- end
- end
- end
- )
- while update ~= false do wait(100) end
- end
- function cmd_status()
- if status then
- update_sklad = 0
- update_product = 0
- status = false
- if bNotf then notf.addNotification("MONSTER OFF", 3, 1) else sampAddChatMessage('MONSTER {00ff00}OFF',-1) end
- else
- update_sklad = 1
- update_product = 1
- status = true
- if bNotf then notf.addNotification("MONSTER ON", 3, 1) else sampAddChatMessage('MONSTER {FF0000}ON',-1) end
- sampSendChat('/company')
- end
- end
- function afk_start()
- writeMemory(7634870, 1, 1, 1)
- writeMemory(7635034, 1, 1, 1)
- memory.fill(7623723, 144, 8)
- memory.fill(5499528, 144, 6)
- end
- function afk_stop()
- writeMemory(7634870, 1, 0, 0)
- writeMemory(7635034, 1, 0, 0)
- memory.hex2bin('5051FF1500838500', 7623723, 8)
- memory.hex2bin('0F847B010000', 5499528, 6)
- end
- function threadHandle(runner, url, args, resolve, reject) -- обработка effil потока без блокировок
- local t = runner(url, args)
- local r = t:get(0)
- while not r do
- r = t:get(0)
- wait(0)
- end
- local status = t:status()
- if status == 'completed' then
- local ok, result = r[1], r[2]
- if ok then resolve(result) else reject(result) end
- elseif err then
- reject(err)
- elseif status == 'canceled' then
- reject(status)
- end
- t:cancel(0)
- end
- function imgui.CenterColumnText(text)
- imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
- imgui.Text(text)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement