script_author('chapo')
local ffi = require('ffi')
local sampev = require 'lib.samp.events'
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local inicfg = require 'inicfg'
local directIni = 'NiggerListedWords.ini'
local ini = inicfg.load(inicfg.load({
main = {
list = "[]"
},
}, directIni))
inicfg.save(ini, directIni)
local renderWindow = imgui.new.bool(true)
local Add = imgui.new.char[128]('')
local List = decodeJson(ini.main.list)
local save = function()
ini.main.list = encodeJson(List)
inicfg.save(ini, directIni)
end
function sampev.onSendChat(text)
for k, v in ipairs(List) do
if text:find(v) then
sampAddChatMessage('Найдено запрещенное слово "'..v..'"', -1)
return false
end
end
end
local newFrame = imgui.OnFrame(
function() return renderWindow[0] end,
function(player)
local resX, resY = getScreenResolution()
local sizeX, sizeY = 300, 300
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('BlacklistedWords', renderWindow) then
local size = imgui.GetWindowSize()
imgui.SetCursorPosX(5)
if imgui.Button(u8'Добавить', imgui.ImVec2(size.x - 5, 24)) then
imgui.OpenPopup(u8'пизда')
end
if imgui.BeginPopupModal(u8'пизда', _, imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoResize) then
imgui.SetWindowSizeVec2(imgui.ImVec2(200, 150))
imgui.InputText(u8'Слово', Add, ffi.sizeof(Add))
if imgui.Button(u8'Добавить') then
table.insert(List, u8:decode(ffi.string(Add)))
imgui.StrCopy(Add, '')
save()
imgui.CloseCurrentPopup()
end
if imgui.Button(u8'Закрыть') then
imgui.StrCopy(Add, '')
imgui.CloseCurrentPopup()
end
imgui.EndPopup()
end
imgui.SetCursorPosX(5)
if imgui.BeginChild('list', imgui.ImVec2(size.x - 10, size.y - 10 - imgui.GetCursorPosY()), true) then
for k, v in ipairs(List) do
imgui.Text(u8(v))
imgui.SameLine()
imgui.SetCursorPosX(size.x - 100)
imgui.TextDisabled(u8'УДАЛИТЬ')
if imgui.IsItemClicked() then
table.remove(List, k)
save()
end
end
imgui.EndChild()
end
imgui.End()
end
end
)
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('nword', function()
renderWindow[0] = not renderWindow[0]
end)
wait(-1)
end