AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Problem saving data with fVault [SOLVED] (https://forums.alliedmods.net/showthread.php?t=96005)

anakin_cstrike 06-29-2009 17:31

Problem saving data with fVault [SOLVED]
 
I might be blind, but what's the mistake here? when i reconnect to the server it starts counting again from 0, not from the old value, so it doesn't save the time.

Code:
#include < amxmodx > #include < fvault > // - - - - - - - - new const gs_SayCommand[ ] = "say /timpjucat";
// - - - - - - - - new const gs_VaultName[ ] = "PlayedTime";
new gi_Time[ 33 ], gi_pTime[ 33 ] = { 0, ... };

public plugin_init ( ) { register_clcmd ( gs_SayCommand, "display_time" );
} public client_putinserver ( e_Index ) LoadTime ( e_Index );
public client_disconnect ( e_Index ) SaveTime ( e_Index );

public LoadTime ( e_Index ) { new s_Name[ 32 ], i_Value[ 16 ];
get_user_name ( e_Index, s_Name, 31 );

gi_Time[ e_Index ] =
( fvault_get_data ( gs_VaultName, s_Name, i_Value, charsmax ( i_Value ) ) ) ? str_to_num ( i_Value ) : 0;
} public SaveTime ( e_Index ) { new s_Name[ 32 ], i_Value[ 16 ];
get_user_name ( e_Index, s_Name, 31 );

num_to_str ( gi_Time[ e_Index ], i_Value, charsmax ( i_Value ) );
fvault_set_data ( gs_VaultName, s_Name, i_Value );
} public display_time ( e_Index ) { new i_Time = get_user_time ( e_Index, 1 );
gi_Time[ e_Index ] += ( i_Time - gi_pTime[ e_Index ] );
gi_pTime[ e_Index ] = i_Time;

SaveTime ( e_Index );
LoadTime ( e_Index );

new s_Buffer[ 128 ], i_Minutes, i_Hours;
if ( gi_Time[ e_Index ] < 60 ) formatex ( s_Buffer, charsmax ( s_Buffer ), "%d secunde", gi_Time[ e_Index ] );
else { if ( gi_Time[ e_Index ] >= 3600 ) { i_Hours = gi_Time[ e_Index ] / 3600;
i_Minutes = gi_Time[ e_Index ] % 3600;
} else i_Minutes = gi_Time[ e_Index ] / 60;

if ( i_Hours ) formatex ( s_Buffer, charsmax ( s_Buffer ), "%d ore", i_Hours );
if ( i_Minutes ) { ( s_Buffer[ 0 ] ) ? format ( s_Buffer, charsmax ( s_Buffer ), "%s si %d minut%s", s_Buffer, i_Minutes, ( i_Minutes == 1 ) ? "" : "e" ) : formatex ( s_Buffer, charsmax ( s_Buffer ), "%d minut%s", i_Minutes, ( i_Minutes == 1 ) ? "" : "e" );
} } new s_Buffer2[ 128 ];
if ( i_Time < 60 ) formatex ( s_Buffer2, charsmax ( s_Buffer2 ), "%d secund%s", i_Time, ( i_Time == 1 ) ? "a" : "e" );
else { i_Time /= 60;
formatex ( s_Buffer2, charsmax ( s_Buffer2 ), "%d minut%s", i_Time, ( i_Time == 1 ) ? "" : "e" );
} client_print ( e_Index, print_chat, "Esti pe server de %s", s_Buffer2 );
client_print ( e_Index, print_chat, "Timp total pe server: %s", s_Buffer );

return 0;
}

johnjg75 07-03-2009 10:28

Re: Problem saving data with fVault
 
Well you're saving it before it even loads the time under display_time(). So its going to keep saving zero since it hasn't loaded what the old time is yet. Put LoadTime() first.


All times are GMT -4. The time now is 15:28.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.