Пример: [HDservers] Aдминистратор [Права] Вие сте: Админн [Време] Остават ви: [26] дни.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "SET ADMIN"
#define VERSION "1.1"
#define AUTHOR "AUTHOR"
#define ADMIN_DUENO ADMIN_RCON
new Array:Admins, g_admin_tipes, user_menu, g_tipe
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("SETADMIN", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_concmd("amx_setadminmenu", "cmd_set_admin")
load()
}
load()
{
g_admin_tipes = 0
Admins = ArrayCreate(64, 1)
new File[120]; get_configsdir(File, charsmax(File))
add(File, charsmax(File), "/AdminConfig.ini")
if(!file_exists(File))
set_fail_state("File configs/AdminConfig.ini Not Found")
new Linea[100], open = fopen(File, "rt")
while(!feof(open))
{
fgets(open, Linea, charsmax(Linea))
trim(Linea)
if(!Linea[0] || Linea[0] == ';')
continue;
ArrayPushString(Admins, Linea)
g_admin_tipes++
}
fclose(open)
}
public cmd_set_admin(id)
{
if(get_user_flags(id) & ADMIN_DUENO)
show_players_menu(id)
}
show_players_menu(id)
{
new menu = menu_create("\r[\wHDservers\r] \ySelect Players \w| \yStep: \r[\w1/3\r] \w| \yPage: \r", "handler_players_menu")
new szname[50], num[2], g_max = get_maxplayers()
for(new i = 1; i <= g_max; i++)
{
if(!is_user_connected(i) || i == id)
continue;
get_user_name(i, szname, charsmax(szname))
if(is_user_admin(i)) add(szname, charsmax(szname), " - \r[ADMIN]")
num[0] = i
num[1] = 0
menu_additem(menu, szname, num)
}
menu_display(id, menu, 0)
}
public handler_players_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new deal, buffer[2]
menu_item_getinfo(menu, item, deal, buffer, charsmax(buffer), _, _, deal)
user_menu = buffer[0]
if(!is_user_connected(user_menu))
{
ColorMessage(id, "^4[HDservers] ^1The selected user is ^3disconnected ^1from the menu.")
return PLUGIN_HANDLED;
}
if(is_user_admin(user_menu))
{
ColorMessage(id, "^4[HDservers] ^1The ^4selected ^1user is ^3admin^1.")
return PLUGIN_HANDLED;
}
show_selec_tipe(id)
return PLUGIN_HANDLED;
}
show_selec_tipe(id)
{
new menu, len[80], UserMenuName[33]; get_user_name(user_menu, UserMenuName, 32)
formatex(len, charsmax(len), "\r[\wHDservers\r] \yGive Add \r%s \w| \yStep \r[\w2/3\r]", UserMenuName)
menu = menu_create(len, "handler_selectipe")
menu_additem(menu, "Name", "1")
menu_additem(menu, "Steam", "2")
menu_additem(menu, "IP", "3")
menu_display(id, menu, 0)
}
public handler_selectipe(id, menu, item)
{
if(item == MENU_EXIT)
{
show_players_menu(id)
return PLUGIN_HANDLED;
}
if(!is_user_connected(user_menu))
{
ColorMessage(id, "^4[HDservers] ^1The selected user is ^3disconnected ^1from the menu.")
return PLUGIN_HANDLED;
}
g_tipe = item
show_selec_admin(id)
return PLUGIN_HANDLED;
}
show_selec_admin(id)
{
new num[2], menu, len[75], UserMenuName[33]; get_user_name(user_menu, UserMenuName, 32)
formatex(len, charsmax(len), "\r[\wHDservers\r] \yGive Flags \r%s \w| \yStep \r[\w3/3\r]", UserMenuName)
menu = menu_create(len, "handler_selecadmin")
new Data[100], AdminTipeName[15], AdminFlags[35]
for(new i = 0; i < g_admin_tipes; i++)
{
ArrayGetString(Admins, i, Data, charsmax(Data))
parse(Data, AdminTipeName, charsmax(AdminTipeName), AdminFlags, charsmax(AdminFlags))
formatex(len, charsmax(len), "\w%s - \r[\w%s\r]", AdminTipeName, AdminFlags)
num_to_str(i, num, 1)
menu_additem(menu, len, num)
}
menu_display(id, menu, 0)
}
public handler_selecadmin(id, menu, item)
{
if(item == MENU_EXIT)
{
show_selec_tipe(id)
return PLUGIN_HANDLED;
}
if(!is_user_connected(user_menu))
{
ColorMessage(id, "^4[HDservers] ^1The selected user is ^3disconnected ^1from the menu.")
return PLUGIN_HANDLED;
}
new Data[100], AdminTipeName[15], AdminFlags[35]
new Admin[33], NewAdmin[33]
get_user_name(id, Admin, 32)
get_user_name(user_menu, NewAdmin, 32)
ArrayGetString(Admins, item, Data, charsmax(Data))
parse(Data, AdminTipeName, charsmax(AdminTipeName), AdminFlags, charsmax(AdminFlags))
set_user_admin(user_menu, AdminFlags, g_tipe)
ColorMessage(0, "^4[HDservers] ^1ADMIN [^3%s^1] ^1gave [^4%s^1] on [^3%s^1] Congratulations!", Admin, AdminTipeName, NewAdmin)
return PLUGIN_HANDLED;
}
set_user_admin(target, Flags[], tipo)
{
new ident[33], pw[5], linne[150]
formatex(pw, 4, "%d%d%d%d", random_num(1, 9), random_num(1, 9), random_num(1, 9), random_num(1, 9))
new File[120]; get_configsdir(File, charsmax(File))
add(File, charsmax(File), "/users.ini")
if(!file_exists(File))
set_fail_state("File configs/users.ini Not Found")
new szTime[32]
get_time("%d.%m.%Y - %H:%M", szTime, charsmax(szTime))
switch(tipo)
{
case 0:
{
get_user_name(target, ident, charsmax(ident))
formatex(linne, charsmax(linne), "^r^n^"%s^" ^"%s^" ^"%s^" ^"a^" ^"%s^"", ident, pw, Flags, szTime)
client_print(target, print_console, "------------------- | HDSERVERS SET ADMINS |-------------------")
client_print(target, print_console, "[HDservers] You have been kiked because you have been given admin")
client_print(target, print_console, "[HDservers] Your password|setinfo is: %s", pw)
client_print(target, print_console, "[HDservers] You should put in your console: setinfo _pw %s", pw)
client_print(target, print_console, "------------------- | by: sed1 |-------------------")
server_cmd("kick #%d ^"You have been kiked because administrator is given, your password is %s, for more information see their console^"", get_user_userid(target), pw)
}
case 1:
{
get_user_authid(target, ident, charsmax(ident))
formatex(linne, charsmax(linne), "^r^n^"%s^" ^"^" ^"%s^" ^"ce^" ^"%s^"", ident, Flags, szTime)
}
case 2:
{
get_user_ip(target, ident, charsmax(ident), 1)
formatex(linne, charsmax(linne), "^r^n^"%s^" ^"^" ^"%s^" ^"de^" ^"%s^"", ident, Flags, szTime)
}
}
/*new ident_user[35], Linea[150], open = fopen(File, "rt")
while(!feof(open))
{
fgets(open, Linea, charsmax(Linea))
trim(Linea)
if(!Linea[0] || Linea[0] == ";")
continue;
parse(Linea, ident_user, charsmax(ident_user))
if(equal(ident, ident_user))
{
ColorMessage(id, "^4[HDservers] ^3%s ^1Already exists!", ident)
//break;
return PLUGIN_HANDLED;
}
}
fclose(open) */
//the menu is checked if admin
write_file(File, linne)
server_cmd("amx_reloadadmins")
}
stock ColorMessage(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[ 191 ];
vformat(msg, 190, input, 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();}}}
}
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#pragma tabsize 0
#define MAXMENUS 128
#define STRINGSIZE 32
#define STRINGLENGTH STRINGSIZE - 1
#define MENUITEMSPERPAGE 8
new g_menuPosition[33]
new g_menusNumber = 0
new g_menuBody[MAXMENUS][STRINGSIZE]
new bool:g_menuBodyPhrase[MAXMENUS]
new g_menuCmd[MAXMENUS][STRINGSIZE]
new g_menuAccess[MAXMENUS]
new g_menuPlugin[MAXMENUS][STRINGSIZE]
new g_coloredMenus
new g_clientMenuPosition[33]
new g_clientMenusNumber = 0
new g_clientMenuBody[MAXMENUS][STRINGSIZE]
new bool:g_clientMenuBodyPhrase[MAXMENUS]
new g_clientMenuCmd[MAXMENUS][STRINGSIZE]
new g_clientMenuAccess[MAXMENUS]
new g_clientMenuPlugin[MAXMENUS][STRINGSIZE]
public AddMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[])
{
if (g_menusNumber + 1 == MAXMENUS)
{
log_amx("Error: Plugin ^"%s^" tried to add a menu item to Menu Front-End plugin with maximum menu items reached!", menuPlugin)
return
}
copy(g_menuBody[g_menusNumber], STRINGLENGTH, menuBody)
g_menuBodyPhrase[g_menusNumber] = false
copy(g_menuCmd[g_menusNumber], STRINGLENGTH, menuCmd)
g_menuAccess[g_menusNumber] = menuAccess
copy(g_menuPlugin[g_menusNumber], STRINGLENGTH, menuPlugin)
g_menusNumber++
server_print("Menu item %d added to Menus Front-End: ^"%s^" from plugin ^"%s^"", g_menusNumber, menuBody, menuPlugin)
}
public AddMenuLang(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[])
{
if (g_menusNumber + 1 == MAXMENUS)
{
log_amx("Error: Plugin ^"%s^" tried to add a menu item to Menu Front-End plugin with maximum menu items reached!", menuPlugin)
return
}
copy(g_menuBody[g_menusNumber], STRINGLENGTH, menuBody)
g_menuBodyPhrase[g_menusNumber] = true
copy(g_menuCmd[g_menusNumber], STRINGLENGTH, menuCmd)
g_menuAccess[g_menusNumber] = menuAccess
copy(g_menuPlugin[g_menusNumber], STRINGLENGTH, menuPlugin)
g_menusNumber++
//server_print("Menu item %d added to Menus Front-End: ^"%s^" (LANG) from plugin ^"%s^"", g_menusNumber, menuBody, menuPlugin)
}
public AddClientMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[])
{
if (g_clientMenusNumber + 1 == MAXMENUS)
{
log_amx("Error: Plugin ^"%s^" tried to add a menu item to Menu Front-End plugin with maximum menu items reached!", menuPlugin)
return
}
copy(g_clientMenuBody[g_clientMenusNumber], STRINGLENGTH, menuBody)
g_clientMenuBodyPhrase[g_clientMenusNumber] = false
copy(g_clientMenuCmd[g_clientMenusNumber], STRINGLENGTH, menuCmd)
g_clientMenuAccess[g_clientMenusNumber] = menuAccess
copy(g_clientMenuPlugin[g_clientMenusNumber], STRINGLENGTH, menuPlugin)
g_clientMenusNumber++
server_print("Client menu item %d added to Client Menus Front-End: ^"%s^" from plugin ^"%s^"", g_clientMenusNumber, menuBody, menuPlugin)
}
AddDefaultMenus()
{
new flags;
AddMenuLang("KICK_PLAYER", "amx_kickmenu", get_clcmd_flags("amx_kickmenu", flags) ? flags : ADMIN_KICK , "Players Menu")
AddMenuLang("BAN_PLAYER", "amx_banmenu", get_clcmd_flags("amx_banmenu", flags) ? flags : ADMIN_BAN, "Players Menu")
AddMenuLang("SLAP_SLAY", "amx_slapmenu", get_clcmd_flags("amx_slapmenu", flags) ? flags : ADMIN_SLAY, "Players Menu")
AddMenuLang("TEAM_PLAYER", "amx_teammenu", get_clcmd_flags("amx_teammenu", flags) ? flags : ADMIN_LEVEL_A, "Players Menu")
AddMenuLang("CHANGEL", "amx_mapmenu", get_clcmd_flags("amx_mapmenu", flags) ? flags : ADMIN_MAP, "Maps Menu")
AddMenuLang("ADD_ADMIN", "amx_setadminmenu", ADMIN_RCON, "Players Menu")
AddMenuLang("GAG_PLAYER", "amx_gagmenu", ADMIN_KICK, "Players Menu")
AddMenuLang("BANCFG_PLAYER", "amx_bancfgmenu", ADMIN_RCON, "Players Menu")
AddMenuLang("CVARS_SET", "amx_cvarmenu", get_clcmd_flags("amx_cvarmenu", flags) ? flags : ADMIN_CVAR, "Commands Menu")
}
stock bool:get_clcmd_flags(const search_command[], &flags)
{
new count = get_clcmdsnum(-1);
static cmd[128];
static info[1];
new _flags;
for (new i = 0; i < count; i++)
{
get_clcmd(i, cmd, charsmax(cmd), _flags, info, charsmax(info), -1);
if (strcmp(cmd, search_command) == 0)
{
flags = _flags;
return true;
}
}
return false;
}
public actionMenu(id, key)
{
switch (key)
{
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default: client_cmd(id, "%s", g_menuCmd[g_menuPosition[id] * 8 + key])
}
return PLUGIN_HANDLED
}
public clientActionMenu(id, key)
{
switch (key)
{
case 8: clientDisplayMenu(id, ++g_clientMenuPosition[id])
case 9: clientDisplayMenu(id, --g_clientMenuPosition[id])
default: client_cmd(id, "%s", g_clientMenuCmd[g_clientMenuPosition[id] * 8 + key])
}
return PLUGIN_HANDLED
}
displayMenu(id, pos)
{
if (pos < 0)
return
new menuBody[512]
new b = 0
new start = pos * MENUITEMSPERPAGE
if (start >= g_menusNumber) // MENUS_NUMBER
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511,
g_coloredMenus ? "\r[\wHDservers\r] \yAdmin Panel \R%d/%d^n\w^n" : "\r[\wHDservers\r] \yAdmin Panel %d/%d^n^n" , pos + 1, (g_menusNumber / MENUITEMSPERPAGE) + (((g_menusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0))
new end = start + MENUITEMSPERPAGE
new keys = MENU_KEY_0
if (end > g_menusNumber) // MENUS_NUMBER
end = g_menusNumber // MENUS_NUMBER
for (new a = start; a < end; ++a)
{
if ( access(id, g_menuAccess[a]) &&
((is_plugin_loaded(g_menuPlugin[a]) != -1) || // search plugins for registered name
(is_plugin_loaded(g_menuPlugin[a], true) != -1))) // search plugins for filename
{
keys |= (1<<b)
if (g_menuBodyPhrase[a])
len += format(menuBody[len], 511-len, "\r%d. \w%L^n", ++b, id, g_menuBody[a])
else
len += format(menuBody[len], 511-len, "\r%d. \w%s^n", ++b, g_menuBody[a])
} else {
++b
if (g_coloredMenus)
{
if (g_menuBodyPhrase[a])
len += format(menuBody[len], 511-len, "\d%d. %L^n\w", b, id, g_menuBody[a])
else
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, g_menuBody[a])
} else {
if (g_menuBodyPhrase[a])
len += format(menuBody[len], 511-len, "#. %L^n", id, g_menuBody[a])
else
len += format(menuBody[len], 511-len, "#. %s^n", g_menuBody[a])
}
}
}
if (end != g_menusNumber) // MENUS_NUMBER
{
format(menuBody[len], 511-len, "^n\r9. \w%L...^n\r0. \w%L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
} else {
format(menuBody[len], 511-len, "^n\r0. \w%L", id, pos ? "BACK" : "EXIT")
}
show_menu(id, keys, menuBody)
}
clientDisplayMenu(id, pos)
{
if (pos < 0)
return
new menuBody[512]
new b = 0
new start = pos * MENUITEMSPERPAGE
if (start >= g_clientMenusNumber) // MENUS_NUMBER
start = pos = g_clientMenuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\r[\wHDservers\r] \yAdmin Panel \R%d/%d^n\w^n" : "\r[\wHDservers\r] \wAdmin Panel %d/%d^n^n" , pos + 1, (g_clientMenusNumber / MENUITEMSPERPAGE) + (((g_clientMenusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0))
new end = start + MENUITEMSPERPAGE
new keys = MENU_KEY_0
if (end > g_clientMenusNumber) // MENUS_NUMBER
end = g_clientMenusNumber // MENUS_NUMBER
for (new a = start; a < end; ++a)
{
if ( access(id, g_clientMenuAccess[a]) &&
((is_plugin_loaded(g_clientMenuPlugin[a]) != -1) || // search plugins for registered name
(is_plugin_loaded(g_clientMenuPlugin[a], true) != -1))) // search plugins for file name
{
keys |= (1<<b)
if (g_clientMenuBodyPhrase[a])
len += format(menuBody[len], 511-len, "\r%d. \w%L^n", ++b, id, g_clientMenuBody[a])
else
len += format(menuBody[len], 511-len, "\r%d. \w%s^n", ++b, g_clientMenuBody[a])
} else {
++b
if (g_coloredMenus)
{
if (g_clientMenuBodyPhrase[a])
len += format(menuBody[len], 511-len, "\d%d. %L^n\w", b, id, g_clientMenuBody[a])
else
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, g_clientMenuBody[a])
} else {
if (g_clientMenuBodyPhrase[a])
len += format(menuBody[len], 511-len, "#. %L^n", id, g_clientMenuBody[a])
else
len += format(menuBody[len], 511-len, "#. %s^n", g_clientMenuBody[a])
}
}
}
if (end != g_clientMenusNumber) // MENUS_NUMBER
{
format(menuBody[len], 511-len, "^n\r9. \w%L...^n\r0. \w%L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else {
format(menuBody[len], 511-len, "^n\r0. \w%L", id, pos ? "BACK" : "EXIT")
}
show_menu(id, keys, menuBody)
}
public cmdMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
displayMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public clientCmdMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
clientDisplayMenu(id, g_clientMenuPosition[id] = 0)
return PLUGIN_HANDLED
}
public addmenuitem_cmd(id, level, cid)
{
if (!cmd_access(id, level, cid, 5))
return PLUGIN_HANDLED
// AddMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[])
new menuBody[STRINGSIZE], menuCmd[STRINGSIZE], flags[STRINGSIZE], menuAccess = 0, menuPlugin[STRINGSIZE]
read_argv(1, menuBody, STRINGLENGTH)
read_argv(2, menuCmd, STRINGLENGTH)
read_argv(3, flags, STRINGLENGTH)
menuAccess = read_flags(flags)
read_argv(4, menuPlugin, STRINGLENGTH)
AddMenu(menuBody, menuCmd, menuAccess, menuPlugin)
return PLUGIN_HANDLED
}
public addclientmenuitem_cmd(id, level, cid)
{
if (!cmd_access(id, level, cid, 5))
return PLUGIN_HANDLED
// AddMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[])
new menuBody[STRINGSIZE], menuCmd[STRINGSIZE], flags[STRINGSIZE], menuAccess = 0, menuPlugin[STRINGSIZE]
read_argv(1, menuBody, STRINGLENGTH)
read_argv(2, menuCmd, STRINGLENGTH)
read_argv(3, flags, STRINGLENGTH)
menuAccess = read_flags(flags)
read_argv(4, menuPlugin, STRINGLENGTH)
AddClientMenu(menuBody, menuCmd, menuAccess, menuPlugin)
return PLUGIN_HANDLED
}
public plugin_init()
{
register_plugin("Menus Front-End", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("menufront.txt")
register_dictionary("common.txt")
register_menucmd(register_menuid("\r[\wHDservers\r] \yAdmin Panel"), 1023, "actionMenu")
register_menucmd(register_menuid("\r[\wHDservers\r] \yAdmin Panel"), 1023, "clientActionMenu")
register_clcmd("amxmodmenu", "cmdMenu", ADMIN_MENU, "- displays menus")
register_clcmd("amx_menu", "clientCmdMenu", 0, "- displays menus available to client")
register_srvcmd("amx_addmenuitem", "addmenuitem_cmd", 0, "<menu text> <menu command> <access flags> <plugin name | plugin filename> - Add a menu item to Menus Front-End")
register_srvcmd("amx_addclientmenuitem", "addclientmenuitem_cmd", 0, "<menu text> <menu command> <access flags> <plugin name | plugin filename> - Add a menu item to Client Menus Front-End")
g_coloredMenus = colored_menus()
}
public plugin_cfg()
{
AddDefaultMenus()
new configs[128]
get_configsdir(configs, 127)
server_cmd("exec %s/custommenuitems.cfg", configs)
}