My original plan was to store the values within 1 cell since there are 4 bytes to work with. This is useful if you are storing multiple booleans or multiple small value numbers. Play time can get high so this approach would not be good because you would probably need 16 bits just for play time alone, leaving only 16 for the remainder of the values. Also, it could be confusing unless you are familiar with bit operations.
Instead here is something easier. For this you will need
nVault Utility
PHP Code:
#include <amxmodx>
#include <nvault_util>
new const Version[] = "0.1";
const MAXPLAYERS = 32;
const TASK_DELAY_PRINT = 34214;
enum _:PlayerStuff
{
Money,
Armor,
Credits,
PlayTime,
SteamID[ 32 ]
}
new psPlayerData[ MAXPLAYERS + 1 ][ PlayerStuff ];
new g_Vault;
public plugin_init()
{
register_plugin( "nVault Array Example" , Version , "bugsy" );
if ( ( g_Vault = nvault_open( "TestVault" ) ) == INVALID_HANDLE )
set_fail_state( "Error opening vault" );
}
public plugin_end()
{
nvault_close( g_Vault );
}
public client_authorized( id )
{
get_user_authid( id , psPlayerData[ id ][ SteamID ] , charsmax( psPlayerData[] ) );
LoadData( id );
}
public client_disconnect( id )
{
SaveData( id );
remove_task( id + TASK_DELAY_PRINT );
arrayset( psPlayerData[ id ] , 0 , sizeof( psPlayerData[] ) );
}
public SaveData( id )
{
//Test data
psPlayerData[ id ][ Money ] = 15333;
psPlayerData[ id ][ Armor ] = 100;
psPlayerData[ id ][ Credits ] = 23132123;
psPlayerData[ id ][ PlayTime ] = 664243;
nvault_set_array( g_Vault , psPlayerData[ id ][ SteamID ] , psPlayerData[ id ] , sizeof( psPlayerData[] ) );
}
public LoadData( id )
{
new iTimeStamp;
if ( nvault_get_array( g_Vault , psPlayerData[ id ][ SteamID ] , psPlayerData[ id ] , sizeof( psPlayerData[] ) , iTimeStamp ) )
{
set_task( 7.0 , "DelayPrint" , id + TASK_DELAY_PRINT );
}
}
public DelayPrint( id )
{
id -= TASK_DELAY_PRINT;
client_print( id , print_chat , "Data loaded: Money=%d Armor=%d Credits=%d PlayTime=%d SteamID=%s" , psPlayerData[ id ][ Money ] ,
psPlayerData[ id ][ Armor ] ,
psPlayerData[ id ][ Credits ] ,
psPlayerData[ id ][ PlayTime ] ,
psPlayerData[ id ][ SteamID ] );
}
__________________