[Pedido] Salvar hora && minuto && segundos
#1

Meu sistema de salvamento de dados й em SQLite e funfa tranquilo, porйm ele salva o horбrio enquanto o player estб ON e quando desconecta fica salvo tbm, porйm quando loga reseta o horбrio e comeзa de novo como se fosse apenas um Timer InGame!
Alguйm poderia me fornecer um tutorial de salvamento de horario?
Reply
#2

qual cуdigo vocк usa para salvar ? e qual para carregar os dados ?
Reply
#3

Eu uso a include do Gammix's (easydb.inc)

para salvar
PHP код:
stock SaveData(playerid)
{
    new 
key DB::RetrieveKey(gGlobal[TKT_UserTable], "username"tkPlayerName(playerid));
    if(
key != DB_INVALID_KEY)
    {
        if(
GetPVarInt(playerid"TKAdmin_Loggedin") != PLAYER_VARTYPE_NONE)
        {
            new 
DATE[18], date[3];
            
getdate(date[0], date[1], date[2]);
            
format(DATEsizeof(DATE), "%i/%i/%i"date[2], date[1], date[0]);
            
GetPlayerConnectedTime(playeridtkUSER[playerid][TKU_Hours], tkUSER[playerid][TKU_Minutes], tkUSER[playerid][TKU_Seconds]);
            
DB::SetStringEntry(gGlobal[TKT_UserTable],key,         "laston",         DATE);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "kicked",         tkUSER[playerid][TKU_Kicked]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "jailed",         tkUSER[playerid][TKU_Jailed]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "jailtime",     tkUSER[playerid][TKU_JailedTime]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "muted",         tkUSER[playerid][TKU_Muted]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "mutetime",     tkUSER[playerid][TKU_MutedTime]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "cmuted",         tkUSER[playerid][TKU_CMuted]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "cmutetime",     tkUSER[playerid][TKU_CMuteTime]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "cash",         tkUSER[playerid][TKU_Cash]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "level",         tkUSER[playerid][TKU_pLevel]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "kills",         tkUSER[playerid][TKU_Kills]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "deaths",         tkUSER[playerid][TKU_Deaths]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "score",         GetPlayerScore(playerid));
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "money",         GetPlayerMoney(playerid));
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "hours",         tkUSER[playerid][TKU_Hours]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "minutes",         tkUSER[playerid][TKU_Minutes]);
            
DB::SetIntEntry(gGlobal[TKT_UserTable], key,         "seconds",         tkUSER[playerid][TKU_Seconds]);
        
        }
    }
    return 
1;

para carregar
PHP код:
new key DB::RetrieveKey(gGlobal[TKT_UserTable], "username"tkPlayerName(playerid));
            new 
hash[65];
            
DB::Hash(hashsizeof(hash), inputtext);
            new 
password[128];
            
            
DB::GetStringEntry(gGlobal[TKT_UserTable], key"password"password);
            if(! 
strcmp(hashpassword))
            {
                
tkUSER[playerid][TKU_Kicked] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"kicked");
                
tkUSER[playerid][TKU_Admin] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"admin");
                
tkUSER[playerid][TKU_VIP] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"vip");
                
tkUSER[playerid][TKU_Kills] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"kills");
                
tkUSER[playerid][TKU_Deaths] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"deaths");
                
tkUSER[playerid][TKU_Score] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"score");
                
tkUSER[playerid][TKU_Money] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"money");
                
tkUSER[playerid][TKU_Hours] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"hours");
                
tkUSER[playerid][TKU_Minutes] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"minutes");
                
tkUSER[playerid][TKU_Seconds] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"seconds");
                
tkUSER[playerid][TKU_Jailed] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"jailed");
                
tkUSER[playerid][TKU_pLevel] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"level");
                
tkUSER[playerid][TKU_JailedTime] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"jailtime");
                
tkUSER[playerid][TKU_Muted] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"muted");
                
tkUSER[playerid][TKU_MutedTime] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"mutetime");
                
tkUSER[playerid][TKU_CMuted] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"cmuted");
                
