Версия: 1.0 (Beta)
Описание: Плагин на API меню для стандартного голосования на сервере при помощи стандартных команд таких как amx_votekick, amx_voteban, amx_votemap и так далее. Это первая версия плагина, писался он за пару минут, строгой оценки не прошу, критику принимаю.
Это конечно же не первая моя работа, другие плагины выложу позже. Мб кому понадобятся...
Плагин прост и думаю не нагружает мозг. Код читабелен. Пользуйтесь если плагин стоит того..
- Код: Выделить всё
#include <amxmodx>
#define PLUGIN "AMXX Vote by Bombplays"
#define VERSION "1.0 (Beta)"
#define AUTHOR "Bombplays"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar(PLUGIN, VERSION, FCVAR_SPONLY|FCVAR_SERVER)
register_clcmd("say votekick", "menu_vote")
register_clcmd("say voteban", "menu_vote")
register_clcmd("say votemap", "menu_vote")
register_clcmd("say vote", "menu_vote")
register_clcmd("say_team votekick", "menu_vote")
register_clcmd("say_team voteban", "menu_vote")
register_clcmd("say_team votemap", "menu_vote")
register_clcmd("say_team vote", "menu_vote")
}
public menu_vote(id)
{
if(is_user_connected(id))
{
new i_Menu = menu_create("Меню голосования", "vote_handler");
menu_additem(i_Menu, "Голосовать за Ban", "1", 0);
menu_additem(i_Menu, "Голосовать за Kick", "2", 0);
//menu_additem(i_Menu, "Голосовать за карту", "3", 0);
menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее");
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");
menu_display(id, i_Menu, 0)
}
return PLUGIN_HANDLED
}
public vote_handler(id, menu, item)
{
if( item < 0 ) return PLUGIN_CONTINUE;
new cmd[3], access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new Choise = str_to_num(cmd)
switch (Choise)
{
case 1: VoteBan(id);
case 2: VoteKick(id);
//case 3: VoteMap(id);
}
return PLUGIN_HANDLED;
}
public VoteBan(id)
{
if(get_user_flags(id) & ADMIN_RCON)
{
new menu = menu_create( "\yВыберите игрока:\w", "ban_handler" )
new players[32], pnum, tempid
new szName[32], szTempid[10]
get_players(players, pnum)
for(new i; i<pnum; i++)
{
tempid = players[i]
get_user_name(tempid, szName, 31)
num_to_str(tempid, szTempid, 9)
menu_additem(menu, szName, szTempid, 0)
}
menu_setprop(menu, MPROP_NUMBER_COLOR,"\r")
menu_setprop(menu, MPROP_NEXTNAME, "Следущий список")
menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
}
return PLUGIN_HANDLED
}
public ban_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
client_cmd(id,"amx_voteban %s", iName)
return PLUGIN_HANDLED
}
public VoteKick(id)
{
if(get_user_flags(id) & ADMIN_RCON)
{
new menu = menu_create( "\yВыберите игрока:\w", "kick_handler" )
new players[32], pnum, tempid
new szName[32], szTempid[10]
get_players(players, pnum)
for(new i; i<pnum; i++)
{
tempid = players[i]
get_user_name(tempid, szName, 31)
num_to_str(tempid, szTempid, 9)
menu_additem(menu, szName, szTempid, 0)
}
menu_setprop(menu, MPROP_NUMBER_COLOR,"\r")
menu_setprop(menu, MPROP_NEXTNAME, "Следущий список")
menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id, menu, 0)
}
return PLUGIN_HANDLED
}
public kick_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
client_cmd(id,"amx_votekick %s", iName)
return PLUGIN_HANDLED
}