Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
|
11-18-2019
, 14:57
Re: Plugin to execute HLTV recording?
|
#5
|
PHP Code:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <sockets>
new g_Socket; new g_Forward; new g_Args[192]; new g_Password[32];
new g_This; new g_Host; new g_Pass; new g_Folder; new g_Name;
public plugin_init() { register_plugin("Amx Mod (HLTV)","0.0.1","SmileY"); g_This = get_cvar_pointer("net_address"); g_Host = create_cvar("amx_hltv_host","192.168.237.1:27020",FCVAR_NONE,"Remote HLTV address"); g_Pass = create_cvar("amx_hltv_pass","2133",FCVAR_PROTECTED,"Remote HLTV rcon password"); g_Folder = create_cvar("amx_hltv_demo_folder","demos",FCVAR_NONE,"Demo folder inside HLTV"); g_Name = create_cvar("amx_hltv_demo_name","record",FCVAR_NONE,"Default demo name"); register_concmd("amx_hltv","RunCommand",ADMIN_RCON,"amx_hltv <record|stop> - Start or Stop a demo recording from remote HLTV"); }
public RunCommand(id,level,cid) { if(!cmd_access(id,level,cid,2)) { return PLUGIN_HANDLED; } new Command[8]; read_args(Command,charsmax(Command)); remove_quotes(Command); if(Command[0] == 'r') { new This[MAX_IP_WITH_PORT_LENGTH]; get_pcvar_string(g_This,This,charsmax(This)); new Folder[MAX_NAME_LENGTH]; get_pcvar_string(g_Folder,Folder,charsmax(Folder)); new Name[MAX_NAME_LENGTH]; get_pcvar_string(g_Name,Name,charsmax(Name)); RconCommand("connect %s;record %s/%s",This,Folder,Name); } else { RconCommand("stop"); } return PLUGIN_HANDLED; }
stock RconCommand(const Command[],any:...) { if(g_Socket == 0) { new Host[MAX_IP_WITH_PORT_LENGTH]; get_pcvar_string(g_Host,Host,charsmax(Host)); get_pcvar_string(g_Pass,g_Password,charsmax(g_Password)); new IP[MAX_IP_LENGTH],Port[6]; strtok(Host,IP,charsmax(IP),Port,charsmax(Port),':'); if(IP[0] && Port[0] && g_Password[0]) { new Error; g_Socket = socket_open(IP,str_to_num(Port),SOCKET_UDP,Error,SOCK_NON_BLOCKING); if(Error == SOCK_ERROR_OK) { vformat(g_Args,charsmax(g_Args),Command,2); new Data[32]; formatex(Data,sizeof(Data),"%c%c%c%cchallenge rcon",0xFF,0xFF,0xFF,0xFF); if(socket_send2(g_Socket,Data,charsmax(Data)) != -1) { g_Forward = register_forward(FM_StartFrame,"OnSocketRecv"); } } else { socket_close(g_Socket); g_Socket = 0; } } } }
public OnSocketRecv() { if(socket_is_readable(g_Socket,0)) { new Data[128]; if(socket_recv(g_Socket,Data,charsmax(Data)) > 0) { new Rcon[32],None[64]; parse(Data,None,charsmax(None),None,charsmax(None),Rcon,charsmax(Rcon)); formatex(Data,charsmax(Data),"%c%c%c%crcon %s ^"%s^" %s",0xFF,0xFF,0xFF,0xFF,Rcon,g_Password,g_Args); socket_send2(g_Socket,Data,charsmax(Data)); if(socket_close(g_Socket)) { g_Socket = 0; unregister_forward(FM_StartFrame,g_Forward); } } } }
I did not coded command part itself, but i think you got the main idea.
Ps. Using sockets, wait more some minutes to get command working!
Edit: Done.
__________________
Last edited by ^SmileY; 11-18-2019 at 15:11.
|
|