Администратор может вручную по списку меню включить любому игроку запись!
- Код: Выделить всё
#include <amxmodx>
#define IMMUNITET ADMIN_CVAR //иммунитет игрока
new g_recordDemO[33]
public plugin_init()
{
register_plugin("Record Demo", "1.0", "...........")
register_clcmd("say /recorddemo", "RecordDemo")
}
public client_disconnect(id)
{
g_recordDemO[id] = false
}
public RecordDemo(id)
{
if(!(get_user_flags(id) & ADMIN_MENU))
{
ChatColor(id, "^3[^4RECORD demo^3] ^1Вклюсить запись демо игроку, может толькл ^4Админ")
return
}
new title[64]
new iMenu = menu_create("\yМеню\rRECORD", "menu_handler")
new s_Players[32], i_Num, iPlayer
new s_Player[4], s_Name[32]
get_players(s_Players, i_Num, "ach")
for(new i; i < i_Num; i++)
{
iPlayer = s_Players[i]
get_user_name(iPlayer, s_Name, charsmax(s_Name))
num_to_str(iPlayer, s_Player, charsmax(s_Player))
if(get_user_flags(iPlayer) & IMMUNITET)
{
formatex(title, charsmax(title), "\d%s \r* \dиммунититет", s_Name)
}
else
{
formatex(title, charsmax(title), "%s %s", s_Name, g_recordDemO[iPlayer] ? " \r* \yидет запись..." : "")
}
menu_additem(iMenu, title, s_Player)
}
menu_setprop(iMenu, MPROP_BACKNAME , "Назад")
menu_setprop(iMenu, MPROP_NEXTNAME , "Далее")
menu_setprop(iMenu, MPROP_EXITNAME, "Выход")
menu_display(id, iMenu, 0)
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[1], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new iPlayer = str_to_num(s_Data)
if(get_user_flags(iPlayer) & IMMUNITET)
return PLUGIN_HANDLED
RecordDemo(id)
NoWeaponFunc(iPlayer)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public NoWeaponFunc(id)
{
if(!is_user_connected(id))
{
ChatColor(id, "^3[^4RECORD demo^3] ^1игрок вышел с игры")
return
}
if(g_recordDemO[id])
{
ChatColor(id, "^3[^4RECORD demo^3] ^1запись уже запущена")
return
}
g_recordDemO[id] = true
new Map[32], szTime[32]
get_mapname (Map, 31)
get_time("%d%b", szTime, 31)
client_cmd(id, "stop; record Last_Shot_%s_%s",szTime, Map )
}
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 ()
}
}
}
}