SA-MP Forums Archive
Ban system [ MySQL ] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Ban system [ MySQL ] (/showthread.php?tid=657371)



Ban system [ MySQL ] - IdonTmiss - 06.08.2018

Well the command and everything works it just doens't load the ban somehow when the player connects

OnPlayerConnect
PHP код:
new query[200];
mysql_format(SQL, query, sizeof(query), "SELECT * FROM `users` WHERE `name` = '%e' LIMIT 1", GetName(playerid));
mysql_pquery(SQL, query, "CheckPlayerAccount", "i", playerid); 
CheckPlayerAccount
PHP код:
new q[128];
mysql_format( SQL, q, sizeof(q), "SELECT * FROM `banned` WHERE `user_id` = '%d' LIMIT 1", PlayerInfo[playerid][pSqlID] );
mysql_pquery( SQL, q, "CheckPlayerBan", "i", playerid ); 
CheckPlayerBan

PHP код:
/*
#define FUNCTION:%0(%1) \
        forward%0(%1); \
        public%0(%1)
*/
FUNCTION: CheckPlayerBan( playerid ) {
    new 
rows;
    
cache_get_row_count(rows);
    if( !
rows ) {
        
SetTimerEx( "Login", 100, false, "d", playerid ); // the login dialog and stuff
    
}
    else {
        new 
user_id;
        
user_id = cache_get_value_name_int( 0, "user_id", user_id );
        new 
ban_reason[ 64 ], ban_date[ 64 ], ban_admin[ MAX_PLAYER_NAME ];
        
cache_get_value_name( 0, "ban_reason", ban_reason, 150 );
        
cache_get_value_name( 0, "ban_date", ban_date, 150 );
        
cache_get_value_name( 0, "ban_admin", ban_admin, 150 );
            if( 
user_id == PlayerInfo[ playerid ][ pSqlID ] ) {
            
SendClientMessage( playerid, RED, "BANNED");
            
AC_Kick2( playerid ); 
            
/*
            stock AC_Kick2(playerid)
            {
                SetTimerEx("TrueKick", 100, false, "i", playerid);
                GameTextForPlayer(playerid, "~r~Kicked", 60000, 4);
                TogglePlayerControllable(playerid, 0);
            }
            */
            
return 1;
        }
        else 
SetTimerEx( "Login", 100, false, "d", playerid );
    }
} 



Re: Ban system [ MySQL ] - IdonTmiss - 06.08.2018

Looks like this happends only when I (ID: 0) ban someone I don't know why tho...


Re: Ban system [ MySQL ] - DBZdabIt3Bro7 - 06.08.2018

Quote:
Originally Posted by IdonTmiss
Посмотреть сообщение
Looks like this happends only when I (ID: 0) ban someone I don't know why tho...
Show your command.


Re: Ban system [ MySQL ] - IdonTmiss - 06.08.2018

Quote:
Originally Posted by DBZdabIt3Bro7
Посмотреть сообщение
Show your command.
Here you go

PHP код:
cmd:pban(playerid, params[]) {
    if(
PlayerInfo[playerid][pAdmin] < 1338) return SendClientMessage(playerid, RED, "Not allowed!");
    new 
id, reason[ 40 ];
    if( 
sscanf( params,"us[40]", id, reason ) ) return SendClientMessage( playerid, RED, "USAGE: /pban [ ID ] [ Reason ]");
    if( !
IsPlayerConnected( id ) ) return SendClientMessage( playerid, RED, " Wrong ID");
    
sql_ban_user( GetName( id ), PlayerInfo[ id ][ pSqlID ], 1, reason, GetName( playerid ) );
    
AC_Kick2( id );
    return 
true;
}
// -- //
sql_ban_user( user_name[], user_id, ban_type, ban_reason[], admin_name[], ban_time = 0 ) {
    new 
query[ 512 ], ban_date[ 64 ], tmphour, tmpminute, tmpsecond, year, month,day;
    
getdate( year, month, day );
    
gettimeEx( tmphour, tmpminute, tmpsecond );
    
FixHour( tmphour );
    
tmphour = shifthour;
    
format( ban_date, sizeof( ban_date ), "%02d/%02d/%d - %d/%d/%d", day, month, year, tmphour, tmpminute, tmpsecond );
    
mysql_format( SQL, query, sizeof( query ), "INSERT INTO `banned` (user_id, ban_type, ban_reason, ban_admin, ban_date, user_name) VALUES('%d', '%d', '%e', '%e', '%e', '%e')",
        
user_id, ban_type, ban_reason, admin_name, ban_date, user_name );
    
mysql_tquery( SQL, query );
        
    return (
true);
}
    
PAdm(ZUTA, porukica);
    
AC_Kick2( id );
    
SS[0][ssBanovi]++;
    
SacuvajStatistiku(0);
    return 
true;
} 



Re: Ban system [ MySQL ] - Calisthenics - 06.08.2018

Код:
user_id = cache_get_value_name_int( 0, "user_id", user_id );
This is wrong.

pawn Код:
if( user_id == PlayerInfo[ playerid ][ pSqlID ] )
This is redundant.


Re: Ban system [ MySQL ] - IdonTmiss - 06.08.2018

Quote:
Originally Posted by Calisthenics
Посмотреть сообщение
Код:
user_id = cache_get_value_name_int( 0, "user_id", user_id );
This is wrong.

pawn Код:
if( user_id == PlayerInfo[ playerid ][ pSqlID ] )
This is redundant.
Then what should I type instead of that?


Re: Ban system [ MySQL ] - IdonTmiss - 06.08.2018

a little bump?


Re: Ban system [ MySQL ] - Calisthenics - 07.08.2018

Remove the red text. Function passes by reference to user_id and then you return the value of cache_get_value_name_int which will be either 0 or 1 and bug it.

The if statement is redundant because you pass user_id onto WHERE clause in query. Unless you want to avoid race check collisions but this is not the way to do it.