From d309df4ce4d8ad0ed995a8e1c4267412a7782021 Mon Sep 17 00:00:00 2001 From: xolatile Date: Mon, 4 Aug 2025 22:53:42 +0200 Subject: Bunch of small changes... --- src/fpsgame/extinfo.h | 274 +++++++++++++++++++++++++------------------------- 1 file changed, 137 insertions(+), 137 deletions(-) (limited to 'src/fpsgame/extinfo.h') diff --git a/src/fpsgame/extinfo.h b/src/fpsgame/extinfo.h index b1f4119..059ee27 100644 --- a/src/fpsgame/extinfo.h +++ b/src/fpsgame/extinfo.h @@ -1,143 +1,143 @@ -#define EXT_ACK -1 -#define EXT_VERSION 105 -#define EXT_NO_ERROR 0 -#define EXT_ERROR 1 -#define EXT_PLAYERSTATS_RESP_IDS -10 -#define EXT_PLAYERSTATS_RESP_STATS -11 -#define EXT_UPTIME 0 -#define EXT_PLAYERSTATS 1 -#define EXT_TEAMSCORE 2 +#define EXT_ACK -1 +#define EXT_VERSION 105 +#define EXT_NO_ERROR 0 +#define EXT_ERROR 1 +#define EXT_PLAYERSTATS_RESP_IDS -10 +#define EXT_PLAYERSTATS_RESP_STATS -11 +#define EXT_UPTIME 0 +#define EXT_PLAYERSTATS 1 +#define EXT_TEAMSCORE 2 /* - Client: - ----- - A: 0 EXT_UPTIME - B: 0 EXT_PLAYERSTATS cn #a client number or -1 for all players# - C: 0 EXT_TEAMSCORE - - Server: - -------- - A: 0 EXT_UPTIME EXT_ACK EXT_VERSION uptime #in seconds# - B: 0 EXT_PLAYERSTATS cn #send by client# EXT_ACK EXT_VERSION 0 or 1 #error, if cn was > -1 and client does not exist# ... - EXT_PLAYERSTATS_RESP_IDS pid(s) #1 packet# - EXT_PLAYERSTATS_RESP_STATS pid playerdata #1 packet for each player# - C: 0 EXT_TEAMSCORE EXT_ACK EXT_VERSION 0 or 1 #error, no teammode# remaining_time gamemode loop(teamdata [numbases bases] or -1) - - Errors: - -------------- - B:C:default: 0 command EXT_ACK EXT_VERSION EXT_ERROR + Client: + ----- + A: 0 EXT_UPTIME + B: 0 EXT_PLAYERSTATS cn #a client number or -1 for all players# + C: 0 EXT_TEAMSCORE + + Server: + -------- + A: 0 EXT_UPTIME EXT_ACK EXT_VERSION uptime #in seconds# + B: 0 EXT_PLAYERSTATS cn #send by client# EXT_ACK EXT_VERSION 0 or 1 #error, if cn was > -1 and client does not exist# ... + EXT_PLAYERSTATS_RESP_IDS pid(s) #1 packet# + EXT_PLAYERSTATS_RESP_STATS pid playerdata #1 packet for each player# + C: 0 EXT_TEAMSCORE EXT_ACK EXT_VERSION 0 or 1 #error, no teammode# remaining_time gamemode loop(teamdata [numbases bases] or -1) + + Errors: + -------------- + B:C:default: 0 command EXT_ACK EXT_VERSION EXT_ERROR */ - VAR(extinfoip, 0, 0, 1); - - void extinfoplayer(ucharbuf &p, clientinfo *ci) - { - ucharbuf q = p; - putint(q, EXT_PLAYERSTATS_RESP_STATS); // send player stats following - putint(q, ci->clientnum); //add player id - putint(q, ci->ping); - sendstring(ci->name, q); - sendstring(ci->team, q); - putint(q, ci->state.frags); - putint(q, ci->state.flags); - putint(q, ci->state.deaths); - putint(q, ci->state.teamkills); - putint(q, ci->state.damage*100/max(ci->state.shotdamage,1)); - putint(q, ci->state.health); - putint(q, ci->state.armour); - putint(q, ci->state.gunselect); - putint(q, ci->privilege); - putint(q, ci->state.state); - uint ip = extinfoip ? getclientip(ci->clientnum) : 0; - q.put((uchar*)&ip, 3); - sendserverinforeply(q); - } - - static inline void extinfoteamscore(ucharbuf &p, const char *team, int score) - { - sendstring(team, p); - putint(p, score); - putint(p,-1); //no bases follow - } - - void extinfoteams(ucharbuf &p) - { - putint(p, m_teammode ? 0 : 1); - putint(p, gamemode); - putint(p, max((gamelimit - gamemillis)/1000, 0)); - if(!m_teammode) return; - - vector scores; - loopv(clients) - { - clientinfo *ci = clients[i]; - if(ci->state.state!=CS_SPECTATOR && ci->team[0] && scores.htfind(ci->team) < 0) - { - teaminfo *ti = teaminfos.access(ci->team); - scores.add(teamscore(ci->team, ti ? ti->frags : 0)); - } - } - loopv(scores) extinfoteamscore(p, scores[i].team, scores[i].score); - } - - void extserverinforeply(ucharbuf &req, ucharbuf &p) - { - int extcmd = getint(req); // extended commands - - //Build a new packet - putint(p, EXT_ACK); //send ack - putint(p, EXT_VERSION); //send version of extended info - - switch(extcmd) - { - case EXT_UPTIME: - { - putint(p, totalsecs); //in seconds - break; - } - - case EXT_PLAYERSTATS: - { - int cn = getint(req); //a special player, -1 for all - - clientinfo *ci = NULL; - if(cn >= 0) - { - loopv(clients) if(clients[i]->clientnum == cn) { ci = clients[i]; break; } - if(!ci) - { - putint(p, EXT_ERROR); //client requested by id was not found - sendserverinforeply(p); - return; - } - } - - putint(p, EXT_NO_ERROR); //so far no error can happen anymore - - ucharbuf q = p; //remember buffer position - putint(q, EXT_PLAYERSTATS_RESP_IDS); //send player ids following - if(ci) putint(q, ci->clientnum); - else loopv(clients) putint(q, clients[i]->clientnum); - sendserverinforeply(q); - - if(ci) extinfoplayer(p, ci); - else loopv(clients) extinfoplayer(p, clients[i]); - return; - } - - case EXT_TEAMSCORE: - { - extinfoteams(p); - break; - } - - default: - { - putint(p, EXT_ERROR); - break; - } - } - sendserverinforeply(p); - } + VAR(extinfoip, 0, 0, 1); + + void extinfoplayer(ucharbuf &p, clientinfo *ci) + { + ucharbuf q = p; + putint(q, EXT_PLAYERSTATS_RESP_STATS); // send player stats following + putint(q, ci->clientnum); //add player id + putint(q, ci->ping); + sendstring(ci->name, q); + sendstring(ci->team, q); + putint(q, ci->state.frags); + putint(q, ci->state.flags); + putint(q, ci->state.deaths); + putint(q, ci->state.teamkills); + putint(q, ci->state.damage*100/max(ci->state.shotdamage,1)); + putint(q, ci->state.health); + putint(q, ci->state.armour); + putint(q, ci->state.gunselect); + putint(q, ci->privilege); + putint(q, ci->state.state); + uint ip = extinfoip ? getclientip(ci->clientnum) : 0; + q.put((uchar*)&ip, 3); + sendserverinforeply(q); + } + + static inline void extinfoteamscore(ucharbuf &p, const char *team, int score) + { + sendstring(team, p); + putint(p, score); + putint(p,-1); //no bases follow + } + + void extinfoteams(ucharbuf &p) + { + putint(p, m_teammode ? 0 : 1); + putint(p, gamemode); + putint(p, max((gamelimit - gamemillis)/1000, 0)); + if(!m_teammode) return; + + vector scores; + loopv(clients) + { + clientinfo *ci = clients[i]; + if(ci->state.state!=CS_SPECTATOR && ci->team[0] && scores.htfind(ci->team) < 0) + { + teaminfo *ti = teaminfos.access(ci->team); + scores.add(teamscore(ci->team, ti ? ti->frags : 0)); + } + } + loopv(scores) extinfoteamscore(p, scores[i].team, scores[i].score); + } + + void extserverinforeply(ucharbuf &req, ucharbuf &p) + { + int extcmd = getint(req); // extended commands + + //Build a new packet + putint(p, EXT_ACK); //send ack + putint(p, EXT_VERSION); //send version of extended info + + switch(extcmd) + { + case EXT_UPTIME: + { + putint(p, totalsecs); //in seconds + break; + } + + case EXT_PLAYERSTATS: + { + int cn = getint(req); //a special player, -1 for all + + clientinfo *ci = NULL; + if(cn >= 0) + { + loopv(clients) if(clients[i]->clientnum == cn) { ci = clients[i]; break; } + if(!ci) + { + putint(p, EXT_ERROR); //client requested by id was not found + sendserverinforeply(p); + return; + } + } + + putint(p, EXT_NO_ERROR); //so far no error can happen anymore + + ucharbuf q = p; //remember buffer position + putint(q, EXT_PLAYERSTATS_RESP_IDS); //send player ids following + if(ci) putint(q, ci->clientnum); + else loopv(clients) putint(q, clients[i]->clientnum); + sendserverinforeply(q); + + if(ci) extinfoplayer(p, ci); + else loopv(clients) extinfoplayer(p, clients[i]); + return; + } + + case EXT_TEAMSCORE: + { + extinfoteams(p); + break; + } + + default: + { + putint(p, EXT_ERROR); + break; + } + } + sendserverinforeply(p); + } -- cgit v1.2.3