19#include <generated/protocol.h>
20#include <generated/protocol7.h>
21#include <generated/protocolglue.h>
61 virtual int Port()
const = 0;
73 virtual const std::array<char, NETADDR_MAXSTRSIZE> &
ClientAddrStringImpl(
int ClientId,
bool IncludePort)
const = 0;
90 requires(!protocol7::is_sixup<T>::value)
108 requires(protocol7::is_sixup<T>::value)
134 protocol7::CNetMsg_Sv_Chat Msg;
135 Msg.m_ClientId = pMsg->m_ClientId;
136 Msg.m_Mode = pMsg->m_Team ? protocol7::CHAT_TEAM : protocol7::CHAT_ALL;
137 Msg.m_pMessage = pMsg->m_pMessage;
147 protocol7::CNetMsg_Sv_Chat MsgCopy = *pMsg;
150 int WhisperSend = TEAM_WHISPER_SEND + (int)protocol7::NUM_CHATS;
151 int WhisperRecv = TEAM_WHISPER_RECV + (int)protocol7::NUM_CHATS;
152 int *pId = MsgCopy.m_Mode == WhisperSend ? &MsgCopy.m_TargetId : &MsgCopy.m_ClientId;
159 if(*pId >= 0 && ((MsgCopy.m_Mode == protocol7::CHAT_TEAM && *pId != ClientId) || MsgCopy.m_Mode == WhisperRecv || !
Translate(*pId, ClientId)))
162 MsgCopy.m_pMessage = aBuf;
165 if(MsgCopy.m_Mode == WhisperSend && *pId == ClientId)
174 if(MsgCopy.m_Mode == WhisperSend)
177 MsgCopy.m_Mode = protocol7::CHAT_WHISPER;
179 else if(MsgCopy.m_Mode == WhisperRecv)
182 MsgCopy.m_Mode = protocol7::CHAT_WHISPER;
188 if(MsgCopy.m_Mode == WhisperSend || MsgCopy.m_Mode == WhisperRecv)
189 Msg.m_Team = MsgCopy.m_Mode - protocol7::NUM_CHATS;
191 Msg.m_Team = (int)(MsgCopy.m_Mode == protocol7::CHAT_TEAM);
192 Msg.m_ClientId = *pId;
193 Msg.m_pMessage = MsgCopy.m_pMessage;
199 CNetMsg_Sv_KillMsg MsgCopy = *pMsg;
200 if(!
Translate(MsgCopy.m_Victim, ClientId))
202 if(!
Translate(MsgCopy.m_Killer, ClientId))
203 MsgCopy.m_Killer = MsgCopy.m_Victim;
209 CNetMsg_Sv_KillMsgTeam MsgCopy = *pMsg;
210 if(!
Translate(MsgCopy.m_First, ClientId))
211 MsgCopy.m_First = -1;
217 CNetMsg_Sv_Emoticon MsgCopy = *pMsg;
223 protocol7::CNetMsg_Sv_VoteSet MsgCopy = *pMsg;
224 if(!
Translate(MsgCopy.m_ClientId, ClientId))
225 MsgCopy.m_ClientId = -1;
231 protocol7::CNetMsg_Sv_Team MsgCopy = *pMsg;
237 protocol7::CNetMsg_Sv_SkinChange MsgCopy = *pMsg;
243 protocol7::CNetMsg_Sv_ClientInfo MsgCopy = *pMsg;
249 protocol7::CNetMsg_Sv_ClientDrop MsgCopy = *pMsg;
257 protocol7::CNetMsg_Sv_RaceFinish Msg7;
258 Msg7.m_ClientId = pMsg->m_ClientId;
259 Msg7.m_Diff = pMsg->m_Diff;
260 Msg7.m_Time = pMsg->m_Time;
261 Msg7.m_RecordPersonal = pMsg->m_RecordPersonal;
262 Msg7.m_RecordServer = pMsg->m_RecordServer;
266 CNetMsg_Sv_RaceFinish MsgCopy = *pMsg;
273 dbg_assert(ClientId != -1,
"SendPackMsgOne called with -1");
274 CMsgPacker Packer(T::ms_MsgId,
false, protocol7::is_sixup<T>::value);
276 if(pMsg->Pack(&Packer))
278 return SendMsg(&Packer, Flags, ClientId);
291 if(pMap[Target] == -1)
293 Target = pMap[Target];
307 if(pMap[Target] == -1)
309 Target = pMap[Target];
323 virtual bool SnapNewItem(
int Type,
int Id,
const void *pData,
int Size) = 0;
328 const int Type = protocol7::is_sixup<T>::value ? -T::ms_MsgId : T::ms_MsgId;
346 virtual void Kick(
int ClientId,
const char *pReason) = 0;
347 virtual void Ban(
int ClientId,
int Seconds,
const char *pReason,
bool VerbatimReason) = 0;
356 virtual void SaveDemo(
int ClientId,
float Time) = 0;
380 virtual void SendMsgRaw(
int ClientId,
const void *pData,
int Size,
int Flags) = 0;
394 virtual
void OnInit(const
void *pPersistentData) = 0;
397 [[nodiscard]] virtual
bool OnMapChange(
char *pNewMapName,
int MapNameSize) = 0;
409 virtual
void OnSnap(
int ClientId,
bool GlobalSnap,
bool RecordingDemo) = 0;
Definition jsonwriter.h:15
Definition authmanager.h:32
@ CLIENT_ID_NO_GAME
Definition console.h:51
@ CLIENT_ID_GAME
Definition console.h:50
virtual const char * GameType() const =0
virtual void TeehistorianRecordPlayerFinish(int ClientId, int TimeTicks)=0
virtual void OnSetAuthed(int ClientId, CRconRole *pRole)=0
virtual void TeehistorianRecordPlayerName(int ClientId, const char *pName)=0
virtual void OnMessage(int MsgId, CUnpacker *pUnpacker, int ClientId)=0
virtual int PersistentDataSize() const =0
virtual bool OnClientDataPersist(int ClientId, void *pData)=0
virtual void OnUpdatePlayerServerInfo(CJsonWriter *pJsonWriter, int ClientId)=0
virtual void FillAntibot(CAntibotRoundData *pData)=0
virtual void OnClientPredictedInput(int ClientId, const void *pInput)=0
virtual CUuid GameUuid() const =0
virtual void OnPostGlobalSnap()=0
virtual void OnClientRejoin(int ClientId)=0
virtual CNetObjHandler * GetNetObjHandler()=0
virtual void OnPreTickTeehistorian()=0
virtual void TeehistorianRecordTeamFinish(int TeamId, int TimeTicks)=0
virtual const char * NetVersion() const =0
virtual void TeehistorianRecordAuthLogin(int ClientId, const char *pRoleName, const char *pAuthName)=0
virtual void OnClientEnter(int ClientId)=0
virtual void TeehistorianRecordAntibot(const void *pData, int DataSize)=0
virtual void OnClientInfoChange(int ClientId)=0
virtual void OnClientConnected(int ClientId, void *pPersistentData)=0
virtual void PreInputClients(int ClientId, bool *pClients)=0
virtual void OnConsoleInit()=0
virtual const char * Version() const =0
virtual bool IsClientPlayer(int ClientId) const =0
virtual void OnClientDirectInput(int ClientId, const void *pInput)=0
virtual protocol7::CNetObjHandler * GetNetObjHandler7()=0
virtual void OnClientPredictedEarlyInput(int ClientId, const void *pInput)=0
virtual bool PlayerExists(int ClientId) const =0
virtual void OnClientDrop(int ClientId, const char *pReason)=0
virtual void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason)=0
virtual bool IsClientReady(int ClientId) const =0
virtual void OnShutdown(void *pPersistentData)=0
virtual void OnClientPrepareInput(int ClientId, void *pInput)=0
virtual void TeehistorianRecordPlayerRejoin(int ClientId)=0
virtual void TeehistorianRecordPlayerJoin(int ClientId, bool Sixup)=0
virtual bool OnMapChange(char *pNewMapName, int MapNameSize)=0
virtual void OnSnap(int ClientId, bool GlobalSnap, bool RecordingDemo)=0
virtual int PersistentClientDataSize() const =0
virtual bool IsClientHighBandwidth(int ClientId) const =0
virtual void OnInit(const void *pPersistentData)=0
virtual void ReinitPlayerMap(int ClientId, bool Timeout)=0
IInterface()
Definition kernel.h:19
virtual int ClientCount() const =0
virtual void RedirectClient(int ClientId, int Port)=0
virtual void SetTimeoutProtected(int ClientId)=0
virtual bool IsRconAuthedAdmin(int ClientId) const =0
virtual const NETADDR * ClientAddr(int ClientId) const =0
int SendPackMsgTranslate(const CNetMsg_Sv_RaceFinish *pMsg, int Flags, int ClientId)
Definition server.h:253
virtual bool SnapNewItem(int Type, int Id, const void *pData, int Size)=0
virtual void SetRconCid(int ClientId)=0
bool SnapNewItem(int Id, const T &Data)
Definition server.h:326
virtual bool WouldClientClanChange(int ClientId, const char *pClanRequest)=0
int SendPackMsgTranslateChat(const protocol7::CNetMsg_Sv_Chat *pMsg, int Flags, int ClientId)
Definition server.h:145
virtual void SetClientName(int ClientId, const char *pName)=0
virtual bool WouldClientNameChange(int ClientId, const char *pNameRequest)=0
bool ReverseTranslate(int &Target, int ClientId)
Definition server.h:297
int SendPackMsgTranslate(const T *pMsg, int Flags, int ClientId)
Definition server.h:127
virtual void SnapSetStaticsize(int ItemType, int Size)=0
virtual int Port() const =0
virtual bool DnsblBlack(int ClientId)=0
virtual void SnapFreeId(int Id)=0
int Tick() const
Definition server.h:58
virtual bool DnsblWhite(int ClientId)=0
virtual int SendMsg(CMsgPacker *pMsg, int Flags, int ClientId)=0
virtual const char * GetAuthName(int ClientId) const =0
virtual bool IsSixup(int ClientId) const =0
int SendPackMsgTranslate(const CNetMsg_Sv_Chat *pMsg, int Flags, int ClientId)
Definition server.h:132
virtual void StopDemos()=0
virtual void ExpireServerInfo()=0
int SendPackMsgTranslate(const protocol7::CNetMsg_Sv_ClientInfo *pMsg, int Flags, int ClientId)
Definition server.h:241
virtual int ClientCountry(int ClientId) const =0
virtual void Ban(int ClientId, int Seconds, const char *pReason, bool VerbatimReason)=0
virtual int MaxClients() const =0
virtual void SetClientScore(int ClientId, std::optional< int > Score)=0
bool Translate(int &Target, int ClientId)
Definition server.h:281
virtual int * GetIdMap(int ClientId)=0
virtual void ReloadMap()=0
virtual void ChangeMap(const char *pMap)=0
virtual bool ClientPrevIngame(int ClientId)=0
int SendPackMsgTranslate(const protocol7::CNetMsg_Sv_ClientDrop *pMsg, int Flags, int ClientId)
Definition server.h:247
virtual bool GetClientInfo(int ClientId, CClientInfo *pInfo) const =0
virtual void FillAntibot(CAntibotRoundData *pData)=0
virtual const std::array< char, NETADDR_MAXSTRSIZE > & ClientAddrStringImpl(int ClientId, bool IncludePort) const =0
virtual void SetErrorShutdown(const char *pReason)=0
virtual void SetClientFlags(int ClientId, int Flags)=0
int SendPackMsg(const T *pMsg, int Flags, int ClientId)
Definition server.h:109
virtual bool IsRconAuthed(int ClientId) const =0
virtual int GetMaxClients(int ClientId) const =0
const char * ClientAddrString(int ClientId, bool IncludePort) const
Definition server.h:74
virtual bool IsRecording(int ClientId)=0
int SendPackMsgOne(const T *pMsg, int Flags, int ClientId)
Definition server.h:271
virtual int DistinctClientCount() const =0
int TickSpeed() const
Definition server.h:59
virtual const char * ClientName(int ClientId) const =0
int m_CurrentGameTick
Definition server.h:42
virtual int GetAuthedState(int ClientId) const =0
virtual void SetClientDDNetVersion(int ClientId, int DDNetVersion)=0
virtual void SnapSetStaticsize7(int ItemType, int Size)=0
virtual void DemoRecorder_HandleAutoStart()=0
int SendPackMsgTranslate(const protocol7::CNetMsg_Sv_SkinChange *pMsg, int Flags, int ClientId)
Definition server.h:235
virtual bool HasAuthHidden(int ClientId) const =0
@ RCON_CID_VOTE
Definition server.h:338
@ RCON_CID_SERV
Definition server.h:337
virtual void SetClientClan(int ClientId, const char *pClan)=0
virtual bool ClientIngame(int ClientId) const =0
virtual int * GetReverseIdMap(int ClientId)=0
virtual void StopRecord(int ClientId)=0
virtual void SetClientCountry(int ClientId, int Country)=0
int SendPackMsg(const T *pMsg, int Flags, int ClientId)
Definition server.h:91
int SendPackMsgTranslate(const CNetMsg_Sv_KillMsg *pMsg, int Flags, int ClientId)
Definition server.h:197
virtual const char * GetAnnouncementLine()=0
virtual void Kick(int ClientId, const char *pReason)=0
virtual bool DnsblPending(int ClientId)=0
virtual void SaveDemo(int ClientId, float Time)=0
int SendPackMsgTranslate(const CNetMsg_Sv_KillMsgTeam *pMsg, int Flags, int ClientId)
Definition server.h:207
virtual void StartRecord(int ClientId)=0
int SendPackMsgTranslate(const CNetMsg_Sv_Emoticon *pMsg, int Flags, int ClientId)
Definition server.h:215
virtual int GetClientVersion(int ClientId) const =0
int SendPackMsgTranslate(const protocol7::CNetMsg_Sv_VoteSet *pMsg, int Flags, int ClientId)
Definition server.h:221
virtual bool ClientSupportsServerMaxClients(int ClientId) const =0
int SendPackMsgTranslate(const protocol7::CNetMsg_Sv_Team *pMsg, int Flags, int ClientId)
Definition server.h:229
virtual void ResetNetErrorString(int ClientId)=0
virtual void SendMsgRaw(int ClientId, const void *pData, int Size, int Flags)=0
virtual const char * ClientClan(int ClientId) const =0
virtual const char * GetNetErrorString(int ClientId)=0
virtual std::optional< int > SnapNewId()=0
virtual bool SetTimedOut(int ClientId, int OrigId)=0
virtual bool ClientSlotEmpty(int ClientId) const =0
#define dbg_assert(test, fmt,...)
Definition dbg.h:27
#define MACRO_INTERFACE(Name)
Definition kernel.h:25
@ SERVER_TICK_SPEED
Definition protocol.h:81
@ MSGFLAG_NOTRANSLATE
Definition protocol.h:139
@ MAX_CLIENTS
Definition protocol.h:89
@ SERVER_DEMO_CLIENT
Definition server.h:35
IGameServer * CreateGameServer()
Definition gamecontext.cpp:4712
#define str_format
Definition str.cpp:92
Definition antibot_data.h:111
Definition uuid_manager.h:17
const char * m_pName
Definition server.h:50
const CUuid * m_pConnectionId
Definition server.h:55
int m_Latency
Definition server.h:51
int m_DDNetVersion
Definition server.h:53
bool m_GotDDNetVersion
Definition server.h:52
const char * m_pDDNetVersionStr
Definition server.h:54
Definition score_test.cpp:25