I tried but I don't know how to check each item and stop the time which disconnect or when change to another purchased item.
PHP Code:
public client_connect( id )
{
g_CurrentWeaponID[ id ] = 0;
new szPlayerItems[ 64 ], szVaultData[ 3 ][ 32 ];
nvault_get( g_iVault, g_szSteamID[ id ], szPlayerItems, charsmax( szPlayerItems ) );
parse( szPlayerItems, szVaultData[ 0 ], charsmax( szVaultData[ ] ), szVaultData[ 1 ], charsmax( szVaultData[ ] ), szVaultData[ 2 ], charsmax( szVaultData[ ] ) )
if( str_to_num( szVaultData[ 2 ] ) )
{
formatex( szPlayerItems, charsmax( szPlayerItems ), "%i %i %i", g_PlayerItems[ id ], g_WeaponItems[ id ], get_systime( ) + ( str_to_num( szVaultData[ 2 ] ) * 60 ) )
nvault_set( g_iVault, g_szSteamID[ id ], szPlayerItems );
}
}
public client_disconnected( id )
{
new szPlayerItems[ 64 ], szVaultData[ 3 ][ 32 ];
nvault_get( g_iVault, g_szSteamID[ id ], szPlayerItems, charsmax( szPlayerItems ) );
parse( szPlayerItems, szVaultData[ 0 ], charsmax( szVaultData[ ] ), szVaultData[ 1 ], charsmax( szVaultData[ ] ), szVaultData[ 2 ], charsmax( szVaultData[ ] ) )
if( str_to_num( szVaultData[ 2 ] ) )
{
formatex( szPlayerItems, charsmax( szPlayerItems ), "%i %i %i", g_PlayerItems[ id ], g_WeaponItems[ id ], str_to_num( szVaultData[ 2 ] ) / 60 )
nvault_set( g_iVault, g_szSteamID[ id ], szPlayerItems );
}
}
@SkinsHandler( id, iMenu, iItem )
{
if( iItem != MENU_EXIT )
{
if( !is_user_alive( id ) )
{
client_print( id , print_chat , "You should be alive to buy this item" );
goto @Destroy;
}
if( get_user_team( id ) != 2 )
{
client_print( id , print_chat , "You should be human to buy this item" );
goto @Destroy;
}
static szData[ 10 ], iUnused, szPlayerItems[ 64 ], szVal[ 12 ], iTS;
menu_item_getinfo( iMenu, iItem, iUnused, szData, charsmax(szData), .callback = iUnused )
new iItemID = str_to_num( szData );
//nvault_lookup( g_iVault, g_szSteamID[ id ], szVal , charsmax( szVal ) , iTS )
new szVaultData[ 3 ][ 32 ]
nvault_get( g_iVault, g_szSteamID[ id ], szPlayerItems, charsmax( szPlayerItems ) );
parse( szPlayerItems, szVaultData[ 0 ], charsmax( szVaultData[ ] ), szVaultData[ 1 ], charsmax( szVaultData[ ] ), szVaultData[ 2 ], charsmax( szVaultData[ ] ) )
if( iItemID != str_to_num( szVaultData[ 0 ] ) )
{
formatex( szPlayerItems, charsmax( szPlayerItems ), "%i %i %i", g_PlayerItems[ id ], g_WeaponItems[ id ], str_to_num( szVaultData[ 2 ] ) > get_systime( ) ? str_to_num( szVaultData[ 2 ] ) - get_systime( ) : 0 )
nvault_set( g_iVault, g_szSteamID[ id ], szPlayerItems );
}
else
{
if( str_to_num( szVaultData[ 2 ] ) )
{
formatex( szPlayerItems, charsmax( szPlayerItems ), "%i %i %i", g_PlayerItems[ id ], g_WeaponItems[ id ], get_systime( ) + ( str_to_num( szVaultData[ 2 ] ) * 60 ) )
nvault_set( g_iVault, g_szSteamID[ id ], szPlayerItems );
}
}
if( !( g_PlayerItems[ id ] & ITEMS( iItemID ) ) && ( 0 < iTS < get_systime( ) ) )
{
if( cs_get_user_money( id ) < g_szSkinsData[ iItemID ][ Price ] )
{
goto @Destroy;
}
else
{
cs_set_user_money( id, cs_get_user_money( id ) - g_szSkinsData[ iItemID ][ Price ] )
}
}
if( g_szSkinsData[ iItemID ][ Skin ][ 0 ] != EOS )
{
cs_set_user_model( id, g_szSkinsData[ iItemID ][ Skin ] )
}
client_print( id , print_chat , "You were given skin ID %d", iItemID + 1 );
g_PlayerItems[ id ] |= ITEMS( iItemID );
formatex( szPlayerItems, charsmax( szPlayerItems ), "%i %i %i", g_PlayerItems[ id ], g_WeaponItems[ id ], get_systime( ) + 3600 )
nvault_set( g_iVault, g_szSteamID[ id ], szPlayerItems );
//nvault_touch( g_iVault , g_szSteamID[ id ] , get_systime() + 3600 ); // 1 hour
}
@Destroy:
menu_destroy( iMenu );
return PLUGIN_HANDLED;
}