View Single Post
Author Message
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 01-21-2020 , 14:33   ArrayPushArray return value bug?
Reply With Quote #1

ArrayPushArray returns wrong values. According to the documentation it's supposed to return the index of the new entry that we push into the array.

I'm using this code:
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;
}
Quote:
#3 g_szAuthId: HIDDEN | eData: HIDDEN | Index: 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.
__________________

Last edited by edon1337; 01-21-2020 at 14:57.
edon1337 is offline