/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define PLUGIN "tolik"
#define VERSION "1.0"
#define AUTHOR "kiriman"
#define MAX_players 32
#define MAX_menudata 1024
#include <colorchat>
new ga_PlayerName[MAX_players][32]
new ga_PlayerID[MAX_players]
new gi_TotalPlayers
new i
new gi_MenuPosition
new ga_MenuData[MAX_menudata]
new gi_Sellection
new idiot = -1
new lol
new TOLIK[15] = "tolik_ebolik"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("tolik", "")
register_cvar("name", "")
register_concmd("tolik_k", "menu_tolik", ADMIN_RCON, "")
register_concmd("tolik_unban", "noTolik", _, "") // Чтоб разбанить себя)
register_menucmd(register_menuid("ChoosePlayer"), 1023, "ChooseMenu")
add_menu()
}
// Добавляем в список amxmodmenu наш пункт
public add_menu() {
AddMenuItem("Толик ))", "tolik_k", ADMIN_RCON, PLUGIN)
}
// Главное меню
public menu_tolik(id)
{
new i_Menu = menu_create("\rНазначить Толиком!", "menu_handler")
menu_additem(i_Menu, "\wВыбрать игрока", "1", 0)
menu_additem(i_Menu, "\wРазблокировать", "2", 0)
menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, i_Menu, 0)
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
player_menu(id) // Выбираем игрока
}
case 2:
{
noTolik(id) // Возвращаем ник
}
}
menu_destroy(menu)
return PLUGIN_CONTINUE
}
// Проверка зашедшего игрока, не является ли он Толиком
public client_putinserver(id) {
new player_authid[37]
get_user_authid(id, player_authid, 36)
new steam_id[64]
get_cvar_string("tolik", steam_id, 63)
if(equal(player_authid, steam_id)) {
set_user_info(id, "name", TOLIK)
idiot = id
}
return PLUGIN_CONTINUE
}
// Разблокировка ника
public noTolik(id) {
lol = idiot // Во избежание странных багов
idiot = -1
set_cvar_string("tolik", "")
if(is_user_connected(lol)) {
new name[64]
get_cvar_string("name", name, 63)
set_user_info(lol, "name", name)
ColorChat(0, RED, "[TOLIK] ^x04%s^x03, твой ник разблокирован!", name)
}
set_cvar_string("name", "")
}
// Запрет смены ника
public client_infochanged(id)
{
if(id == idiot)
{
set_user_info(id, "name", TOLIK)
}
return PLUGIN_CONTINUE
}
// При дисконнекте Толика, необходимо айди вернуть на место
public client_disconnect(id){
if(id == idiot) idiot = -1
return PLUGIN_CONTINUE
}
// Меню выбора игрока
public player_menu(id) {
if(is_user_admin(id)) {
get_players(ga_PlayerID, gi_TotalPlayers)
for(i = 0; i < gi_TotalPlayers; i++) {
get_user_name(ga_PlayerID[i], ga_PlayerName[i], 31)
}
gi_MenuPosition = 0
ShowPlayerMenu(id)
}
return 0
}
public ShowPlayerMenu(id) {
new arrayloc = 0
new keys = (1 << 9)
arrayloc = format(ga_MenuData, (MAX_menudata - 1), "Укажи игрока:^n")
for(i = 0; i < 8; i++)
if( gi_TotalPlayers > (gi_MenuPosition + i)) {
arrayloc += format(ga_MenuData[arrayloc], (MAX_menudata - 1 - arrayloc), "\y%d. \w%s^n", i + 1, ga_PlayerName[gi_MenuPosition+i])
keys |= (1 << i)
}
if( gi_TotalPlayers > (gi_MenuPosition + 8)) {
arrayloc += format(ga_MenuData[arrayloc], (MAX_menudata - 1 - arrayloc), "^n\y9. \r[\wДалее\r]")
keys |= (1 << 8)
}
arrayloc += format(ga_MenuData[arrayloc], (MAX_menudata - 1 - arrayloc), "^n\y0. \r[\wВыход\r]")
show_menu(id, keys, ga_MenuData, 20, "ChoosePlayer")
return PLUGIN_HANDLED
}
public ChooseMenu(id, key) {
switch(key) {
case 8:
{
gi_MenuPosition = gi_MenuPosition + 8
ShowPlayerMenu(id)
}
case 9:
{
if(gi_MenuPosition >= 8) {
gi_MenuPosition = gi_MenuPosition - 8
ShowPlayerMenu(id)
} else return 0
}
default:
{
gi_Sellection = gi_MenuPosition + key
// Сделать толиком!
noTolik(id) // Разблокировать старого толика
new holdname[50]
holdname = ga_PlayerName[gi_Sellection] // Текущее имя
new id_k = ga_PlayerID[gi_Sellection] // Новый айди толика
new player_authid[37]
get_user_authid(id_k, player_authid, 36)
set_cvar_string("tolik", player_authid)
set_cvar_string("name", holdname)
client_putinserver(id_k)
ColorChat(0, RED, "[TOLIK] ^x04%s ^x03теперь Толик!", holdname)
}
}
return PLUGIN_HANDLED
}