well i changed method to hlev's suggestion, to send big query...so big query is sent every 5 seconds (loop) with updating kills+deaths for every connected player...client_disconnect is (still) updating only one column for last_join (before plugin_end)...result: no duplicated rows for now (400 players in new table)...i guess thats it
code for that big query if anyone would use, again, thanks to hlev for the suggestion:
Code:
public update_big_query()
{
new buffer[2048], len, players[ 32 ], pnum
get_players( players, pnum, "chi" )
len = formatex(buffer, 2047, "UPDATE TABLE_NAME \
SET kills = ( case " )
if( pnum <= 1 )
return PLUGIN_HANDLED
for( new i = 0; i <= pnum; i++ )
{
if( !is_user_connected( players[ i ] ) ) continue
if( g_iPlayerKills[ players[ i ] ] != 0 )
{
len += formatex( buffer[len], 2047-len, "when id=%d then '%d'", g_iPlayerID[ players[ i ] ], g_iPlayerKills[ players[ i ] ] )
}
}
len += formatex( buffer[len], 2047-len, " end ), deaths = ( case " )
for( new i = 0; i <= pnum; i++ )
{
if( !is_user_connected( players[ i ] ) ) continue
len += formatex( buffer[len], 2047-len, "when id=%d then '%d'", g_iPlayerID[ players[ i ] ], g_iPlayerDeaths[ players[ i ] ] )
}
len += formatex( buffer[len], 2047-len, " end ) WHERE id in ( " )
for( new i = 0; i <= pnum; i++ )
{
if( !is_user_connected( players[ i ] ) ) continue
if( g_iPlayerKills[ players[ i ] ] != 0 )
len += formatex( buffer[len], 2047-len, "%s%d", i > 1 ? ", ":"", g_iPlayerID[ players[ i ] ] )
}
len += formatex( buffer[len], 2047-len, " )" )
if( !disconnect )
SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", buffer )
//client_print( 0, print_console, "%s", buffer )
return PLUGIN_HANDLED
}
__________________