- 114
- 12
Здравствуйте, может кто то в данном скрипте добавить дополнительную строчку для 2 сообщения?
Хочу сделать так, что бы в указанное там время можно было отправлять не 1 сообщения а 2, сначала отправляется то что сверху, потом снизу.
Фото самого скрипта и скрипт оставлю.
Код открытый, но оставлю навсякий случай
Хочу сделать так, что бы в указанное там время можно было отправлять не 1 сообщения а 2, сначала отправляется то что сверху, потом снизу.
Фото самого скрипта и скрипт оставлю.
Код открытый, но оставлю навсякий случай
script_name('AutoAdver')
script_author('JD-V')
script_version('0.1.2')
script_description('Авто подача объявлений в вип чат.')
require 'lib.moonloader'
local imgui = require 'imgui'
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local notf = import 'notifications.lua'
local encoding = require 'encoding'
encoding.default = "CP1251"
u8 = encoding.UTF8
local use_chat = false
--======================================== Config ====================================--
local directIni = "AutoAdverSettings.ini"
local loadCfg = inicfg.load(nil, directIni)
--======================================== Chats panel ==============================--
-- Colors
local blue_color = "{5A90CE}"
local white_color = "{FFFFFF}"
local default_color = 0xFFFFFF
-- Other text
local tag = blue_color.."[ AutoAdver ]: "..white_color
--======================================== Imgui panel ==============================--
local showWindow = imgui.ImBool(false)
local textBuffer = imgui.ImBuffer(256)
local sw, sh = getScreenResolution()
--======================================== Program ==================================--
function check_config()
if not loadCfg then
local data = [[
[config]
radio=1
text=
kd=5
active=false
last_run=1
]]
local file = io.open(directIni, "w")
file:write(data)
file:close()
loadCfg = inicfg.load(nil, directIni)
end
textBuffer.v = tostring(loadCfg.config.text)
slider = imgui.ImInt(loadCfg.config.kd)
checked_radio = imgui.ImInt(loadCfg.config.radio)
checked_box = imgui.ImBool(loadCfg.config.active)
last_run = loadCfg.config.last_run
kd = slider.v * 60
textToSend = ''
end
function main ()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
check_config()
sampRegisterChatCommand("adv", cmd_adv)
sampAddChatMessage(tag.."Скрипт запущен!", default_color)
while true do wait(0)
closeWindow()
updateSender()
check_update_settings()
check_using_chat()
end
end
function cmd_adv()
showWindow.v = not showWindow.v
imgui.Process = showWindow.v
end
function imgui.OnDrawFrame()
imgui.SetNextWindowSize(imgui.ImVec2(500, 300), imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.Begin(u8"Настройки скрипта \"AutoAdver\"", showWindow)
imgui.RadioButton(u8"Продажа", checked_radio, 2)
imgui.SameLine()
imgui.RadioButton(u8"Скупка", checked_radio, 3)
imgui.RadioButton(u8"Аренда", checked_radio, 4)
imgui.SameLine()
imgui.RadioButton(u8"Свой текст", checked_radio, 1)
imgui.InputText(u8"Товар (до 100 символов)", textBuffer)
imgui.SliderInt(u8"Кд рассылки (мин.)", slider, 1, 60)
local form = BuyOrSell(checked_radio)
textToSend = form..textBuffer.v
imgui.Text(u8"Сообщение при отправке: "..textToSend)
local date = os.date("%d.%m.%Y %H:%M", last_run)
imgui.Text(u8"Последняя отправка была: "..date)
imgui.Checkbox(u8"Запустить рассылку!", checked_box)
imgui.End()
end
function sampev.onShowDialog(id, style, title, ok, close, tx)
if (tx:find('Ваше сообщение является рекламой')) and (checked_box.v == true) then
if not use_chat then
sampSendDialogResponse(id, 1, 0, nil)
return false
end
return true
end
end
function BuyOrSell(checked_radio)
local change_text = {
[2] = u8"[ПРОДАЖА]: ",
[3] = u8"[СКУП]: ",
[4] = u8"[АРЕНДА]: ",
[1] = ""
}
local form = change_text[checked_radio.v]
return form
end
function updateSender()
if checked_box.v == true and #textBuffer.v == 0 then
checked_box = imgui.ImBool(false)
notf.addNotification("Отсутствует текст для рассылки!", 5) -- текст и время (не больше 10 секунд)
elseif checked_box.v == true and #textToSend > 170 then -- 145 символов в чате
checked_box = imgui.ImBool(false)
notf.addNotification("Cлишком много символов!", 5) -- текст и время (не больше 10 секунд)
elseif checked_box.v == false then
checked_box = imgui.ImBool(false)
else
check_update_settings()
sendMessage()
end
end
function closeWindow()
if showWindow.v == false then
imgui.Process = false
end
end
function sendMessage()
if os.time() - last_run >= kd then
if #textBuffer.v ~= 0 and checked_box.v == true then
sampSendChat('/vr '..u8:decode(textToSend))
last_run = os.time()
loadCfg.config.last_run = last_run
inicfg.save(loadCfg, directIni)
end
end
end
function save_settings()
loadCfg.config.text = textBuffer.v
loadCfg.config.radio = checked_radio.v
loadCfg.config.kd = slider.v
inicfg.save(loadCfg, directIni)
kd = slider.v * 60
end
function check_update_settings()
if (checked_radio ~= loadCfg.config.radio) or (textBuffer.v ~= loadCfg.config.text) or
(slider.v ~= loadCfg.config.kd) or (kd ~= slider.v * 60) then
save_settings()
end
end
function check_using_chat()
local text = sampGetChatInputText()
if text:find('/vr') or text:find('.мк') or text:find('/мк') then
use_chat = true
sleep(5)
else
use_chat = false
end
end
function sleep(sec)
time = os.time()
newtime = time + sec
while (time < newtime) do wait(0)
time = os.time()
end
end
script_author('JD-V')
script_version('0.1.2')
script_description('Авто подача объявлений в вип чат.')
require 'lib.moonloader'
local imgui = require 'imgui'
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local notf = import 'notifications.lua'
local encoding = require 'encoding'
encoding.default = "CP1251"
u8 = encoding.UTF8
local use_chat = false
--======================================== Config ====================================--
local directIni = "AutoAdverSettings.ini"
local loadCfg = inicfg.load(nil, directIni)
--======================================== Chats panel ==============================--
-- Colors
local blue_color = "{5A90CE}"
local white_color = "{FFFFFF}"
local default_color = 0xFFFFFF
-- Other text
local tag = blue_color.."[ AutoAdver ]: "..white_color
--======================================== Imgui panel ==============================--
local showWindow = imgui.ImBool(false)
local textBuffer = imgui.ImBuffer(256)
local sw, sh = getScreenResolution()
--======================================== Program ==================================--
function check_config()
if not loadCfg then
local data = [[
[config]
radio=1
text=
kd=5
active=false
last_run=1
]]
local file = io.open(directIni, "w")
file:write(data)
file:close()
loadCfg = inicfg.load(nil, directIni)
end
textBuffer.v = tostring(loadCfg.config.text)
slider = imgui.ImInt(loadCfg.config.kd)
checked_radio = imgui.ImInt(loadCfg.config.radio)
checked_box = imgui.ImBool(loadCfg.config.active)
last_run = loadCfg.config.last_run
kd = slider.v * 60
textToSend = ''
end
function main ()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
check_config()
sampRegisterChatCommand("adv", cmd_adv)
sampAddChatMessage(tag.."Скрипт запущен!", default_color)
while true do wait(0)
closeWindow()
updateSender()
check_update_settings()
check_using_chat()
end
end
function cmd_adv()
showWindow.v = not showWindow.v
imgui.Process = showWindow.v
end
function imgui.OnDrawFrame()
imgui.SetNextWindowSize(imgui.ImVec2(500, 300), imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.Begin(u8"Настройки скрипта \"AutoAdver\"", showWindow)
imgui.RadioButton(u8"Продажа", checked_radio, 2)
imgui.SameLine()
imgui.RadioButton(u8"Скупка", checked_radio, 3)
imgui.RadioButton(u8"Аренда", checked_radio, 4)
imgui.SameLine()
imgui.RadioButton(u8"Свой текст", checked_radio, 1)
imgui.InputText(u8"Товар (до 100 символов)", textBuffer)
imgui.SliderInt(u8"Кд рассылки (мин.)", slider, 1, 60)
local form = BuyOrSell(checked_radio)
textToSend = form..textBuffer.v
imgui.Text(u8"Сообщение при отправке: "..textToSend)
local date = os.date("%d.%m.%Y %H:%M", last_run)
imgui.Text(u8"Последняя отправка была: "..date)
imgui.Checkbox(u8"Запустить рассылку!", checked_box)
imgui.End()
end
function sampev.onShowDialog(id, style, title, ok, close, tx)
if (tx:find('Ваше сообщение является рекламой')) and (checked_box.v == true) then
if not use_chat then
sampSendDialogResponse(id, 1, 0, nil)
return false
end
return true
end
end
function BuyOrSell(checked_radio)
local change_text = {
[2] = u8"[ПРОДАЖА]: ",
[3] = u8"[СКУП]: ",
[4] = u8"[АРЕНДА]: ",
[1] = ""
}
local form = change_text[checked_radio.v]
return form
end
function updateSender()
if checked_box.v == true and #textBuffer.v == 0 then
checked_box = imgui.ImBool(false)
notf.addNotification("Отсутствует текст для рассылки!", 5) -- текст и время (не больше 10 секунд)
elseif checked_box.v == true and #textToSend > 170 then -- 145 символов в чате
checked_box = imgui.ImBool(false)
notf.addNotification("Cлишком много символов!", 5) -- текст и время (не больше 10 секунд)
elseif checked_box.v == false then
checked_box = imgui.ImBool(false)
else
check_update_settings()
sendMessage()
end
end
function closeWindow()
if showWindow.v == false then
imgui.Process = false
end
end
function sendMessage()
if os.time() - last_run >= kd then
if #textBuffer.v ~= 0 and checked_box.v == true then
sampSendChat('/vr '..u8:decode(textToSend))
last_run = os.time()
loadCfg.config.last_run = last_run
inicfg.save(loadCfg, directIni)
end
end
end
function save_settings()
loadCfg.config.text = textBuffer.v
loadCfg.config.radio = checked_radio.v
loadCfg.config.kd = slider.v
inicfg.save(loadCfg, directIni)
kd = slider.v * 60
end
function check_update_settings()
if (checked_radio ~= loadCfg.config.radio) or (textBuffer.v ~= loadCfg.config.text) or
(slider.v ~= loadCfg.config.kd) or (kd ~= slider.v * 60) then
save_settings()
end
end
function check_using_chat()
local text = sampGetChatInputText()
if text:find('/vr') or text:find('.мк') or text:find('/мк') then
use_chat = true
sleep(5)
else
use_chat = false
end
end
function sleep(sec)
time = os.time()
newtime = time + sec
while (time < newtime) do wait(0)
time = os.time()
end
end