Русское сообщество по скриптингу

[AntiChildren] Punish Cheater 18+

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

Re: [AntiChildren] Punish Cheater 18+

Сообщение KOTOKU » 01 ноя 2017, 01:57

Самое смешное в другом, если бы не мой косяк, вместо idTarget написал id в наказании, то этого видоса бы не было :)
Фишка в том, что звуки воспроизводились у того, кто наказывал, а картинка показывалась тому, кто был наказан, отсюда и стоны на видео у Админа :-)
Уже исправил это
Разрабатываю мод "JailBreak" с нуля
Разработка мода началась: 09.02.17 :zzz:
Last Update: 0.4 Alpha [01.12.17]
Тестовый IP: 195.2.252.112:27028[NEW]
Готовность: 80%
Мы в ВК: VK.COM/LM.Pawn
Аватара пользователя
KOTOKU
 
Сообщения: 705
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 8 раз.
Поблагодарили: 106 раз.
Опыт программирования: Больше трех лет

Re: [AntiChildren] Punish Cheater 18+

Сообщение valhalla » 06 ноя 2017, 21:01

Тест плагина v 2.0 :)
Аватара пользователя
valhalla
 
Сообщения: 4
Зарегистрирован: 26 окт 2017, 01:15
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: [AntiChildren] Punish Cheater 18+

Сообщение KOTOKU » 16 ноя 2017, 01:28

valhalla писал(а):Тест плагина v 2.0 :)


Спасибо за тест, пока к сожалению, кроме блокнота ничего нет, так бы перезалил и занялся этим плагином всерьез, но опять же, пока никаких отзывов о нем кроме твоего.

Что касаемо киков за флуд, тут, увы, уже ничего не поделаешь.
Надо переделывать плагин antiflood под плагин AntiChildren, иначе говоря, чтобы antiflood плагин проверял, наказан сейчас игрок порнушкой или нет, если да, то игнорировать его флуд.
Если убрать флуд, то игрок тупо сможет нажать Esc и выйти с сервера.
Поэтому, тут тебе лучше плагин antiflood переделать (позже может добавлю натив, если руки дойдут)

По поводу отсутствия звука при перезаходе...
Попробуй вот так, возможно, volume -1 каким то макаром сбрасывается сама.


Код: Выделить всё
#include <amxmodx>
#include <hamsandwich>

#define MAX_PLAYERS            32
// Флаг доступа к меню 
#define ACCESS_FLAG            ADMIN_BAN
// Флаг иммунитета
#define IMMUNI_FLAG            ADMIN_IMMUNITY


#define PLAYERS_PER_PAGE    8

// Ignore the player who opens the menu? If not, comment out the line
#define    IGNORE_WHO_OPENS

// Show a player's punishment message to everyone? If not, comment out the line
#define SHOW_PUNISH_MSG_ALL

// Show the blocked player the MOTD when reconnect the server (on map)? If not, comment out the line
#define SAVE_BLOCK_IP_ON_MAP


#define TASK_CINEMA        100
#define TASK_SONG        200

new const TITLE[] = "FullHD Porn 18+";
new const FILE[] = "antichildren.txt";
new const PREFIX[] = "!t[!gAnti Children!t]";
new const SOUND[] = "sound/antichildren/pornosong.mp3";

new g_iMaxPlayers;
new g_iMenuPlayers[MAX_PLAYERS + 1][MAX_PLAYERS], g_iMenuPosition[MAX_PLAYERS + 1];
new g_iBitUserImmunity;
new g_iBitUserAdmin;
new g_iBitUserAccess;

#if defined SAVE_BLOCK_IP_ON_MAP
new GL_szIP[22];
new Trie:g_iBlockListOnMap;
#endif

