PHP Code:
#include <amxmodx>
#include <amxmisc>
new g_maxPlayers, g_Target[33]
// Função chamada quando o plugin é inicializado
public plugin_init()
{
register_plugin("Demo Recorder", "1.0", "Author")
register_clcmd("say /recorddemo", "show_demo_selector_menu")
register_clcmd("Nome da demo", "demoNameCmd")
g_maxPlayers = get_maxplayers()
}
public client_authorized(id)
{
g_Target[id] = 0
}
// Comando de chat para abrir o menu de seleção de jogadores
public show_demo_selector_menu(id)
{
if(!is_user_admin(id))
{
client_print(id, print_chat, "Apenas administradores podem usar este comando.")
return PLUGIN_HANDLED
}
new dMenu = menu_create("Selecione o jogador que deseja gravar a demo:", "demo_selector_menu_handle")
new szName[32], szID[3], totalPlayers = 0
// Adiciona os jogadores ao menu
for(new i = 1; i < g_maxPlayers; i++)
{
if(is_user_connected(i) && i != id)
{
get_user_name(i, szName, charsmax(szName))
formatex(szID, charsmax(szID), "%d", i)
menu_additem(dMenu, szName, szID)
totalPlayers++
}
}
// Mostra o menu
if(totalPlayers)
{
menu_display(id, dMenu)
}
else
{
client_print(id, print_chat, "Nenhum jogador conectado")
}
return PLUGIN_HANDLED
}
// Função para tratar as seleções do menu
public demo_selector_menu_handle(id, dMenu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(dMenu)
return PLUGIN_HANDLED
}
new data[3], iData, name[1], access, callback
menu_item_getinfo(dMenu, item, access, data, charsmax(data), name, charsmax(name), callback)
menu_destroy(dMenu)
iData = str_to_num(data)
if(!is_user_connected(iData))
{
client_print(id, print_chat, "Jogador desconectado")
return PLUGIN_HANDLED
}
g_Target[id] = iData
new playerName[33]
get_user_name(iData, playerName, charsmax(playerName))
client_print(id, print_chat, "Digite o nome da demo para o jogador: %s", playerName)
client_cmd(id, "messagemode ^"Nome da demo^"")
return PLUGIN_HANDLED
}
// Função chamada quando o jogador insere o nome da demo
public demoNameCmd(id)
{
if(!is_user_admin(id))
{
client_print(id, print_chat, "Apenas administradores podem usar este comando.")
return PLUGIN_HANDLED
}
if(!is_user_connected(g_Target[id]))
{
g_Target[id] = 0
client_print(id, print_chat, "Jogador desconectado")
return PLUGIN_HANDLED
}
new demoName[25]
read_argv(3, demoName, charsmax(demoName))
if(!demoName[0])
{
g_Target[id] = 0
client_print(id, print_chat, "Nome invalido")
return PLUGIN_HANDLED
}
new playerName[33]
get_user_name(g_Target[id], playerName, charsmax(playerName))
client_print(id, print_chat, "Demo para o jogador %s está sendo gravada como ^"%s.dem^"", playerName, demoName)
client_cmd(g_Target[id], "stop;record ^"%s^"", demoName)
g_Target[id] = 0
return PLUGIN_HANDLED
}