diff --git a/datasrc/network.py b/datasrc/network.py index 2c7bbd8f5..fd6bc6d02 100644 --- a/datasrc/network.py +++ b/datasrc/network.py @@ -406,15 +406,15 @@ Messages = [ NetStringStrict("m_Reason"), ], teehistorian=False), - NetMessage("Cl_IsDDNet", []), + NetMessage("Cl_IsDDNetLegacy", []), - NetMessage("Sv_DDRaceTime", [ + NetMessage("Sv_DDRaceTimeLegacy", [ NetIntAny("m_Time"), NetIntAny("m_Check"), NetIntRange("m_Finish", 0, 1), ]), - NetMessage("Sv_Record", [ + NetMessage("Sv_RecordLegacy", [ NetIntAny("m_ServerTimeBest"), NetIntAny("m_PlayerTimeBest"), ]), @@ -443,4 +443,15 @@ Messages = [ ]), NetMessageEx("Sv_TeamsState", "teamsstate@netmsg.ddnet.tw", []), + + NetMessageEx("Sv_DDRaceTime", "ddrace-time@netmsg.ddnet.tw", [ + NetIntAny("m_Time"), + NetIntAny("m_Check"), + NetIntRange("m_Finish", 0, 1), + ]), + + NetMessageEx("Sv_Record", "weird-record@netmsg.ddnet.tw", [ + NetIntAny("m_ServerTimeBest"), + NetIntAny("m_PlayerTimeBest"), + ]), ] diff --git a/src/engine/shared/protocol.h b/src/engine/shared/protocol.h index 56ff0248c..538a348d1 100644 --- a/src/engine/shared/protocol.h +++ b/src/engine/shared/protocol.h @@ -114,7 +114,7 @@ enum VERSION_DDNET_FIREDELAY_TUNE = 701, VERSION_DDNET_UPDATER_FIXED = 707, VERSION_DDNET_GAMETICK = 10042, - VERSION_DDNET_TEAMSSTATE_LEGACY = 15025, + VERSION_DDNET_MSG_LEGACY = 15025, }; #endif diff --git a/src/game/client/components/hud.cpp b/src/game/client/components/hud.cpp index eaf61cbac..dec77c5b0 100644 --- a/src/game/client/components/hud.cpp +++ b/src/game/client/components/hud.cpp @@ -859,7 +859,7 @@ void CHud::OnRender() void CHud::OnMessage(int MsgType, void *pRawMsg) { - if(MsgType == NETMSGTYPE_SV_DDRACETIME) + if(MsgType == NETMSGTYPE_SV_DDRACETIME || MsgType == NETMSGTYPE_SV_DDRACETIMELEGACY) { m_DDRaceTimeReceived = true; @@ -877,7 +877,7 @@ void CHud::OnMessage(int MsgType, void *pRawMsg) m_CheckpointTick = Client()->GameTick(g_Config.m_ClDummy); } } - else if(MsgType == NETMSGTYPE_SV_RECORD) + else if(MsgType == NETMSGTYPE_SV_RECORD || MsgType == NETMSGTYPE_SV_RECORDLEGACY) { CNetMsg_Sv_Record *pMsg = (CNetMsg_Sv_Record *)pRawMsg; diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp index 1ae92c039..1a17c8d00 100644 --- a/src/game/client/gameclient.cpp +++ b/src/game/client/gameclient.cpp @@ -1611,7 +1611,7 @@ void CGameClient::OnNewSnapshot() if(!m_DDRaceMsgSent[0] && m_Snap.m_pLocalInfo) { - CMsgPacker Msg(NETMSGTYPE_CL_ISDDNET, false); + CMsgPacker Msg(NETMSGTYPE_CL_ISDDNETLEGACY, false); Msg.AddInt(CLIENT_VERSIONNR); Client()->SendMsgY(&Msg, MSGFLAG_VITAL, 0); m_DDRaceMsgSent[0] = true; @@ -1619,7 +1619,7 @@ void CGameClient::OnNewSnapshot() if(!m_DDRaceMsgSent[1] && m_Snap.m_pLocalInfo && Client()->DummyConnected()) { - CMsgPacker Msg(NETMSGTYPE_CL_ISDDNET, false); + CMsgPacker Msg(NETMSGTYPE_CL_ISDDNETLEGACY, false); Msg.AddInt(CLIENT_VERSIONNR); Client()->SendMsgY(&Msg, MSGFLAG_VITAL, 1); m_DDRaceMsgSent[1] = true; diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index abfdf2d63..6cf6f0cd8 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -2123,7 +2123,7 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID) SendBroadcast(aBuf, ClientID); } } - else if(MsgID == NETMSGTYPE_CL_ISDDNET) + else if(MsgID == NETMSGTYPE_CL_ISDDNETLEGACY) { IServer::CClientInfo Info; Server()->GetClientInfo(ClientID, &Info); diff --git a/src/game/server/teams.cpp b/src/game/server/teams.cpp index 8d7dfb454..1c191e3d8 100644 --- a/src/game/server/teams.cpp +++ b/src/game/server/teams.cpp @@ -440,7 +440,7 @@ void CGameTeams::SendTeamsState(int ClientID) Server()->SendMsg(&Msg, MSGFLAG_VITAL, ClientID); int ClientVersion = m_pGameContext->m_apPlayers[ClientID]->GetClientVersion(); - if(!Server()->IsSixup(ClientID) && VERSION_DDRACE < ClientVersion && ClientVersion <= VERSION_DDNET_TEAMSSTATE_LEGACY) + if(!Server()->IsSixup(ClientID) && VERSION_DDRACE < ClientVersion && ClientVersion <= VERSION_DDNET_MSG_LEGACY) { Server()->SendMsg(&MsgLegacy, MSGFLAG_VITAL, ClientID); } @@ -641,20 +641,24 @@ void CGameTeams::OnFinish(CPlayer *Player, float Time, const char *pTimestamp) } } - if(Player->GetClientVersion() >= VERSION_DDRACE) { CNetMsg_Sv_DDRaceTime Msg; - Msg.m_Time = (int)(Time * 100.0f); - Msg.m_Check = 0; - Msg.m_Finish = 1; + CNetMsg_Sv_DDRaceTimeLegacy MsgLegacy; + MsgLegacy.m_Time = Msg.m_Time = (int)(Time * 100.0f); + MsgLegacy.m_Check = Msg.m_Check = 0; + MsgLegacy.m_Finish = Msg.m_Finish = 1; if(pData->m_BestTime) { float Diff = (Time - pData->m_BestTime) * 100; - Msg.m_Check = (int)Diff; + MsgLegacy.m_Check = Msg.m_Check = (int)Diff; } Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, ClientID); + if(!Server()->IsSixup(ClientID) && VERSION_DDRACE <= Player->GetClientVersion() && Player->GetClientVersion() <= VERSION_DDNET_MSG_LEGACY) + { + Server()->SendPackMsg(&MsgLegacy, MSGFLAG_VITAL, ClientID); + } } {