Поиск Adverts by neug

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
702
Реакции
54
Ищу плагин рекламы от неугомона с автоответчиком, поиском не нашёл к сожалению, а архив давно потерялся.
 
Сообщения
702
Реакции
54
w0w, спасибо за это, но от неугомона приоритетней, там чисто нужный функционал без лишнего
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Код:
// *************************************************************************************//
// Плагин загружен с  www.neugomon.ru                                                   //
// Автор: Neygomon  [ https://neugomon.ru/members/1/ ]                                  //
// Официальная тема поддержки: https://neugomon.ru/threads/8/                           //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА!                //
// *************************************************************************************//

#include <amxmodx>

#define MAX_MSG        128    // Не трогать!!!
new g_AdvertMsgCnt, g_AdvertMessages[MAX_MSG][191];
new g_AutoMsgCnt, g_MsgKwd[MAX_MSG][30], g_MsgMessage[MAX_MSG][191] // Wtf? O_o

new g_cvrMsgAll, g_pMsgAll, g_pMsgRepeat;

public plugin_init()
{
    register_plugin("Advert Messages", "1.2.2", "neygomon");
  
    register_clcmd("say",         "Cmd_Say");
    register_clcmd("say_team",     "Cmd_Say");
  
    g_pMsgAll     = register_cvar("am_msgall",     "1");     // Показывать всем сообщения? 1 - да, 0 - только мертвым и спектрам
    g_pMsgRepeat    = register_cvar("am_msgrepeat", "60");     // Частота показа сообщений. В секундах

    set_task(1.0, "PluginCfg");
}

public PluginCfg()
{
    g_cvrMsgAll = get_pcvar_num(g_pMsgAll);
    set_task(get_pcvar_float(g_pMsgRepeat), "advert", .flags="b");
  
    new string[200], message[191], file = fopen("addons/amxmodx/configs/adverts.ini", "rt");
    if(!file)
        set_fail_state("File ^"addons/amxmodx/configs/adverts.ini^" not found!");
  
    while(g_AdvertMsgCnt + g_AutoMsgCnt < MAX_MSG && !feof(file))
    {
        fgets(file, string, charsmax(string));
  
        if(!string[0] || string[0] == ';')
            continue;
        if(string[0] == '@' && parse(string[1], g_MsgKwd[g_AutoMsgCnt], charsmax(g_MsgKwd[]), message, charsmax(message)))
            FormatMessage(0, message);
        else if(parse(string, message, charsmax(message)))
            FormatMessage(1, message); 
    }
    fclose(file);
    if(!g_AdvertMsgCnt)
        set_fail_state("Messages not found! Check file ^"addons/amxmodx/configs/adverts.ini^"");
}

public Cmd_Say(id)
{
    if(!g_AutoMsgCnt)
        return PLUGIN_CONTINUE;
    static szMessage[30]; read_args(szMessage, charsmax(szMessage));
    for(new i; i < g_AutoMsgCnt; i++)
        if(containi(szMessage, g_MsgKwd[i]) != -1)
            return ChatColor(id, g_MsgMessage[i]);
    return PLUGIN_CONTINUE;
}

public advert()
{
    static g_iMsgCnt;
    if(g_cvrMsgAll)
        ChatColor(0, "%s", g_AdvertMessages[g_iMsgCnt == g_AdvertMsgCnt ? (g_iMsgCnt = 0) : g_iMsgCnt++]);
    else
    {
        static players[32], pcount; get_players(players, pcount, "bch");
        for(new i; i < pcount; i++)
            ChatColor(players[i], "%s", g_AdvertMessages[g_iMsgCnt == g_AdvertMsgCnt ? (g_iMsgCnt = 0) : g_iMsgCnt++]);
    }
}

FormatMessage(Type, szMsg[])
{
    while(replace(szMsg, 191, "!n", "^1")) {}
    while(replace(szMsg, 191, "!t", "^3")) {}
    while(replace(szMsg, 191, "!g", "^4")) {}
  
    switch(Type)
    {
        case 0: formatex(g_MsgMessage[g_AutoMsgCnt++], charsmax(g_MsgMessage[]), "^1%s", szMsg); 
        case 1: formatex(g_AdvertMessages[g_AdvertMsgCnt++], charsmax(g_AdvertMessages[]), "^1%s", szMsg);
    }
}

stock ChatColor(const id, const szMessage[], any:...)
{
    static pnum, players[32], szMsg[190], IdMsg;
    vformat(szMsg, charsmax(szMsg), szMessage, 3);
  
    if(!IdMsg) IdMsg = get_user_msgid("SayText");
  
    if(id)
    {
        players[0] = id;
        pnum = 1;
    }
    else get_players(players, pnum, "ch");
  
    for(new i; i < pnum; i++)
    {
        message_begin(MSG_ONE, IdMsg, .player = players[i]);
        write_byte(players[i]);
        write_string(szMsg);
        message_end();
    }
}

В конфиге должно быть что-то вроде @ "/vip" "!tВип стоит !g100 !tрублей"
 

Вложения

Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу