Участник
Пользователь
- Сообщения
- 702
- Реакции
- 54
Ищу плагин рекламы от неугомона с автоответчиком, поиском не нашёл к сожалению, а архив давно потерялся.
// *************************************************************************************//
// Плагин загружен с 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рублей"
neygomon Ох и приучил ты свою армию к причудам...но от неугомона приоритетней, там чисто нужный функционал без лишнего