public plugin_init()
{
    register_plugin("Anti Children", "0.3 Alpha Fix", "KOTOKU");
    
    register_clcmd
("say /antichildren", "Open_JokeMenu");
    register_menucmd(register_menuid("Show_JokeMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_JokeMenu");
    
    g_iMaxPlayers 
= get_maxplayers();
    
    
#if defined SAVE_BLOCK_IP_ON_MAP
    g_iBlockListOnMap = TrieCreate();
    #endif
}

#if defined SAVE_BLOCK_IP_ON_MAP
public plugin_end()
    TrieDestroy(g_iBlockListOnMap);
#endif

public client_putinserver(id)
{
    static iFlags; iFlags = get_user_flags(id);
    if(iFlags > 0)
    {
        if(iFlags & IMMUNI_FLAG && ~(iFlags) & ADMIN_USER)        g_iBitUserImmunity |= (1  <<  id);
        if(iFlags & ACCESS_FLAG)                                g_iBitUserAccess |= (<< id);
        g_iBitUserAdmin |= (1  <<  id);
    }
    
    
#if defined SAVE_BLOCK_IP_ON_MAP
    get_user_ip(id, GL_szIP, charsmax(GL_szIP), 1);
    if(TrieKeyExists(g_iBlockListOnMap, GL_szIP))
    {
        client_cmd(id, ";+voicerecord;MP3Volume 100.0;volume -1");                            
        CinemaFullHD
(id + TASK_CINEMA);
        set_task(3.0, "CinemaFullHD_Song", id + TASK_SONG, _, _, "b");
    }
    #endif
}

public plugin_precache() precache_generic(SOUND);
    
public client_disconnect
(id)
{
    if(g_iBitUserAdmin & (1  <<  id))
    {
        g_iBitUserImmunity &= ~(1  <<  id);
        g_iBitUserAdmin &= ~(<< id);
        g_iBitUserAccess &= ~(<< id);
    }

    #if defined SAVE_BLOCK_IP_ON_MAP
    if(task_exists(id + TASK_CINEMA))
    {
        get_user_ip(id, GL_szIP, charsmax(GL_szIP), 1);
        remove_task(id + TASK_CINEMA);
        remove_task(id + TASK_SONG);
        if(TrieKeyExists(g_iBlockListOnMap, GL_szIP)) return
        
        TrieSetCell
(g_iBlockListOnMap, GL_szIP, 1);
    }
    #elseif
    remove_task(id + TASK_CINEMA);
    remove_task(id + TASK_SONG);
    #endif
}

public Open_JokeMenu(id, iPos)
{
    if(iPos < 0 || ~(g_iBitUserAccess) & (<< id)) return 1;
    
    new iPlayersNum
;
    for(new i = 1; i <= g_iMaxPlayers; i++)
    {
        if(!is_user_connected(i) || (g_iBitUserImmunity & (1  <<  i))) continue;
        #if defined IGNORE_WHO_OPENS
        if(== id) continue;
        #endif
        g_iMenuPlayers[id][iPlayersNum++] = i;
    }
    
    new iStart 
= iPos * PLAYERS_PER_PAGE;
    if(iStart > iPlayersNum) iStart = iPlayersNum;
    iStart = iStart - (iStart % 8);
    g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
    new iEnd = iStart + PLAYERS_PER_PAGE;
    if(iEnd > iPlayersNum) iEnd = iPlayersNum;
    new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
    switch(iPagesNum)
    {
        case 0:
        {
            UTIL_SayText(id, "%s !yНедостаточно игроков для доступа к меню", PREFIX);
            return 1;
        }
        default: iLen = formatex(szMenu, charsmax(szMenu), "\wКого наказываем? \y[\r18+\y] \w[\d%d\y/\d%d\w]^n^n", iPos + 1, iPagesNum);
    }
    new szName[32], i, iKeys = (1<<9), b;
    for(new a = iStart; a < iEnd; a++)
    {
        i = g_iMenuPlayers[id][a];
        get_user_name(i, szName, charsmax(szName));
        iKeys |= (<< b);
        
        if
(g_iBitUserAdmin & (1  <<  i))
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[\w%d\d] \w%s\r*^n", ++b, szName);
        else
        iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[\w%d\d] \w%s^n", ++b, szName);
    }
    for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
    if(iEnd < iPlayersNum)
    {
        iKeys |= (<< 8);
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\d[\w0\d] \wДальше^n\d[\w0\d] \w%s", id, iPos ? "Назад" : "Выход");
    }
    else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\d[\w0\d] \w%s", iPos ? "Назад" : "Выход");
    return show_menu(id, iKeys, szMenu, -1, "Show_JokeMenu");
}

public Handle_JokeMenu(id, iKey)
{
    
    switch
(iKey)
    {
        case 8: Open_JokeMenu(id, ++g_iMenuPosition[id]);
        case 9: Open_JokeMenu(id, --g_iMenuPosition[id]);
        default:
        {
            new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
            new szName[32]; get_user_name(iTarget, szName, charsmax(szName));
            if(is_user_connected(iTarget)) 
            
{
                client_cmd(iTarget, ";+voicerecord;MP3Volume 100.0;volume -1");                    
                CinemaFullHD
(iTarget + TASK_CINEMA);
                CinemaFullHD_Song(iTarget + TASK_SONG);
                #if defined SHOW_PUNISH_MSG_ALL
                    UTIL_SayText(0, "%s !yИгрок !g%s!y был наказан, этот игрок был !t%s", PREFIX, szName, (g_iBitUserAdmin & (1  <<  iTarget)) ? "с привилегиями" : "обычным, без привилегий");
                #else 
                    UTIL_SayText(id, "%s !yВы наказали игрока !g%s!y, этот игрок был !t%s", PREFIX, szName, (g_iBitUserAdmin & (1  <<  iTarget)) ? "с привилегиями" : "обычным, без привилегий");
                #endif
            }
            else 
            
{
                UTIL_SayText(id, "%s !yЭтот игрок отключился от сервера!", PREFIX);
                Open_JokeMenu(id, g_iMenuPosition[id]);
            }
        }
    }
    return 1;
}

public CinemaFullHD(id)
{
    id -= TASK_CINEMA;
    client_cmd(id, ";escape;cancelselect");
    show_motd(id, FILE, TITLE);
    if(is_user_alive(id))
        ExecuteHamB(Ham_Killed, id, id, 2);
                    
    set_task
(1.2, "CinemaFullHD", id + TASK_CINEMA, _, _, "b");
}

public CinemaFullHD_Song(id)
{
    id -= TASK_SONG;
    client_cmd(id, "mp3 play %s", SOUND)
    set_task(11.0, "CinemaFullHD_Song", id + TASK_SONG, _, _, "b");
}

#define MSG_SayText     76
stock UTIL_SayText(id, const szMessage[], any:...)
{
    new szBuffer[190];
    if(numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    else copy(szBuffer, charsmax(szBuffer), szMessage);
    while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    switch(id)
    {
        case 0:
        {
            for(new id = 1; id <= g_iMaxPlayers; id++)
            {
                if(!is_user_connected(id)) continue;
                message_begin(MSG_ONE_UNRELIABLE, MSG_SayText, {0, 0, 0}, id);
                write_byte(id);
                write_string(szBuffer);
                message_end();
            }
        }
        default:
        {    
            if
(id && id <= g_iMaxPlayers)
            {
                if(is_user_connected(id))
                {
                    message_begin(MSG_ONE_UNRELIABLE, MSG_SayText, {0, 0, 0}, id);
                    write_byte(id);
                    write_string(szBuffer);
                    message_end();
                }
            }
        }
    }


Добавлено спустя 8 минут 32 секунды:
Пришли мне свой плагин antiflood в лс, я тебе плагин под него сделаю.
Разрабатываю мод "JailBreak" с нуля
Разработка мода началась: 09.02.17 :zzz:
Last Update: 0.4 Alpha [01.12.17]
Тестовый IP: 195.2.252.112:27028[NEW]
Готовность: 80%
Мы в ВК: VK.COM/LM.Pawn
Аватара пользователя
KOTOKU
 
Сообщения: 705
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 8 раз.
Поблагодарили: 106 раз.
Опыт программирования: Больше трех лет

Re: [AntiChildren] Punish Cheater 18+

Сообщение KOTOKU » 12 фев 2018, 17:21

Шапка обновлена, местами обновил код.
Буду благодарен за отзывы, пока не тестировал :-)
Разрабатываю мод "JailBreak" с нуля
Разработка мода началась: 09.02.17 :zzz:
Last Update: 0.4 Alpha [01.12.17]
Тестовый IP: 195.2.252.112:27028[NEW]
Готовность: 80%
Мы в ВК: VK.COM/LM.Pawn
Аватара пользователя
KOTOKU
 
Сообщения: 705
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 8 раз.
Поблагодарили: 106 раз.
Опыт программирования: Больше трех лет

Re: [AntiChildren] Punish Cheater 18+

Сообщение fearss1993 » 15 фев 2018, 10:52

я чуток нубок, мог бы ты сделать так чтобы игроков не кикало, а то после использования на игрке через меню наказания, оно пишет сообщения и сразу выкидывает из сервреа.
Мне надо чтобы все слышали что у него за звук играет и не выкидывало его из сервера. А так же меню работает через время, и если можно иммунитет убрать у админов, вообще его не ставить. Кстати еще после приминения пишет что у игркоа была привилегия, хотя у него её не было
Аватара пользователя
fearss1993
 
Сообщения: 1
Зарегистрирован: 15 фев 2018, 10:15
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: [AntiChildren] Punish Cheater 18+

Сообщение KOTOKU » 15 фев 2018, 14:23

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

Добавлено спустя 15 минут 58 секунд:
аа пардон, мой косяк, по поводу непривилегированного игрока, это правда.
Забыл добавить проверку на USER флаг, щас исправим
Разрабатываю мод "JailBreak" с нуля
Разработка мода началась: 09.02.17 :zzz:
Last Update: 0.4 Alpha [01.12.17]
Тестовый IP: 195.2.252.112:27028[NEW]
Готовность: 80%
Мы в ВК: VK.COM/LM.Pawn
Аватара пользователя
KOTOKU
 
Сообщения: 705
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 8 раз.
Поблагодарили: 106 раз.
Опыт программирования: Больше трех лет

Re: [AntiChildren] Punish Cheater 18+

Сообщение KOTOKU » 17 фев 2018, 17:46

Шапка обновлена, добавил 0.4 версию:
[+] Появилась возможность настраивать промежуток времени показа MOTD картинки (если игроков выкидывает с overflowed channel, то можно увеличить это значение)
[+] Исправлен баг с отображением всех игроков, как пользователь с привилегиями
[+] Немного оптимизирован плагин в плане переполнения каналов связи
[+] Добавлена возможность отключать иммунитеты

Кто потестит, отпишитесь.
Разрабатываю мод "JailBreak" с нуля
Разработка мода началась: 09.02.17 :zzz:
Last Update: 0.4 Alpha [01.12.17]
Тестовый IP: 195.2.252.112:27028[NEW]
Готовность: 80%
Мы в ВК: VK.COM/LM.Pawn
Аватара пользователя
KOTOKU
 
Сообщения: 705
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 8 раз.
Поблагодарили: 106 раз.
Опыт программирования: Больше трех лет

Пред.

Вернуться в Добавленные новые плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron