Retrieving total playtime since registration! [MySQL]
#1

Hey Guys,

I was wondering how you can record the total playtime of a player since registration. Like in hours, minutes and seconds. I would also like to add it to my MySQL database, but I'm not sure how to get the playtime since the player registered (made an account) on the server! Please help,

Thanks
Reply
#2

Do you have any code related to this or?

Код:
SetTimerEx("TimeOnServer", 1000, 1, "i", playerid);

forward TimeOnServer(playerid);
public TimeOnServer(playerid)
{
PlayerInfo[playerid][Sec] ++;
if(PlayerInfo[playerid][Sec]>=60)
    {
        PlayerInfo[playerid][Min]++;
        PlayerInfo[playerid][Sec]=0;
    }
if(PlayerInfo[playerid][Min]>=60)
    {
        PlayerInfo[playerid][Min]=0;
        PlayerInfo[playerid][Hour]++;
    }
}
//and that's all you need to have a timer with [hours,mins,sec]

//This is to save it
INI_WriteInt(Acc,"Min",PlayerInfo[playerid][Min]);
INI_WriteInt(Acc,"Hour",PlayerInfo[playerid][Hour]);
INI_WriteInt(Acc,"Sec",PlayerInfo[playerid][Sec]);

//To load it
PlayerInfo[playerid][Min] = GetPVarInt(playerid, "Min");
PlayerInfo[playerid][Hour] = GetPVarInt(playerid, "Hour");
PlayerInfo[playerid][Sec] = GetPVarInt(playerid, "Sec");
Just exchange that INI into the SQL or w/e. I never worked with SQL


Just add the save variables under the OnPlayerSpawn, that's why if you have for example "Force registration" system.
Basically if you have dialogs etc. and player must register, he wont be able to spawn unless he is registered
Reply
#3

I get:

Код:
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\LOSSAN~1\GAMEMO~1\MySQL.pwn(357) : error 017: undefined symbol "PlayerInfo"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\LOSSAN~1\GAMEMO~1\MySQL.pwn(357) : warning 215: expression has no effect
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\LOSSAN~1\GAMEMO~1\MySQL.pwn(357) : error 001: expected token: ";", but found "]"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\LOSSAN~1\GAMEMO~1\MySQL.pwn(357) : error 029: invalid expression, assumed zero
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\LOSSAN~1\GAMEMO~1\MySQL.pwn(357) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.
here

pawn Код:
public TimeOnServer(playerid)
{
    pInfo[playerid][Seconds] ++;
    if(pInfo[playerid][Seconds] >=60)
    {
        pInfo[playerid][Minutes]++;
        pInfo[playerid][Seconds] =0;
    }
    if(PlayerInfo[playerid][Minutes] >=60)
    {
        pInfo[playerid][Minutes] =0;
        pInfo[playerid][Hours]++;
    }
}
plz help
Reply
#4

I would use minutes not seconds. You don't really want to be saving many things once a second, every second. Do it once a minute.
Reply
#5

Regarding the pInfo
Код:
enum pInfo
{
    pWarns
}
new PlayerInfo[MAX_PLAYERS][pInfo];
//Add on the top of the script
Reply
#6

Quote:
Originally Posted by Squirrel
Посмотреть сообщение
Regarding the pInfo
Код:
enum pInfo
{
    pWarns
}
new PlayerInfo[MAX_PLAYERS][pInfo];
//Add on the top of the script
Copy pasting much :P

it should be like this

pawn Код:
enum pInfo
{
    Sec
    Min
    Hour
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Reply
#7

Quote:
Originally Posted by pds2012
Посмотреть сообщение
Copy pasting much :P

it should be like this

pawn Код:
enum pInfo
{
Sec
Min
Hour
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Ok, alright. But what is the value. VARCHAR, INT, DATE? And the size (To add to MySQL)
Reply
#8

lmao I mixed the threads, I am trying to help other dude with pWarns. Yeah add the code he pasted.
Reply
#9

Min= INT(11)
Sec = INT(11)
Hour = INT(11)
Reply
#10

You don't even need all those variables and timers. The only thing you need is one (1) field in your table. Save the registration timestamp in there by means of the UNIX_TIMESTAMP() functionality. This is a value that measures the seconds elapsed since the epoch on 1/1/1970.

Whenever you want to retrieve the time played, subtract the saved timestamp from the current timestamp. This will give you a value in seconds. Use an algorithm to convert it to minutes and hours.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)