SA:MP Lua Arizona FamilyHelper by Microbiwe - Мини-Хелпер для владельцев/заместителей семей

microbiwe

Известный
Автор темы
23
2
Всех приветствую!
Являюсь заместителем одной из семей на проекте Arizona RP, лично знаю, как тяжело набирать в фаму людей. Раньше пользовался скриптом от карлеоне для приглашения игроков в радиусе, но, к сожалению, после попытки его запуска буквально пару дней назад он отказался адекватно работать.
Поэтому пришла в голову мысль написать новый скрипт на инвайт людей в радиусе


Команды скрипта:

/fiset
- меню скрипта


/autofi - запустить приглашение людей в радиусе
/autofi vip - включить функцию приглашения в семью исключительно VIP-игроков
/autofi silent - включить тихий режим (убрать все мусорные сообщения из чата, оставить только сообщения об отправленных приглашениях)
/autofi status - статус скрипта (включен ли он, статус функций VIP и SILENT)



Снимок экрана 2025-12-18 212333.png



ВНИМАНИЕ!
Скрипт писался китайским чудом DeepSeek, не мной! Я никаких знаний по разработке lua не имею! Пользователям с аллергией на говнокод скрипт лучше не читать


Скрипт разрешается качать, удалять, распространять, изменять и так далее, все что вашей душе угодно

Хочу выразить благодарность bfix за помощь с фиксами
Код для автооплаты семейной квартиры был немного позаимствован отсюда

Лог возможных будущих обновлений:

v1 (autofi_vipsilentbag.lua) - основной скрипт со всеми вышеперечисленными функциями

v2 (famhelpermicrobiwe.lua) - ГЛОБАЛЬНОЕ ОБНОВЛЕНИЕ!
- Добавлен ImGui интерфейс
-Добавлена функция автооплаты семейной квартиры
- Фикс приглашения самого себя
- Фикс открытия Fammenu при ошибке приглашения игрока, уже состоящего в семье
 

Вложения

  • autofi_vipsilentbag.lua
    14.4 KB · Просмотры: 30
  • famhelpermicrobiwe.lua
    28.4 KB · Просмотры: 61
Последнее редактирование:
  • Нравится
Реакции: Sworikk

Yono

Участник
62
18
Там же если кидаешь инвайт типу и если он уже в фаме то открывается /fammenu и дальше пока не закроешь меню то инвайт не отправляется, тут такое есть? или пофиксил такое?
 

bfix

Активный
112
82
Там же если кидаешь инвайт типу и если он уже в фаме то открывается /fammenu и дальше пока не закроешь меню то инвайт не отправляется, тут такое есть? или пофиксил такое?
Нету у него такого
Но вот автору помогу, потому что нейронка с этим помогать ему будет очень долго
lua:
local FamilyClosed = false
-- sampev.onServerMessage
    if text:find('^%[Ошибка%] Произошла ошибка, игрок состоит в другой семье') then
        FamilyClosed = true
    end
--
local function cefsend(str)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 220)
    raknetBitStreamWriteInt8(bs, 18)
    raknetBitStreamWriteInt16(bs, #str)
    raknetBitStreamWriteString(bs, str)
    raknetBitStreamWriteInt32(bs, 0)
    raknetSendBitStream(bs)
    raknetDeleteBitStream(bs)
end
addEventHandler('onSendPacket', function (id, bs)
    if id == 220 then
        local id = raknetBitStreamReadInt8(bs)
        local packettype = raknetBitStreamReadInt8(bs)
        local strlen = raknetBitStreamReadInt16(bs)
        local str = raknetBitStreamReadString(bs, strlen)
        if packettype ~= 0 and packettype ~= 1 and #str > 2 then
            if str:find('onActiveViewChanged|Family') and FamilyClosed then
                cefsend('familyMenu.exit')
                FamilyClosed = false
            end
        end
    end
end)
 
  • Нравится
Реакции: microbiwe

Yono

Участник
62
18
Нету у него такого
Но вот автору помогу, потому что нейронка с этим помогать ему будет очень долго
lua:
local FamilyClosed = false
-- sampev.onServerMessage
    if text:find('^%[Ошибка%] Произошла ошибка, игрок состоит в другой семье') then
        FamilyClosed = true
    end
--
local function cefsend(str)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 220)
    raknetBitStreamWriteInt8(bs, 18)
    raknetBitStreamWriteInt16(bs, #str)
    raknetBitStreamWriteString(bs, str)
    raknetBitStreamWriteInt32(bs, 0)
    raknetSendBitStream(bs)
    raknetDeleteBitStream(bs)
end
addEventHandler('onSendPacket', function (id, bs)
    if id == 220 then
        local id = raknetBitStreamReadInt8(bs)
        local packettype = raknetBitStreamReadInt8(bs)
        local strlen = raknetBitStreamReadInt16(bs)
        local str = raknetBitStreamReadString(bs, strlen)
        if packettype ~= 0 and packettype ~= 1 and #str > 2 then
            if str:find('onActiveViewChanged|Family') and FamilyClosed then
                cefsend('familyMenu.exit')
                FamilyClosed = false
            end
        end
    end
end)
Спасибо что помог, а то сам делал такой же скрипт и не мог догнать как сделать такое <3
 
  • Нравится
Реакции: bfix

microbiwe

Известный
Автор темы
23
2
Там же если кидаешь инвайт типу и если он уже в фаме то открывается /fammenu и дальше пока не закроешь меню то инвайт не отправляется, тут такое есть? или пофиксил такое?
фамменю будет открыт, но инвайты будут лететь

Нету у него такого
Но вот автору помогу, потому что нейронка с этим помогать ему будет очень долго
lua:
local FamilyClosed = false
-- sampev.onServerMessage
    if text:find('^%[Ошибка%] Произошла ошибка, игрок состоит в другой семье') then
        FamilyClosed = true
    end
--
local function cefsend(str)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 220)
    raknetBitStreamWriteInt8(bs, 18)
    raknetBitStreamWriteInt16(bs, #str)
    raknetBitStreamWriteString(bs, str)
    raknetBitStreamWriteInt32(bs, 0)
    raknetSendBitStream(bs)
    raknetDeleteBitStream(bs)
end
addEventHandler('onSendPacket', function (id, bs)
    if id == 220 then
        local id = raknetBitStreamReadInt8(bs)
        local packettype = raknetBitStreamReadInt8(bs)
        local strlen = raknetBitStreamReadInt16(bs)
        local str = raknetBitStreamReadString(bs, strlen)
        if packettype ~= 0 and packettype ~= 1 and #str > 2 then
            if str:find('onActiveViewChanged|Family') and FamilyClosed then
                cefsend('familyMenu.exit')
                FamilyClosed = false
            end
        end
    end
end)
спасибо большое, добавлю в обнову
 

Yono

Участник
62
18
Предлогаю добавить ещё такое в обновлении
фамменю будет открыт, но инвайты будут лететь


спасибо большое, добавлю в обнову
настройка уровня игрока для инвайта, например чтобы выше 10 не инвайтило людей, ну и собственно это значение можно будет изменять
 

microbiwe

Известный
Автор темы
23
2
Предлогаю добавить ещё такое в обновлении

настройка уровня игрока для инвайта, например чтобы выше 10 не инвайтило людей, ну и собственно это значение можно будет изменять
тоже будет добавлено
уже готова версия на imgui, как раз добавлю все вышеперечисленное и подгружу
 

Kanneus

Новичок
2
0
Как будет добавлено, жду соо, добавь фильтр чтобы можно было включить/выключить автоприглашение одного и того-же ид по новой и настроить кд инвайта в фаму, от себя +rep автору <3
 

Yono

Участник
62
18
Ещё можно добавить, выдачу ранга после инвайта, допустим если человек принял приглошение в фаму то ему выдается ранг который ты указал /setfrank id 7
полезно тоже было бы
 

Rifila

Новичок
12
5
Есть баг, когда игрок слишком далеко то открывается /fammenu и не закрывается (т.е когда пишет сообщение "[Ошибка] {FFFFFF}Произошла ошибка, игрок слишком далеко от вас!"
(и иногда все таки даже при сообщении "[Ошибка] {FFFFFF}Произошла ошибка, игрок состоит в другой семье!" /fammenu не закрывается (т.е если я оставлю ПК и ухожу в технарь допустим. то это уже проёб)
Было бы круто если через телеграм можно было отключать и включать автоинвайт и принудительно закрывать все CEF диалоги (если какой то из чеков (проверок) не сработает и диалог все таки откроется)
Вот эти настройки не самые понятные (хотелось бы описание что дает каждый ползунок.
1770758394756.png


И было бы хорошо что бы скрипт брал всех игроков в зоне стрима и предлагал каждому игроку раз в какое то время и после этого цикла он считал время перед новым (в скрине моем это 30 сек) (это я к тому что во время цикла он может начать заново (В моем случае если пройдет 30 секунд)
Может быть еще записывать всех игроков кто в фаме в какой то черный список? (вроде можно через id узнавать ник игрока) и что бы игрока больше не инвайтило хотя-бы в этой сесси до перезахода (Лучше это делать именно через ник т.е если игрок в фаме перезайет то ID поменяется. А под этим id Уже может зайти лакомый кусочек в виде бомжика без фамы)
Ну еще по возможности сделать проверку на уровень игрока (т.е если уровень ниже N то не инвайтить)
Ну еще круто было бы автовыдача ранга и счетчик инвайтнутых (вроде как именно в этом скрипте этого нет, я использую другой только для счетчика)

А так скрипт имба

Это сообщение прошу воспринимать не как критику, а как предложения от юзера этого софта
 
  • Влюблен
Реакции: microbiwe

Yono

Участник
62
18
Есть баг, когда игрок слишком далеко то открывается /fammenu и не закрывается (т.е когда пишет сообщение "[Ошибка] {FFFFFF}Произошла ошибка, игрок слишком далеко от вас!"
(и иногда все таки даже при сообщении "[Ошибка] {FFFFFF}Произошла ошибка, игрок состоит в другой семье!" /fammenu не закрывается (т.е если я оставлю ПК и ухожу в технарь допустим. то это уже проёб)
Было бы круто если через телеграм можно было отключать и включать автоинвайт и принудительно закрывать все CEF диалоги (если какой то из чеков (проверок) не сработает и диалог все таки откроется)
Вот эти настройки не самые понятные (хотелось бы описание что дает каждый ползунок.
Посмотреть вложение 286518

И было бы хорошо что бы скрипт брал всех игроков в зоне стрима и предлагал каждому игроку раз в какое то время и после этого цикла он считал время перед новым (в скрине моем это 30 сек) (это я к тому что во время цикла он может начать заново (В моем случае если пройдет 30 секунд)
Может быть еще записывать всех игроков кто в фаме в какой то черный список? (вроде можно через id узнавать ник игрока) и что бы игрока больше не инвайтило хотя-бы в этой сесси до перезахода (Лучше это делать именно через ник т.е если игрок в фаме перезайет то ID поменяется. А под этим id Уже может зайти лакомый кусочек в виде бомжика без фамы)
Ну еще по возможности сделать проверку на уровень игрока (т.е если уровень ниже N то не инвайтить)
Ну еще круто было бы автовыдача ранга и счетчик инвайтнутых (вроде как именно в этом скрипте этого нет, я использую другой только для счетчика)

А так скрипт имба

Это сообщение прошу воспринимать не как критику, а как предложения от юзера этого софта
Если бы автор хотел реально делать хороший авто инвайт, он бы сделал, ну а так тут кодер это dipsik так что тут не разгуляешься, если что пиши в тг мне @BruuuuhReally я свой автоинвайт щас делаю, подумали бы вместе что было бы полезно