tkUSER[playerid][TKU_CMuteTime] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"cmutetime");
                
tkUSER[playerid][TKU_Cash] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"cash"); 
conversor
PHP код:
stock GetPlayerConnectedTime(playerid, &hours, &minutes, &seconds)
{
    new 
connected_time NetStats_GetConnectedTime(playerid);
    
seconds = (connected_time 1000) % 60;
    
minutes = (connected_time / (1000 60)) % 60;
    
hours = (connected_time / (1000 60 60));
    return 
true;

Reply
#4

e para carregar a data para enviar ao player ?
Reply
#5

Quote:
Originally Posted by Coringa_Vilao
Посмотреть сообщение
e para carregar a data para enviar ao player ?
Na dialog de Login, ele realmente carrega tudo... Nivel admin, senha e talz, mas reseta o TIME
Reply
#6

se vocк estб querendo fazer um ultimo login , vocк pode salvar tudo em string no SQL e depois ao carregar no servidor vocк usa uma variбvel e faz mais ou menos assim:

PHP код:
new string[128];
format(stringsizeof(string), "Seu Ъltimo LOGIN Foi Dia: %s"UltimoLogin[playerid]);
SendClientMessage(playerid, -1string); 
Reply
#7

Cara, boa ideia, vou testar e ja te retorno...

@EDIT

Funcionou o salvamento normal, porйm ainda reseta, deixa queto...
Reply
#8

nгo sei como vocк salva, porque nгo sei mexer em SQL, entгo vocк faz assim "EXEMPLO":

PHP код:
new UltimoLogin[MAX_PLAYERS];
forward DataSalva(playerid);
public 
OnPlayerDisconnect(playerid){
    
DataSalva(playerid);
    return 
1;
}
public 
DataSalva(playerid){
    new 
Query[128], string2[128], horaminutoanomesdia;
    
gettime(horaminuto);
    
getdate(anomesdia);
    
format(string2sizeof(string2), "%d/%d/%d - %d:%dhrs"diamesanohoraminuto);
    
format(Querysizeof(Query), "UPDATE `Usuarios` SET UltimoLogin = `%s`"string2);
    
db_query(ContasQuery);
    return 
1;
}
public 
Inicio(playerid){
    new 
string[128];
    
format(stringsizeof(string), "Seu Ъltimo LOGIN Foi Dia: %s"UltimoLogin[playerid]);
    
SendClientMessage(playerid, -1string);
    return 
1;
}
public 
OnPlayerRequestSpawn(playerid){
    
Inicio(playerid);
    return 
1;

acho que vai ficar mais ou menos assim !
Reply
#9

Esse meu sistema aki deve ta uma bost@, Obrigado pela ajuda mas deixa queto... +REP pelo suporte
Reply
#10

Tente utilizar dessa forma, nгo testei. Talvez funcione.

PHP код:
new TempoOnline[MAX_PLAYERS], TempoTotalOnline[MAX_PLAYERS]; 
public 
OnPlayerConnect(playerid

    new 
str[30], 
        
key DB::RetrieveKey(gGlobal[TKT_UserTable], "username"tkPlayerName(playerid)); 
     
    
TempoTotalOnline[playerid] = DB::GetIntEntry(gGlobal[TKT_UserTable], key"tempo_online"); 
    new 
hora = (TempoTotalOnline[playerid] / (60 60)),  
        
minuto = (TempoTotalOnline[playerid] / 60) % 60,  
        
segundo TempoTotalOnline[playerid] % 60,
    
format(str30"%d:%d:%dhrs"horaminutosegundo); 
    
SendClientMessage(playerid, -1str); 
    
TempoOnline[playerid] = gettime(); 
    return 
1

public 
OnPlayerDisconnect(playerid

    new 
key DB::RetrieveKey(gGlobal[TKT_UserTable], "username"tkPlayerName(playerid)); 
    
DB::SetIntEntry(gGlobal[TKT_UserTable], key"tempo_online", (gettime() - TempoOnline[playerid]) + TempoTotalOnline[playerid]);  
    return 
1

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)