Plugins grabar demo automático
#1
Buenas amigos vean yo tengo un servidor pug/scrim y quiero que se grabe una demo automatica con fecha y hora.
Responder
#2
(23/10/2019, 09:59 AM)Quiero aprender escribió: Buenas amigos vean yo tengo un servidor pug/scrim y quiero que se grabe una demo automatica con fecha y hora.
Proba es lo que encontre y no te cuesta por lo menos buscar en google, yo puse demo automatica con fecha y hora y encontre esto Whatever
Proba a ver si te sirve lo saque de este Thread

Código PHP:
#include <amxmodx>
#include <amxmisc>

new g_mapname[32];

enum _DATA_SERVER SERVER_TABLE[20], SERVER_IP[21] };

new const 
g_MySQLTable[][_DATA_SERVER] = 
{
    { 
"Pug""140.82.31.37:27018" }
};

new 
g_szServerIP[21];

public 
plugin_init()
{
    
register_plugin("Demo Record Admin""v0.1.1""matrix123");

    
get_mapname(g_mapnamecharsmax(g_mapname));

    
get_user_ip(0g_szServerIPcharsmax(g_szServerIP), 0);
}

public 
client_putinserver(id)
{

    
set_task(10.0"grab_ar"id)

}

public 
plugin_cfg()
{
    
server_cmd("amx_pausecfg add ^"Demo Record^"");
}
public 
grab_arid )
{
    if(!
is_user_connected(id))
        return;

    new 
archivo[150], szTimedata[9];
    
get_time "%D/%m/%Y"szTimedata);

    for(new 
0sizeof(g_MySQLTable[])-1i++) 
    {
        if(!
equali(g_szServerIPg_MySQLTable[i][SERVER_IP]))
            continue;

        
format(archivocharsmax(archivo), "%s_DEM_%s_%s"g_MySQLTable[i][SERVER_TABLE], szTimedatag_mapname)
    }    

    
replace_allarchivo127":""_" );
    
replace_allarchivo127".""_" );
    
replace_allarchivo127"*""_" );
    
replace_allarchivo127"/""_" );
    
replace_allarchivo127"|""_" );
    
