View Single Post
Author Message
smiley92
Senior Member
Join Date: Jun 2011
Location: Romania
Old 11-21-2013 , 14:49   Hours is not saved
Reply With Quote #1

Hi allied.I have one plugin and is not work, save hours maybe is the big problem here.I don't know what is the fix problem, because I don't know to script...
This plugin have a lot problem I say, just say.Plugin is for remove admins inactive, admins who which not respect the program maked me in admini.ini, when write hours in the right of what admin I want to respect program.This plugin don't save hours corectly, I say corect is to be when the day is end, 24:00 to be program, now him give warn if I connect and disconnect from server.And minute I want to be saved, to be compensed to hours.

Example: I put in admini.ini Smiley "5", I must to stay five hours to server in one day, is not I received 1 warn of x, x to be a cvar in plugin 1/7, 7 to be day.

Code:
#include < amxmodx >
#include < amxmisc >
#include < nvault >

#define PLUGIN "Admins activity"
#define VERSION "0.1"


#define MAX_WARN    5 

new g_szFile[ 64 ];
new const g_szFileName[ ] = "admini.ini"         /* Numele la fisierul de unde sunt incarcate datele fiecarui admin */

new g_iPlayerStats[ 33 ];
new g_iPlayerMinutes[ 33 ];
new g_iPlayerWarn[ 33 ];

new g_iHourPlayer[ 33 ];


public plugin_init( )
{
    register_plugin( PLUGIN, VERSION, "falcao" );
    
    /* Verificare fisier */
    
    get_configsdir( g_szFile, sizeof( g_szFile ) -1 );
    format( g_szFile, sizeof( g_szFile ) -1, "%s/%s", g_szFile, g_szFileName );
    
    if( !file_exists( g_szFile ) )
    {
        write_file( g_szFile, "; Activitate admini", -1 );
    }
    
    /* Clcmd */
    
    register_clcmd( "say /warn", "cmdWarn" );
    register_clcmd( "say /program", "cmdProgram" );
}

public client_putinserver( id )
{
    new iHour, iMinute;
    time( iHour, iMinute, _ );

    
        LoadHours( id );
        
        set_task( 60.0, "adaugareMinut", id, _, _, "b", _ );
        
        static szName[ 32 ];
        get_user_name( id, szName, sizeof( szName ) -1 );
        
        set_task( 3.0, "verifyPlayer", id );
        
        if( g_iPlayerWarn[ id ] >= MAX_WARN )
        {
            new szFile = fopen( "addons/amxmodx/configs/users.ini", "r" );
            
            if( !szFile )
                return 1;
            
            new szData[ 512 ], szParseName[ 32 ], szParsePassword[ 32 ], szParseFlags[ 32 ], szParseRFlags[ 32 ], iLine;
            
            while( !feof( szFile ) )
            {
                fgets( szFile, szData, sizeof( szData ) -1 );
                
                if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
                    continue;
                    
                parse( szData, szParseName, sizeof( szParseName ) -1, szParsePassword, sizeof( szParsePassword ) -1, szParseFlags, sizeof( szParseFlags ) -1, szParseRFlags, sizeof( szParseRFlags ) -1 );
                
                if( equali( szParseName, szName ) )
                {
                    new szPlayerInfo[ 256 ];
                    format( szPlayerInfo, sizeof( szPlayerInfo ) -1, "; ^"%s^" ^"%s^" ^"%s^" ^"%s^"", szParseName, szParsePassword, szParseFlags, szParseRFlags );
                    
                    write_file( "addons/amxmodx/configs/users.ini", szPlayerInfo, iLine );
                    
                    g_iPlayerWarn[ id ] = 0;
                    
                    set_task( 3.0, "mesajWarn", id );
                }
                
                iLine++;
            }
            
            fclose( szFile );
        } 
    
    return 1;
}

public mesajWarn( id )
{
    C_PrintChat( id, "Ai facut !v5!c/!v5!c warn-uri. Adminul tau a fost oprit." );
}

public cmdWarn( id )
{
    new szFile = fopen( g_szFile, "r" );
    
    if( !szFile )
        return 1;
    
    new szData[ 512 ], szParseName[ 32 ], szParseHours[ 32 ];
    
    while( !feof( szFile ) )
    {
        fgets( szFile, szData, sizeof( szData ) -1 );
        
        if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
            continue;
        
        parse( szData,\
            szParseName, sizeof( szParseName ),\
            szParseHours, sizeof( szParseHours ) );
        
        static szName[ 32 ];
        get_user_name( id, szName, sizeof( szName ) -1 );
        
        if( equali( szParseName, szName ) ) 
        {
            C_PrintChat( id, "Ai !v%i!c/!v%i!c warn-uri, respectati programul zilnic sau primesti remove.", g_iPlayerWarn[ id ], MAX_WARN );
        }
    }
    
    fclose( szFile );
    
    return 1;
}

public cmdProgram( id )
{
    if( get_user_flags( id ) & ADMIN_SLAY )
    {
        new szFile = fopen( g_szFile, "r" );
        
        if( !szFile )
            return 1;
        
        new szData[ 512 ], szParseName[ 32 ], szParseHours[ 32 ];
        
        while( !feof( szFile ) )
        {
            fgets( szFile, szData, sizeof( szData ) -1 );
            
            if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
                continue;
            
            parse( szData, szParseName, sizeof( szParseName ), szParseHours, sizeof( szParseHours ) );
            
            static szName[ 32 ];
            get_user_name( id, szName, sizeof( szName ) -1 );

            if( equali( szParseName, szName ) ) 
            {
                C_PrintChat( id, "Mai ai !v%i!c ore pana iti termini programul de azi.", g_iHourPlayer[ id ] );
            }
        }
        
        fclose( szFile );
    }
    
    else
    {
        C_PrintChat( id, "Ne pare rau, dar nu ai admin pe server." );
    }
    
    return 1;
}

