Версия: 1.0
Описание: Меню для создания и удаления бота.
Флаг доступа admin_menu.
По дефолту 3 бота, есть возможность увеличить или уменьшить количество ботов.
Команда для вызова меню: amx_bot.
- Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#define PLUGIN "advertising BOT(MENU)"
#define VERSION "1.0"
#define AUTOR "[N][E][M][E][C]"
new const FLAGS = ADMIN_MENU // флаг доступа к меню
new const g_botNAME[][] = {
"bot_1",
"bot_2",
"bot_3"
}
/* имена ботов для рекламы {количество не ограничено)
P.S. Поддерживает только английкие буквы
Не забываем то, что каждый бот занимает слот на сервере*/
new g_bot[sizeof g_botNAME];
new i = -1;
new key = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTOR);
register_clcmd("amx_bot", "menu_statusBOT");
register_menu("Menu", key, "MenuFunc");
}
public menu_statusBOT(id) {
if(!(get_user_flags(id) & FLAGS)) {
ChatColor(id, "^1[ ^4SErVER ^1] ^3У вас недостаточно прав");
return;
}
static menu[650], len
len = 0
len = formatex(menu[len], charsmax(menu) - len, "\wменю \d=>\r|\yADVERTISING\r|\d<=^n^n");
len += formatex(menu[len], charsmax(menu) - len, (i >= sizeof g_botNAME - 1) ? "\r1\d. |\rнеактивно\d|^n" : "\r1\w. Добавить бота |\r%d\w|^n", charsmax(g_botNAME) - i);
key |= MENU_KEY_1
len += formatex(menu[len], charsmax(menu) - len, i < 0 ? "\r2\d. |\rнеактивно\d|^n" : "\r2\w. Удалить бота |\r%d\w|^n", 1 + i);
key |= MENU_KEY_2
len += formatex(menu[len], charsmax(menu) - len, "^n\r0\w. Выход");
key |= MENU_KEY_0
show_menu(id, key, menu, -1, "Menu");
}
public MenuFunc(id, key) {
switch(key) {
case 0: {
if(i >= sizeof g_botNAME - 1)
menu_statusBOT(id);
else {
createBOTS();
menu_statusBOT(id);
}
}
case 1: {
if(i < 0)
menu_statusBOT(id);
else {
removeBOTS();
menu_statusBOT(id);
}
}
case 9: return;
}
}
createBOTS() {
++ i;
g_bot[i] = engfunc(EngFunc_CreateFakeClient, g_botNAME[i]);
dllfunc(MetaFunc_CallGameEntity, "player", g_bot[i]);
set_pev(g_bot[i], pev_flags, FL_FAKECLIENT);
set_pev(g_bot[i], pev_model, "");
set_pev(g_bot[i], pev_viewmodel2, "");
set_pev(g_bot[i], pev_modelindex, 0);
set_pev(g_bot[i], pev_renderfx, kRenderFxNone);
set_pev(g_bot[i], pev_rendermode, kRenderTransAlpha);
set_pev(g_bot[i], pev_renderamt, 0.0);
cs_set_user_team(g_bot[i], CS_TEAM_UNASSIGNED);
}
removeBOTS() {
server_cmd("kick #%d", get_user_userid(g_bot[i]));
— i;
}
stock ChatColor(const id,const input[],any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg,190,"!g", "^4");
replace_all(msg,190,"!y", "^1");
replace_all(msg,190,"!t", "^3");
if(id)players[0] = id; else get_players(players,count,"ch"); {
for(new i = 0;i < count;i++) {
if(is_user_connected(players[i])) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}