- 396
- 130
- Версия MoonLoader
- Другое
говно:
---===[ Libraries ]===---
local imgui = require 'mimgui'
local ffi = require 'ffi'
local encoding = require 'encoding'
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local new = imgui.new
local str = ffi.string
---===[ Configuration ]===---
local IniFilename = 'ChatFinder.ini'
local cfg = inicfg.load({
main = {
active = true
},
writes = {
wr1 = '',
wr2 = '',
wr3 = '',
wr4 = '',
wr5 = '',
wr6 = ''
}
}, IniFilename)
messages = {}
tcount = 15
---===[ Variables ]===---
local renderWindow = imgui.new.bool(true)
local chatWindow = new.bool(cfg.main.active)
font = renderCreateFont('Arial', 25, 1)
local work = new.bool(cfg.main.active)
local inputField1 = new.char[256](cfg.writes.wr1)
local inputField2 = new.char[256](cfg.writes.wr2)
local inputField3 = new.char[256](cfg.writes.wr3)
local inputField4 = new.char[256](cfg.writes.wr4)
local inputField5 = new.char[256](cfg.writes.wr5)
local inputField6 = new.char[256](cfg.writes.wr6)
---===[ Mimgui Code ]===---
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
end)
local newFrame = imgui.OnFrame(
function() return renderWindow[0] end,
function(player)
local resX, resY = getScreenResolution()
local sizeX, sizeY = 450, 280
imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
if imgui.Begin('> Chat Finder v1.0 <', renderWindow) then
imgui.TextWrapped(u8'Отдельный чат с поиском по ключевым словам :)')
imgui.NewLine()
imgui.Separator()
imgui.NewLine()
if imgui.Checkbox(u8'Активация', work) then
cfg.main.active = work[0]
inicfg.save(cfg, IniFilename)
end
imgui.NewLine()
imgui.Text(u8'Для применения изменений надо перезагрузить скрипты (Ctrl + R) или перезайти')
imgui.NewLine()
if imgui.InputTextWithHint(u8'Слово №1', u8'Введите слово для поиска', inputField1, 256) then
cfg.writes.wr1 = u8:decode(str(inputField1))
inicfg.save(cfg, IniFilename)
end
if imgui.InputTextWithHint(u8'Слово №2', u8'Введите слово для поиска', inputField2, 256) then
cfg.writes.wr2 = u8:decode(str(inputField2))
inicfg.save(cfg, IniFilename)
end
if imgui.InputTextWithHint(u8'Слово №3', u8'Введите слово для поиска', inputField3, 256) then
cfg.writes.wr3 = u8:decode(str(inputField3))
inicfg.save(cfg, IniFilename)
end
if imgui.InputTextWithHint(u8'Слово №4', u8'Введите слово для поиска', inputField4, 256) then
cfg.writes.wr4 = u8:decode(str(inputField4))
inicfg.save(cfg, IniFilename)
end
if imgui.InputTextWithHint(u8'Слово №5', u8'Введите слово для поиска', inputField5, 256) then
cfg.writes.wr5 = u8:decode(str(inputField5))
inicfg.save(cfg, IniFilename)
end
if imgui.InputTextWithHint(u8'Слово №6', u8'Введите слово для поиска', inputField6, 256) then
cfg.writes.wr6 = u8:decode(str(inputField6))
inicfg.save(cfg, IniFilename)
end
imgui.End()
end
end
)
local newFrame2 = imgui.OnFrame(
function() return chatWindow[0] end,
function(player)
player.HideCursor = true
local sizeX, sizeY = 450, 280
imgui.SetNextWindowPos(imgui.ImVec2(200, 200))
imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
if imgui.Begin('> Chat Finder v1.0 <', chatWindow, imgui.WindowFlags.NoDecoration + imgui.WindowFlags.NoInputs + imgui.WindowFlags.NoBackground) then
imgui.Text(u8'ChatFinder')
for k, v in ipairs(messages) do
imgui.TextColoredRGB(v)
end
imgui.End()
end
end
)
---===[ Main Code ]===---
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('cfind', function()
renderWindow[0] = not renderWindow[0]
end)
while true do
wait(0)
if #messages > 14 then
messages = {}
end
end
end
function sampev.onServerMessage(color, text)
table.insert(messages, text)
end
второе окно утягивает за собой первое, как фикс