Ниже кусок из ps3stats
Задача была сделать красивый читаемый топ (не <pre> а html)
Уперся в то что код обрезается примерно на середине 7го игрока при том что лимит в запросе - топ 15.
Поставил MAX_BUFFER_LENGTH 4095 (в исходном был 2048) и получил ошибку типа Function table><tr> not found (т.е. тупое переполнение буффера в AMXX). Далее накопал инфу что нельзя ставить больше 3072. Поставил. Все равно обрезает на середине 7го игрока.
Как сделать то что я хочу?
Код
public PrintTop15Data(Handle:query, id)
{
new iRank
new sName[32]
new rowcolor[8]
new rowcolori
new iKills, iDeaths, iHits, iShots, iHeadshotkills
new Float:fSkill, Float:fAccuracy, Float:fOnlinetime
new iLen = 0
new sBuffer[MAX_BUFFER_LENGTH + 1]
debug_sql_thread(query)
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body style='margin:0px;' bgcolor=#eeeeee><font color=#FFB000><table border=0 cellpadding=2 cellspacing=0 style='font-size:x-small;'>")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<tr bgcolor=#ffffff><td>#</td><td>NICK</td><td>KILLS</td><td>DEATHS</td><td>HITS</td><td>SHOTS</td><td>HS</td><td>SKILL</td><td>ACC</td><td>ONLINE</td></tr>^n")
rowcolori=1
while ((SQL_MoreResults(query)) && (MAX_BUFFER_LENGTH - iLen > 0))
{
iRank = SQL_ReadResult(query, 0)
SQL_ReadResult(query, 1, sName, 31)
iKills = SQL_ReadResult(query, 2)
iDeaths = SQL_ReadResult(query, 3)
iHits = SQL_ReadResult(query, 4)
iShots = SQL_ReadResult(query, 5)
iHeadshotkills = SQL_ReadResult(query, 6)
SQL_ReadResult(query, 7, fSkill)
SQL_ReadResult(query, 8, fAccuracy)
SQL_ReadResult(query, 9, fOnlinetime)
if (rowcolori==1)
{
rowcolor="#FFFFAA"
rowcolori=2
} else
{
rowcolori=1
rowcolor="#FFAAFF"
}
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<tr bgColor=%s><td>%2d</td><td>%-22.22s</td><td>%6d</td><td>%6d</td><td>%6d</td><td>%6d</td><td>%4d</td><td>%3.0f%</td><td>%3.0f%%</td><td>%3.0fh</td></tr>^n", rowcolor, iRank, sName, iKills,
iDeaths, iHits, iShots, iHeadshotkills, fSkill, fAccuracy, fOnlinetime)
SQL_NextRow(query)
}
show_motd(id, sBuffer, "Top 15")
#if defined PSDEBUG
log_amx(sBuffer)
#endif
}
Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.