ArrayPushArray returns wrong values. According to the
it's supposed to return the index of the new entry that we push into the array.
Code:
public myFunction()
{
new iIndex = ArrayPushArray( g_aBans, eData );
BanPlayer( g_szName[ iPlayer ], g_szAuthId[ iPlayer ], g_szIp[ iPlayer ], szExpireDate, szReason, g_szName[ id ] );
if( is_user_connected( iPlayer ) )
{
ScreenShot( iPlayer );
KickPlayerOut( iPlayer, iIndex );
}
return PLUGIN_HANDLED;
}
public KickPlayerOut( const id, const iIndex )
{
if( get_user_flags( id ) & g_iConfig[ IMMUNITY_FLAG ] )
{
return PLUGIN_HANDLED;
}
else
{
new eData[ PlayerBan ];
ArrayGetArray( g_aBans, iIndex, eData );
log_to_file( "bans.txt", "#3 g_szAuthId: %s | eData: %s | Index: %d", g_szAuthId[ id ], eData[ Player_SteamId ], iIndex );
if( equal( g_szAuthId[ id ], eData[ Player_SteamId ] ) || equal( g_szIp[ id ], eData[ Player_IP ] ) )
{
if( ! HasDatePassed( eData[ Player_BanExpire ] ) || equali( eData[ Player_BanExpire ], "never" ) )
{
if( equali( eData[ Player_BanExpire ], "never" ) )
{
send_message( id, CONSOLE, false, "^n************************************************" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BANNED" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_EXPIRE_NEVER" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_REASON", eData[ Player_BanReason ] );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BY", eData[ Player_BannedBy ] );
send_message( id, CONSOLE, false, "************************************************" );
}
else
{
send_message( id, CONSOLE, false, "^n************************************************" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BANNED" );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_EXPIRE", eData[ Player_BanExpire ] );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_REASON", eData[ Player_BanReason ] );
send_message( id, CONSOLE, false, "%L", id, "BAN_INFO_BY", eData[ Player_BannedBy ] );
send_message( id, CONSOLE, false, "************************************************" );
}
server_cmd( "kick #%d %L", get_user_userid( id ), id, "CHECK_CONSOLE_INFO" );
}
}
}
return PLUGIN_HANDLED;
}
BanPlayer( const szName[ ], const szSteamId[ ], const szIP[ ], const szExpireDate[ ], const szReason[ ], const szBannedBy[ ] )
{
new szFormat[ 128 ];
formatex( szFormat, charsmax( szFormat ), "%s/%s", g_szConfigsDir, g_iConfig[ BANS_FILE ] );
new iFilePointer = fopen( szFormat, "r+" );
if( iFilePointer )
{
new szByteVal[ 1 ];
fseek( iFilePointer , -1 , SEEK_END );
fread_raw( iFilePointer , szByteVal , sizeof( szByteVal ) , BLOCK_BYTE );
fseek( iFilePointer , 0 , SEEK_END );
fprintf( iFilePointer, "%s^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", ( szByteVal[ 0 ] == 10 ) ? "" : "^n", szName, szSteamId, szIP, szExpireDate, szReason, szBannedBy ); // add him to banlist
fclose( iFilePointer );
}
return 1;
}
OK my array size might be 1, fine, but no. I added a command to check the size of g_aBans, and it shows 37.