It would be better to provide your constants\vars\enums, since I didn't have these I created dummies.
PHP Code:
#include <amxmodx>
#include <nvault>
enum MaxRaces
{
None,
a,
b,
c,
d
}
new PlayerLevel[ 33 ][ MaxRaces ];
new PlayerXP[ 33 ][ MaxRaces ];
new PlayerPoints[ 33 ][ MaxRaces ];
new Nvault;
const MaxNumberLen = 5;
public plugin_init()
{
register_plugin( "Test" , "0.1" , "bugsy" );
Nvault = nvault_open( "blah" );
register_clcmd( "say test" , "TestData" );
register_clcmd( "say save" , "SaveData" );
register_clcmd( "say load" , "LoadData" );
register_clcmd( "say show" , "ShowData" );
}
public plugin_end()
{
nvault_close( Nvault );
}
public TestData( id )
{
for ( new MaxRaces:i = MaxRaces:1 ; i < MaxRaces ; i++ )
{
PlayerLevel[ id ][ i ] = random_num( 1 , 1000 );
PlayerXP[ id ][ i ] = random_num( 1001 , 2000 );
PlayerPoints[ id ][ i ] = random_num( 2001 , 3000 );
}
}
public ShowData( id )
{
client_print( id , print_chat , "%d %d %d / %d %d %d / %d %d %d / %d %d %d" ,
PlayerLevel[ id ][ a ],
PlayerXP[ id ][ a ],
PlayerPoints[ id ][ a ],
PlayerLevel[ id ][ b ],
PlayerXP[ id ][ b ],
PlayerPoints[ id ][ b ],
PlayerLevel[ id ][ c ],
PlayerXP[ id ][ c ],
PlayerPoints[ id ][ c ],
PlayerLevel[ id ][ d ],
PlayerXP[ id ][ d ],
PlayerPoints[ id ][ d ] );
}
public SaveData( id )
{
new szKey[ 32 ] , szData[ ( ( MaxNumberLen * 3 ) * _:MaxRaces ) + 1 ] , iLen , iPos;
iLen = get_user_ip( id , szKey, charsmax( szKey ) );
copy( szKey[ iLen ] , charsmax( szKey ) - iLen , "-xWar" );
for ( new MaxRaces:RaceID = MaxRaces:1 ; RaceID < MaxRaces ; RaceID++)
{
iPos += formatex( szData[ iPos ] , charsmax( szData ) - iPos - 3 , "%05d %05d %05d ", PlayerLevel[id][RaceID], PlayerXP[id][RaceID], PlayerPoints[id][RaceID])
server_print( szData );
}
nvault_set( Nvault , szKey , szData );
}
public LoadData(id)
{
new szKey[ 32 ] , szData[ ( ( MaxNumberLen * 3 ) * _:MaxRaces ) + 1 ] , iLen;
new Level[ MaxNumberLen + 1 ] , XP[ MaxNumberLen + 1 ] , Points[ MaxNumberLen + 1 ];
iLen = get_user_ip( id , szKey, charsmax( szKey ) );
copy( szKey[ iLen ] , charsmax( szKey ) - iLen , "-xWar" );
nvault_get( Nvault , szKey , szData , charsmax( szData ) );
for ( new MaxRaces:RaceID = MaxRaces:1 ; RaceID < MaxRaces ; RaceID++ )
{
parse( szData[ ( _:RaceID - 1 ) * ( 3 * ( MaxNumberLen + 1 ) ) ] , Level , charsmax( Level ) , XP , charsmax( XP ), Points , charsmax( Points ) );
PlayerLevel[id][RaceID] = str_to_num( Level );
PlayerXP[id][RaceID] = str_to_num( XP );
PlayerPoints[id][RaceID] = str_to_num( Points );
}
}