Code:
#include < celltrie >
enum eData
{
iInteger,
Float: fFloat,
szString[ 256 ]
}
new Trie: g_tPlayerVars
new g_szKey[ 20 ], g_Data[ eData ]
stock PVar_TrieIinit( )
{
g_tPlayerVars = TrieCreate( )
}
stock PVar_TrieDestroy( )
{
TrieDestroy( g_tPlayerVars )
}
stock SetPVarString( id, const szInput[ ] )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
copy( g_Data[ szString ], charsmax( g_Data ), szInput )
TrieSetArray( g_tPlayerVars, g_szKey, g_Data, sizeof g_Data )
}
stock SetPVarInteger( id, iInput )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
g_Data[ iInteger ] = iInput
TrieSetArray( g_tPlayerVars, g_szKey, g_Data, sizeof g_Data )
}
stock SetPVarFloat( id, Float: fInput )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
g_Data[ fFloat ] = _:fInput
TrieSetArray( g_tPlayerVars, g_szKey, g_Data, sizeof g_Data )
}
stock GetPVarString( id, szOutPut[ ], iSize )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
if( TrieKeyExists( g_tPlayerVars, g_szKey ) )
{
TrieGetArray( g_tPlayerVars, g_szKey, g_Data, sizeof g_Data )
copy( szOutPut, iSize, g_Data[ szString ] )
}
}
stock GetPVarInteger( id )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
if( TrieKeyExists( g_tPlayerVars, g_szKey ) )
{
TrieGetArray( g_tPlayerVars, g_szKey, g_Data, sizeof g_Data )
return g_Data[ iInteger ]
}
return 0
}
stock Float: GetPVarFloat( id )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
if( TrieKeyExists( g_tPlayerVars, g_szKey ) )
{
TrieGetArray( g_tPlayerVars, g_szKey, g_Data, sizeof g_Data )
return g_Data[ fFloat ]
}
return 0.0
}
stock DeletePVar( id )
{
GetKey( id, g_szKey, charsmax( g_szKey ) )
if( TrieKeyExists( g_tPlayerVars, g_szKey ) )
{
TrieDeleteKey( g_tPlayerVars, g_szKey )
}
}
stock DeleteAllPVars( )
{
new iPlayers[ 32 ], iNum, id
get_players( iPlayers, iNum )
for( new i; i < iNum; i++ )
{
id = iPlayers[ i ]
DeletePVar( id )
}
}
stock GetKey( id, szOutPut[ ], iSize )
{
num_to_str( id, szOutPut, iSize )
}