Ok, thanks all for the info, look what I did, now on client_connect I load the TimePlayed:
PHP Code:
public client_connect(id){
loadPlayerTimePlayed(id);
}
public loadPlayerTimePlayed(id)
{
new Name[64], szTemp[512]
get_user_name(id, Name, 63);
new Data[1]
Data[0] = id
format(szTemp,charsmax(szTemp),"SELECT * FROM `TimePlayed` WHERE (`TimePlayed`.`Nickname` = '%s')", Name);
SQL_ThreadQuery(gTuple,"handleLoadData",szTemp,Data,1)
}
public handleLoadData(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Load Query failed. [%d] %s", Errcode, Error)
}
new id
id = Data[0]
if(SQL_NumResults(Query) < 1)
{
new Name[64], szTemp[512];
get_user_name(id, Name, 63);
format(szTemp,charsmax(szTemp),"INSERT INTO `TimePlayed` ( `Nickname` , `TimePlayed`) VALUES ('%s','0');",Name)
SQL_ThreadQuery(gTuple,"IgnoreHandle",szTemp)
}
else
{
TimePlayed[id] = SQL_ReadResult(Query, 1)
}
return PLUGIN_HANDLED;
}
And I save the Timeplayed using a big query every minute, when the time is updating:
PHP Code:
public plugin_init(){
set_task(15.0,"AddTimePlayed",0,"",0,"b",0)
}
public AddTimePlayed(id){
for(new i = 0; i <= 32; i++){
if(!is_user_bot(i) && is_user_connected(i)){
TimePlayed[i]++;
}
}
UpdateAllPlayers();
}
public UpdateAllPlayers()
{
new buffer[2048], len, players[ 32 ], Name[64], pnum
get_players( players, pnum )
len = formatex(buffer, 2047, "UPDATE TimePlayed \
SET TimePlayed = ( case " )
if( pnum <= 1 )
return PLUGIN_HANDLED
for( new i = 1; i <= pnum; i++ )
{
//if( !is_user_connected( i ) ) continue
get_user_name(i, Name, 63);
if( TimePlayed[ i ] != 0 )
{
len += formatex( buffer[len], 2047-len, "when Nickname='%s' then '%d'", Name, TimePlayed[i] )
}
}
len += formatex( buffer[len], 2047-len, " end )");
SQL_ThreadQuery( gTuple, "IgnoreHandle", buffer )
log_amx(buffer);
return PLUGIN_HANDLED
}
I hope it works now , I'll come back with details if it actually works.