- 38
- 2
У меня есть код, но не могу сделать статистику инвайтов. могу скинуть код (не осуждайте на говно код)
Lua:
local imgui = require('mimgui');
local ffi = require('ffi');
local encoding = require('encoding');
encoding.default = 'CP1251';
local u8 = encoding.UTF8;
local window = imgui.new.bool(false);
local active = imgui.new.bool(false)
local inviteCountDay = 0 -- счетчик приглашений за день
local inviteCountWeek = 0 -- счетчик приглашений за неделю
local inviteCountMonth = 0 -- счетчик приглашений за месяц
local inviteCountTotal = 0 -- счетчик приглашений за все время
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil;
end);
imgui.OnFrame( function() return window[0] end, function(this)
local size, res = imgui.ImVec2(450, 250), imgui.ImVec2(getScreenResolution())
imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
imgui.SetNextWindowPos(imgui.ImVec2(res.x / 2, res.y / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
if (imgui.Begin('AutoFamInvite', window)) then
if imgui.BeginTabBar('TabBar') then
if imgui.BeginTabItem(u8'Инвайт') then
if imgui.Button(u8'Инвайт в фаму (разово)', imgui.ImVec2(155, 50)) then
sampAddChatMessage('Кинул запрос игрок(у) или (ам)', -1)
rfam() -- вызов функции rfam при нажатии кнопки
end
if imgui.Checkbox(u8'Автоинвайт в фаму: ', active) then
sampAddChatMessage('Автоинвайт: ' ..(active[0] and 'Включен' or 'Выключен') , -1)
end
imgui.EndTabItem()
end
if imgui.BeginTabItem(u8'Статистика') then
imgui.Text(u8'Приглашено игроков сегодня: ' .. inviteCountDay) -- отображение счетчика приглашений за день
imgui.Text(u8'Приглашено игроков за неделю: ' .. inviteCountWeek) -- отображение счетчика приглашений за неделю
imgui.Text(u8'Приглашено игроков за месяц: ' .. inviteCountMonth) -- отображение счетчика приглашений за месяц
imgui.Text(u8'Приглашено игроков за все время: ' .. inviteCountTotal) -- отображение счетчика приглашений за все время
imgui.EndTabItem()
end
imgui.EndTabBar()
end
end
imgui.End();
end
);
local autoInviteActive = false
script_name('Версия 0.1')
script_author('Автор Snake')
require "lib.moonloader"
function main()
while not isSampAvailable() do wait(0) end
sampAddChatMessage('Скрипт загружен!', -1)
sampAddChatMessage('Автор скрипта Snake',0x808080)
sampAddChatMessage('Активация скрипта /rfam или /rfamauto',0x808080)
sampRegisterChatCommand('rfam', rfam)
sampRegisterChatCommand('rfamauto',function ()
autoInviteActive = not autoInviteActive
sampAddChatMessage(autoInviteActive and 'Включен' or 'Выключен', -1)
end )
sampRegisterChatCommand('faminv', function ()
window[0] = not window[0]
end)
-- Регистрация обработчика системных сообщений
sampRegisterChatCallback(function (index, text, prefix, color, isSystem)
if isSystem and string.find(text, "пригласил нового члена:") then
inviteCountDay = inviteCountDay + 1
inviteCountWeek = inviteCountWeek + 1
inviteCountMonth = inviteCountMonth + 1
inviteCountTotal = inviteCountTotal + 1
end
end)
while true do
wait(1000)
if active[0] then
local peds = getAllChars()
for _, v in pairs(peds) do
local result, myid = sampGetPlayerIdByCharHandle(playerPed)
local mx, my, mz = getCharCoordinates(playerPed)
local x, y, z = getCharCoordinates(v)
local distance = getDistanceBetweenCoords3d(mx, my, mz, x, y, z)
local result, id = sampGetPlayerIdByCharHandle(v)
if result and id ~= sampGetPlayerIdByCharHandle(PLAYER_PED) and distance < 5.0 then
if id ~= myid then
sampSendChat('/faminvite '..tonumber(id))
end
end
end
end
end
end
function rfam()
local peds = getAllChars()
for _, v in pairs(peds) do
local result, myid = sampGetPlayerIdByCharHandle(playerPed)
local mx, my, mz = getCharCoordinates(playerPed)
local x, y, z = getCharCoordinates(v)
local distance = getDistanceBetweenCoords3d(mx, my, mz, x, y, z)
local result, id = sampGetPlayerIdByCharHandle(v)
if result and id ~= sampGetPlayerIdByCharHandle(PLAYER_PED) and distance < 5.0 then
if id ~= myid then
sampSendChat('/faminvite '..tonumber(id))
end
end
end
end