You do not need to store both the name and IP in the vault data since the name is stored as the key, so you'll always have it. Try this:
An assumption is 1 ip per player name
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fvault>
#define PLUGIN "fvault test"
#define VERSION "1.0"
#define AUTHOR "Maniatico"
#define MAX_PLAYERS 32
#if AMXX_VERSION_NUM >= 190
#define client_disconnect client_disconnected
#endif
new g_szUserIP[ MAX_PLAYERS + 1 ][ 27 ];
new const Vault[] = "_ips";
public plugin_init()
{
register_plugin( PLUGIN , VERSION , AUTHOR );
register_clcmd( "amx_save_ip" , "SaveIP" , ADMIN_IMMUNITY );
}
public client_putinserver( id )
{
get_user_ip( id , g_szUserIP[ id ], charsmax( g_szUserIP[] ) , 1 );
set_task( 5.0 , "CheckVault" , id );
}
public client_disconnect( id )
{
remove_task( id );
}
public SaveIP( id )
{
new szIP[ 16 ] , szName[ 32 ];
if ( get_user_flags( id ) & ADMIN_IMMUNITY )
{
read_argv( 1 , szIP , charsmax( szIP ) );
//Ideally should use regex here to check for IP format
if ( szIP[ 0 ] == EOS || ( contain( szIP , ".") == -1 ) || ( strlen( szIP ) < 7 ) )
{
console_print( id , "Cant take that ip [%s]" , szIP );
}
else
{
get_user_name( id , szName , charsmax( szName ) );
fvault_set_data( Vault , szName , szIP );
console_print( id , "IP %s saved" , szIP );
}
}
return PLUGIN_HANDLED;
}
public CheckVault( id )
{
new szVaultIP[ 16 ] , szName[ 32 ];
get_user_name( id , szName , charsmax( szName ) );
if ( fvault_get_data( Vault , szName , szVaultIP , charsmax( szVaultIP ) ) && equal( szVaultIP , g_szUserIP[ id ] ) )
{
client_print( 0 , print_chat , "The user ip is saved in the file." );
}
else
{
client_print( 0 , print_chat , "The user ip is not saved in the file." );
}
}
__________________