public client_disconnect( id )
{
    new iHour, iMinute;
    time( iHour, iMinute, _ );

    
        SaveHours( id );
    
}

public adaugareMinut( id )
{
    if( is_user_connected( id ) && !is_user_bot( id ) )
    {
        g_iPlayerStats[ id ] += 1;
        
        if( g_iPlayerMinutes[ id ] >= 60 )
        {
            g_iHourPlayer[ id ] -= 1;
            g_iPlayerStats[ id ] += 1;
            g_iPlayerMinutes[ id ] -= 60;
        }
    }
}

public verifyPlayer( id )
{
    new szFile = fopen( g_szFile, "r" );
    
    if( !szFile )
        return 1;
    
    new szData[ 512 ], szParseName[ 32 ], szParseHours[ 32 ];
    
    static szName[ 32 ];
    get_user_name( id, szName, sizeof( szName ) -1 );
    
    while( !feof( szFile ) )
    {
        fgets( szFile, szData, sizeof( szData ) -1 );
        
        if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
            continue;
        
        parse( szData, szParseName, sizeof( szParseName ), szParseHours, sizeof( szParseHours ) );
        
        if( equali( szParseName, szName ) ) 
        {
            if( g_iPlayerStats[ id ] >= str_to_num( szParseHours ) )
            {
                log_to_file( "activity_admins.log", "%s si-a respectat programul cu %i/%i ore.", szName, g_iPlayerStats[ id ], str_to_num( szParseHours ) );    
            }
            
            else
            {
                log_to_file( "activity_admins.log", "%s a stat doar %i minute pe server. A primit 1 warn.", szName, g_iPlayerStats[ id ], str_to_num( szParseHours ), g_iPlayerMinutes[ id ] );
                
                C_PrintChat( id, "Atentie ! Azi ai facut !v%i!c minute. Trebuie sa stai minim !v%i!c ore.", g_iPlayerMinutes[ id ], str_to_num( szParseHours ), str_to_num( szParseHours ) );
                C_PrintChat( id, "Ai primit !v1!c warn, pentru ca nu ai stat !v%i!c ore. (!v%i!c/!v%i!c)", str_to_num( szParseHours ), g_iPlayerStats[ id ], str_to_num( szParseHours ) );
                
                g_iPlayerWarn[ id ] += 1;
            }
            
            g_iHourPlayer[ id ] =  str_to_num( szParseHours );
        }
    }
    
    fclose( szFile );
    
    return 1;
}
        
public LoadHours( id )
{
    new szVaultData[ 256 ], szVaultKey[ 32 ];
    
    static szName[ 32 ];
    get_user_name( id, szName, sizeof( szName ) -1 );
    
    format( szVaultKey, sizeof( szVaultKey ) -1, "%s", szName );
    format( szVaultData, sizeof( szVaultData ) -1, "%i#%i#%i", g_iPlayerStats[ id ], g_iPlayerMinutes[ id ], g_iPlayerWarn[ id ] );    
    
    new szVaultFile = nvault_open( "_file_activity_adm" );
    nvault_get( szVaultFile, szVaultKey, szVaultData, sizeof( szVaultData ) -1 );
    
    replace_all( szVaultData, sizeof( szVaultData ), "#", " " );
    
    new iHours[ 32 ], iWarn[ 33 ], iMinutes[ 33 ];
    parse( szVaultData,\
        iHours, sizeof( iHours ) -1,\
        iWarn, sizeof( iWarn ) -1,\
        iMinutes, sizeof( iMinutes ) -1 );
    
    g_iPlayerStats[ id ] = str_to_num( iHours );
    g_iPlayerWarn[ id ] = str_to_num( iWarn );
    g_iPlayerMinutes[ id ] = str_to_num( iMinutes );
}

public SaveHours( id )
{
    new szVaultData[ 256 ], szVaultKey[ 32 ];
    
    static szName[ 32 ];
    get_user_name( id, szName, sizeof( szName ) -1 );
    
    format( szVaultKey, sizeof( szVaultKey ) -1, "%s", szName );
    format( szVaultData, sizeof( szVaultData ) -1, "%i#%i#%i", g_iPlayerStats[ id ], g_iPlayerMinutes[ id ], g_iPlayerWarn[ id ] );
    
    new szVaultFile = nvault_open( "_file_activity_adm" );
    nvault_set( szVaultFile, szVaultKey, szVaultData );
}

stock C_PrintChat( const id, const szInput[ ], any:... )
{
    new iPlayers[ 32 ], iNum = 1;
    
    static szMsg[ 320 ], szMsg2[ 320 ];
    
    vformat( szMsg, sizeof( szMsg ) -130, szInput, 3 );
    format( szMsg2, sizeof( szMsg2 ) -130, "!c[!vHNS!c] %s", szMsg );
    
    replace_all( szMsg2, sizeof( szMsg ) -130, "!v", "^x04" );
    replace_all( szMsg2, sizeof( szMsg ) -130, "!c", "^x01" );
    replace_all( szMsg2, sizeof( szMsg ) -130, "!e", "^x03" );
    
    if( id )
    {
        iPlayers[ 0 ] = id;
    }
    
    else
    {
        get_players( iPlayers, iNum, "c" );
    }
    
    for( new i = 0; i < iNum; i++ )
    {
        if( is_user_connected( iPlayers[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, iPlayers[ i ] );
            
            write_byte( iPlayers[ i ] );
            write_string( szMsg2 );
            
            message_end( );
        }
    }
}

Last edited by smiley92; 11-23-2013 at 07:08.
smiley92 is offline