Собственно есть плагин sqlstats - он заносит в sql базу топ 15 с сервера.
Но писался он видимо для лицензии, а на крятнутых серверах стим id определяется как valive_id_p....
А в базе примари значение стоит authid нужно сделать так, чтоб он определял не по authid, а по нику -> (name)
Попробывал сам, но что то ни как не получается.
Quote
new g_tmpsv_lan = 0 // set to 1 to force logging by IP instead of STEAM_ID
не вариант - у нас много игроков с динамикой. Добавлено (2009-05-20, 12:16 Pm)
---------------------------------------------
я так понимаю надо тут:
Code
dbi_query(g_dbc, "CREATE TABLE IF NOT EXISTS `%s` (`authid` VARCHAR( 32 ) NOT NULL, `name` VARCHAR( 32 ) NOT NULL , `date` TIMESTAMP( 10 ) NOT NULL , `score` INT NOT NULL ,`kills` INT NOT NULL , `teamkills` INT NOT NULL, `deaths` INT NOT NULL , `hits` INT NOT NULL , `shots` INT NOT NULL , `headshots` INT NOT NULL , `efficiency` DOUBLE (19,2) DEFAULT NULL, `accuracy` double(19,2) default NULL,`accuracyHS` double(19,2) default NULL, PRIMARY KEY(`authid`))", g_sqlstats_table)
PRIMARY KEY(`authid`))" -> зменить на name и что то сделать вот тут:
Code
// gets the stats for a player
gets_user_stats(iPlayer)
{
new bad_id[5] = "hltv"
new bad_id2[18] = "VALVE_ID_LOOPBACK"
new sAuthid[MAX_NAME_LENGTH+1]
get_user_authid(iPlayer, sAuthid, MAX_NAME_LENGTH)
if ( is_user_connected(iPlayer) && contain( sAuthid, bad_id) == -1 && contain( sAuthid, bad_id2) == -1 )
{
//if we're on LAN save by IP, else save by steam_id
if ( g_tmpsv_lan == 1 )
get_user_ip(iPlayer, g_sPStatsIds[g_iMutationcount], MAX_NAME_LENGTH, 1)
else{
get_user_authid(iPlayer, g_sPStatsIds[g_iMutationcount], MAX_NAME_LENGTH)
}
get_user_name(iPlayer, g_sPStatsNames[g_iMutationcount], MAX_NAME_LENGTH)
get_user_stats( iPlayer, g_iStats, g_iBodyHits )
log_amx("[sqlStats] gets_user_stats %s, %s",g_sPStatsNames[g_iMutationcount], g_sPStatsIds[g_iMutationcount])
g_iPStats[g_iMutationcount][S_KILLS] = g_iStats[S_KILLS] // kills
g_iPStats[g_iMutationcount][S_DEATHS] = g_iStats[S_DEATHS] // deaths
g_iPStats[g_iMutationcount][S_HS] = g_iStats[S_HS] // headshots
g_iPStats[g_iMutationcount][S_TK] = g_iStats[S_TK] // teamkills
g_iPStats[g_iMutationcount][S_SHOTS] = g_iStats[S_SHOTS] // shots
g_iPStats[g_iMutationcount][S_HITS] = g_iStats[S_HITS] // hits
//g_iPStats[g_iMutationcount][S_TIME] = get_user_time(iPlayer) // playing time // dropped query lines are getting too big for the compiler
g_iPStats[g_iMutationcount][S_SCORE] = g_iStats[S_KILLS] - g_iStats[S_DEATHS] - g_iStats[S_TK]
//FIXME: maybe convert these into floats? now done in integers, db already works with floats (double(19,2))
g_iPStats[g_iMutationcount][S_EFF] = g_iStats[S_KILLS]*100 / (g_iStats[S_KILLS]+g_iStats[S_DEATHS])
g_iPStats[g_iMutationcount][S_ACC] = g_iStats[S_HITS]*100 / g_iStats[S_SHOTS]
g_iPStats[g_iMutationcount][S_ACCHS] = g_iStats[S_HS]*100 / g_iStats[S_SHOTS]
//one stats mutation added
if (g_iMutationcount < BUFFER_SIZE )
g_iMutationcount++
else
log_amx("[sqlStats] g_iMutationcount overflow, increase BUFFER_SIZE") // your server can be very busy <img rel="usm" src="http://amxmodx.ucoz.ru/Smiles/smile.gif" border="0" align="absmiddle" alt=":)">
}
}
Есть желающие помоч?