| danielkza |
09-06-2008 15:34 |
Re: 'String formatted incorrectly'
Just and idea,instead of including the styles inline with the rows,you could use CSS. Two or three style lines woudl replace all the <left>,<font>,etc tags. Like this:
Code:
stock const Status_RowStart[] = "%s<tr class=^"%s^">"
stock const Status_RowEnd[] = "</tr>"
stock const Status_TableHead[] = "%s<th>%s</th>"
stock const Status_DataString[] = "%s<td>%s</td>"
stock const Status_DataInteger[] = "%s<td>%d</td>"
stock FormatTime(szTime[],iLen,iSeconds)
{
new iMinutes,iHours
iSeconds -= (iHours = iSeconds / 3600) * 3600
iSeconds -= (iMinutes = iSeconds / 60) * 60
formatex(szTime,iLen,"%d:%02d:%02d",iHours,iMinutes,iSeconds)
}
stock htmlspecialchars(szBuffer[],iLen)
{
replace_all(szBuffer,iLen,"&","&")
replace_all(szBuffer,iLen,"<","<")
replace_all(szBuffer,iLen,">",">")
replace_all(szBuffer,iLen,"^"",""")
}
#define STATUS_MAX_PLAYERS 4
public Status_Command(id,level,cid)
{
if(!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED
new iPlayerStart = 1
if(read_argc() >= 2)
{
new szPlayerStart[8]
read_argv(1,szPlayerStart,charsmax(szPlayerStart))
if(is_str_num(szPlayerStart))
iPlayerStart = str_to_num(szPlayerStart)
}
static szBuffer[2048],szTemp[256]
new iRowCount = 0
// ---------------- HTML Header ----------------------
copy( szBuffer,charsmax(szBuffer),"<!DOCTYPE html PUBLIC ^"-//W3C//DTD HTML 4.01//EN^" ^"http://www.w3.org/TR/html4/strict.dtd^">")
add( szBuffer,charsmax(szBuffer),"<html>")
add( szBuffer,charsmax(szBuffer),"<head><title>AMXX Player Status</title>")
add( szBuffer,charsmax(szBuffer),"<style type=^"text/css^">")
// ---------------- CSS Properties -------------------
add( szBuffer,charsmax(szBuffer),"body {margin:0px; padding:0px; background:black; color:#FFB000;}")
add( szBuffer,charsmax(szBuffer),"table,td,th {border-collapse:collapse; border-style:solid; border-width:1px; border-color:#FFB000;}")
add( szBuffer,charsmax(szBuffer),"tr.even {background: #805800;}")
// ---------------------------------------------------
add( szBuffer,charsmax(szBuffer),"</style></head>")
// ---------------------------------------------------
// ----------------- Table Start ---------------------
add( szBuffer,charsmax(szBuffer),"<body><table>")
// ------------------- Row Start ---------------------
format( szBuffer,charsmax(szBuffer),Status_RowStart,szBuffer,(++iRowCount % 2) ? "odd" : "even")
for(new i=0;i < sizeof(Status_Elements);i++)
format( szBuffer,charsmax(szBuffer),Status_TableHead,szBuffer,Status_Elements[i])
add( szBuffer,charsmax(szBuffer),Status_RowEnd)
// -------------------- Row End ----------------------
new iMaxPlayers = get_maxplayers(),iCount
new iPing,iLoss,Float:fTemp
for(new i=iPlayerStart;i <= iMaxPlayers;i++)
{
if(!is_user_connected(i))
continue
else if(++iCount > STATUS_MAX_PLAYERS)
break
format( szBuffer,charsmax(szBuffer),Status_RowStart, szBuffer,(++iRowCount % 2) ? "odd" : "even")
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,get_user_userid(i))
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,i)
get_user_name(i,szTemp,charsmax(szTemp))
htmlspecialchars(szTemp,charsmax(szTemp))
format( szBuffer,charsmax(szBuffer),Status_DataString, szBuffer,szTemp)
get_user_authid(i,szTemp,charsmax(szTemp))
format( szBuffer,charsmax(szBuffer),Status_DataString, szBuffer,szTemp)
get_user_ip(i,szTemp,charsmax(szTemp),1)
format( szBuffer,charsmax(szBuffer),Status_DataString, szBuffer,szTemp)
get_flags(get_user_flags(i),szTemp,charsmax(szTemp))
format( szBuffer,charsmax(szBuffer),Status_DataString, szBuffer,szTemp)
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,pev(i,pev_frags))
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,get_user_deaths(i))
pev(i,pev_health,fTemp)
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,floatround(fTemp))
pev(i,pev_armorvalue,fTemp)
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,floatround(fTemp))
get_user_ping(i,iPing,iLoss)
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,iPing)
format( szBuffer,charsmax(szBuffer),Status_DataInteger, szBuffer,iLoss)
get_user_team(i,szTemp,charsmax(szTemp))
format( szBuffer,charsmax(szBuffer),Status_DataString, szBuffer,szTemp)
FormatTime(szTemp,charsmax(szTemp),get_user_time(i))
format( szBuffer,charsmax(szBuffer),Status_DataString, szBuffer,szTemp)
add( szBuffer,charsmax(szBuffer),Status_RowEnd)
}
add( szBuffer,charsmax(szBuffer),"</table></body>")
// ------------------ Table End ---------------------
add( szBuffer,charsmax(szBuffer),"</html>")
// ----------------- Document End -------------------
new hFile = fopen("addons\motd.html","w")
if(hFile)
{
fputs(hFile,szBuffer)
fclose(hFile)
}
show_motd(id,szBuffer)
return PLUGIN_HANDLED
}
|