replace_allarchivo127"\", "_" );
    replace_all( archivo, 127, "
?", "_" );
    replace_all( archivo, 127, "
>", "_" );
    replace_all( archivo, 127, "
<", "_" );
    replace_all( archivo, 127, " ", "
_" );


    CC(id, "
!yEmpezaremos a grabar la !gdemo !yal iniciar el pug")
    CC(id, "
!yArchivo:!g^"%s.dem^"", archivo);

    client_cmd(id, "
stoprecord ^"%s^"", archivo);
    return;
 } 

 stock CC(const Index, const input[], any:...)
{
    static i_Count; i_Count = 1;
    static sz_Players[32];
    static sz_Msg[191];
    
    new g_messageid_saytext;
    g_messageid_saytext = get_user_msgid("
SayText");

    vformat(sz_Msg, charsmax(sz_Msg), input, 3);
    
    replace_all(sz_Msg, charsmax(sz_Msg), "
!y" , "^1");
    replace_all(sz_Msg, charsmax(sz_Msg), "
!t" , "^3");
    replace_all(sz_Msg, charsmax(sz_Msg), "
!g" , "^4");
    
    if(Index) sz_Players[0] = Index;
    else get_players(sz_Players, i_Count, "
ch");
    
    for(new i = 0; i < i_Count; i++)
    {
        if(is_user_connected(sz_Players[i]))
        {
            message_begin(MSG_ONE_UNRELIABLE, g_messageid_saytext, _, sz_Players[i]);
            write_byte(sz_Players[i]);
            write_string(sz_Msg);
            message_end();
        }
    }

SI NO VAS AYUDAR, POR FAVOR NO COMENTARLovepanda
Responder
#3
(23/10/2019, 10:17 AM)DavidLG escribió:
(23/10/2019, 09:59 AM)Quiero aprender escribió: Buenas amigos vean yo tengo un servidor pug/scrim y quiero que se grabe una demo automatica con fecha y hora.
Proba es lo que encontre y no te cuesta por lo menos buscar en google, yo puse demo automatica con fecha y hora y encontre esto Whatever
Proba a ver si te sirve lo saque de este Thread

Código PHP:
#include <amxmodx>
#include <amxmisc>

new g_mapname[32];

enum _DATA_SERVER SERVER_TABLE[20], SERVER_IP[21] };

new const 
g_MySQLTable[][_DATA_SERVER] = 
{
    { 
"Pug""140.82.31.37:27018" }
};

new 
g_szServerIP[21];

public 
plugin_init()
{
    
register_plugin("Demo Record Admin""v0.1.1""matrix123");

    
get_mapname(g_mapnamecharsmax(g_mapname));

    
get_user_ip(0g_szServerIPcharsmax(g_szServerIP), 0);
}

public 
client_putinserver(id)
{

    
set_task(10.0"grab_ar"id)

}

public 
plugin_cfg()
{
    
server_cmd("amx_pausecfg add ^"Demo Record^"");
}
public 
grab_arid )
{
    if(!
is_user_connected(id))
        return;

    new 
archivo[150], szTimedata[9];
    
get_time "%D/%m/%Y"szTimedata);

    for(new 
0sizeof(g_MySQLTable[])-1i++) 
    {
        if(!
equali(g_szServerIPg_MySQLTable[i][SERVER_IP]))
            continue;

        
format(archivocharsmax(archivo), "%s_DEM_%s_%s"g_MySQLTable[i][SERVER_TABLE], szTimedatag_mapname)
    }    

    
replace_allarchivo127":""_" );
    
replace_allarchivo127".""_" );
    
replace_allarchivo127"*""_" );
    
replace_allarchivo127"/""_" );
    
replace_allarchivo127"|""_" );
    
replace_allarchivo127"\", "_" );
    replace_all( archivo, 127, "
?", "_" );
    replace_all( archivo, 127, "
>", "_" );
    replace_all( archivo, 127, "
<", "_" );
    replace_all( archivo, 127, " ", "
_" );


    CC(id, "
!yEmpezaremos a grabar la !gdemo !yal iniciar el pug")
    CC(id, "
!yArchivo:!g^"%s.dem^"", archivo);

    client_cmd(id, "
stoprecord ^"%s^"", archivo);
    return;
 } 

 stock CC(const Index, const input[], any:...)
{
    static i_Count; i_Count = 1;
    static sz_Players[32];
    static sz_Msg[191];
    
    new g_messageid_saytext;
    g_messageid_saytext = get_user_msgid("
SayText");

    vformat(sz_Msg, charsmax(sz_Msg), input, 3);
    
    replace_all(sz_Msg, charsmax(sz_Msg), "
!y" , "^1");
    replace_all(sz_Msg, charsmax(sz_Msg), "
!t" , "^3");
    replace_all(sz_Msg, charsmax(sz_Msg), "
!g" , "^4");
    
    if(Index) sz_Players[0] = Index;
    else get_players(sz_Players, i_Count, "
ch");
    
    for(new i = 0; i < i_Count; i++)
    {
        if(is_user_connected(sz_Players[i]))
        {
            message_begin(MSG_ONE_UNRELIABLE, g_messageid_saytext, _, sz_Players[i]);
            write_byte(sz_Players[i]);
            write_string(sz_Msg);
            message_end();
        }
    }


Gracias voy a probarlo
Responder
#4
Yo había hecho esto antes, pero jamas probe si andaba..
Básicamente, la idea era esta: Escribis /demos y elegis si querés grabar demos o no, sí querés, cada vez que te conectes las grabaras y si no querés no las graba. Además que elegias el nombre de la demo y esas cosas jajaja. Lo hice con guardado de HWID del sXe-Injected, que ya casi nadie lo usa, así que recomendaría que cambies el guardado por steamid o nombre del player o el que vos quieras.
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <adv_vault>
#include <colorchat>

#define PREFIX_SAY    "^4[BREAKING GAMING]^1"

enum
{
    
CAMPO_DEMO,
    
CAMPOS_TOTALES
};

new 
g_vault;
new 
g_campos[CAMPOS_TOTALES];

new 
sXeHid[33][64], g_demo[33];

new 
g_maxplayers;

stock advanced_vault_init() 
{
    
g_vault adv_vault_open("DatosDemo"false);
    
    
g_campos[CAMPO_DEMO] = adv_vault_register_field(g_vault"demo"DATATYPE_INT);
    
    
adv_vault_init(g_vault);    
}

stock advanced_vault_load(id)
{
    if(!
adv_vault_get_prepare(g_vault_sXeHid[id]))
        return;
    
    
g_demo[id] = adv_vault_get_field(g_vaultg_campos[CAMPO_DEMO]);
    
    if(
g_demo[id] != -1) {
        
ColorChat(idGREEN"%s Estas grabando demo"PREFIX_SAY);
        
        new 
Mapa[32], Fecha[50], Hostname[64];
        
get_mapname(Mapacharsmax(Mapa));
        
get_time("%d/%m/%Y - %H:%M:%S"Fechacharsmax(Fecha));
        
get_cvar_string("hostname"Hostnamecharsmax(Hostname));
        
        switch(
g_demo[id]) 
        {
            case 
1: {
                
client_cmd(id"record ^"%s^""Mapa);
                
ColorChat(idGREEN"%s Nombre de la demo: ^4%s"PREFIX_SAYMapa);
            }
            case 
2: {
                
client_cmd(id"record ^"%s^""Hostname);
                
ColorChat(idGREEN"%s Nombre de la demo: ^4%s"PREFIX_SAYHostname);
            }
            case 
3: {
                
client_cmd(id"record ^"%s_%s^""HostnameMapa);
                
ColorChat(idGREEN"%s Nombre de la demo: ^4%s_%s"PREFIX_SAYHostnameMapa);
            }
            case 
4: {
                
client_cmd(id"record ^"%s^""Fecha);
                
ColorChat(idGREEN"%s Nombre de la demo: ^4%s"PREFIX_SAYFecha);
            }
        }
    }
}

stock advanced_vault_save(id)
{
    
adv_vault_set_start(g_vault);
    
    
adv_vault_set_field(g_vaultg_campos[CAMPO_DEMO], g_demo[id]);
    
    
adv_vault_set_end(g_vault0sXeHid[id]);
}

public 
plugin_init() {
    
register_plugin("Demos Automaticas""v1.0""heNK'");
    
    
register_srvcmd("sxe_event""sxe_events");
    
    
advanced_vault_init();
    
    
register_clcmd("say /demos""cmdDemos");
    
register_clcmd("say /demo""cmdDemos");
    
    
g_maxplayers get_maxplayers();
}


public 
sxe_events()
{
    static 
iEventiIdiArg];

    
read_argv1iArgcharsmaxiArg ) );
    
iEvent str_to_numiArg );

    
read_argv2iArgcharsmaxiArg ) );
    
iId str_to_numiArg );
    
    for( new 
1<= g_maxplayersi++ )
    {
        if( 
is_user_connected) && get_user_userid) == iId )
        {
            
iId i;
            break;
        }
    }
    
    if( !
iId ) return;

    if( 
iEvent == )
    {
        
read_argv(5sXeHid[iId], charsmax(sXeHid[]));
        
advanced_vault_load(iId);
    }
}

public 
client_disconnect(id)
    
advanced_vault_save(id);
    
public 
cmdDemos(id)
{
    new 
menu menu_create("\r[BREAKING GAMING] \wGrabar Demos""HandlerDemosAutomaticas");
    
    
menu_additem(menu"Grabar demos siempre que te conectes""1");
    
menu_additem(menu"No grabar demos""2");
    
    
menu_setprop(menuMPROP_EXITNAME"Salir"),
    
menu_setprop(menuMPROP_NUMBER_COLOR"\y");
    
menu_display(idmenu0);
}

public 
HandlerDemosAutomaticas(id ,menuitem) {
    switch(
item) {
        case 
MENU_EXIT: {
            
menu_destroy(menu);
            return 
PLUGIN_HANDLED;
        }
        case 
0GrabarDemos(id);
        case 
1: {
            
ColorChat(idGREEN"%s Preferiste no grabar demos"PREFIX_SAY);
            
g_demo[id] = -1;
            
advanced_vault_save(id);
        }
    }
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
GrabarDemos(id) {
    new 
menu menu_create("\r[BREAKING GAMING] \wDemos Automaticas""HandlerGrabarDemos");
    
    
menu_additem(menu"Grabar demo con nombre del mapa""1");
    
menu_additem(menu"Grabar demo con nombre del servidor""2");
    
menu_additem(menu"Grabar demo con nombre del server y mapa""3");
    
menu_additem(menu"Grabar demo con hora""4");

    
menu_setprop(menuMPROP_EXITNAME"Salir"),
    
menu_setprop(menuMPROP_NUMBER_COLOR"\y");
    
menu_display(idmenu0);

}

public 
HandlerGrabarDemos(idmenuitem
{
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0g_demo[id] = 1advanced_vault_save(id);
        case 
1g_demo[id] = 2advanced_vault_save(id);
        case 
2g_demo[id] = 3advanced_vault_save(id);
        case 
3g_demo[id] = 4advanced_vault_save(id);
    }
    
    return 
PLUGIN_HANDLED;    

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)