mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 14:38:18 +00:00
Fix possible crashes
This commit is contained in:
parent
d8533eea67
commit
caa1f15d12
|
@ -478,6 +478,7 @@ int CServer::GetClientInfo(int ClientID, CClientInfo *pInfo)
|
|||
pInfo->m_pName = m_aClients[ClientID].m_aName;
|
||||
pInfo->m_Latency = m_aClients[ClientID].m_Latency;
|
||||
CGameContext *GameServer = (CGameContext *) m_pGameServer;
|
||||
if (GameServer->m_apPlayers[ClientID])
|
||||
pInfo->m_ClientVersion = GameServer->m_apPlayers[ClientID]->m_ClientVersion;
|
||||
return 1;
|
||||
}
|
||||
|
@ -1041,6 +1042,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
|||
if(Unpacker.Error() == 0 && !str_comp(pCmd, "crashmeplx"))
|
||||
{
|
||||
CGameContext *GameServer = (CGameContext *) m_pGameServer;
|
||||
if (GameServer->m_apPlayers[ClientID])
|
||||
GameServer->m_apPlayers[ClientID]->m_ClientVersion = VERSION_DDNET_OLD;
|
||||
} else
|
||||
if(Unpacker.Error() == 0 && m_aClients[ClientID].m_Authed)
|
||||
|
|
|
@ -406,7 +406,7 @@ void CGameContext::SendVoteSet(int ClientID)
|
|||
|
||||
void CGameContext::SendVoteStatus(int ClientID, int Total, int Yes, int No)
|
||||
{
|
||||
if (Total > VANILLA_MAX_CLIENTS && m_apPlayers[ClientID]->m_ClientVersion <= VERSION_DDRACE)
|
||||
if (Total > VANILLA_MAX_CLIENTS && m_apPlayers[ClientID] && m_apPlayers[ClientID]->m_ClientVersion <= VERSION_DDRACE)
|
||||
{
|
||||
Yes = float(Yes) * VANILLA_MAX_CLIENTS / float(Total);
|
||||
No = float(No) * VANILLA_MAX_CLIENTS / float(Total);
|
||||
|
@ -2519,7 +2519,7 @@ void CGameContext::WhisperID(int ClientID, int VictimID, char *pMessage)
|
|||
|
||||
char aBuf[256];
|
||||
|
||||
if (m_apPlayers[ClientID]->m_ClientVersion >= VERSION_DDNET_WHISPER)
|
||||
if (m_apPlayers[ClientID] && m_apPlayers[ClientID]->m_ClientVersion >= VERSION_DDNET_WHISPER)
|
||||
{
|
||||
CNetMsg_Sv_Chat Msg;
|
||||
Msg.m_Team = CHAT_WHISPER_SEND;
|
||||
|
@ -2532,7 +2532,7 @@ void CGameContext::WhisperID(int ClientID, int VictimID, char *pMessage)
|
|||
SendChatTarget(ClientID, aBuf);
|
||||
}
|
||||
|
||||
if (m_apPlayers[VictimID]->m_ClientVersion >= VERSION_DDNET_WHISPER)
|
||||
if (m_apPlayers[VictimID] && m_apPlayers[VictimID]->m_ClientVersion >= VERSION_DDNET_WHISPER)
|
||||
{
|
||||
CNetMsg_Sv_Chat Msg2;
|
||||
Msg2.m_Team = CHAT_WHISPER_RECV;
|
||||
|
|
|
@ -186,7 +186,8 @@ void CGameWorld::UpdatePlayerMaps()
|
|||
if(SnapChar && !SnapChar->m_Super &&
|
||||
GameServer()->m_apPlayers[SnappingClient]->GetTeam() != -1 &&
|
||||
!ch->CanCollide(SnappingClient) &&
|
||||
(GameServer()->m_apPlayers[SnappingClient]->m_ClientVersion == VERSION_VANILLA ||
|
||||
(!GameServer()->m_apPlayers[SnappingClient] ||
|
||||
GameServer()->m_apPlayers[SnappingClient]->m_ClientVersion == VERSION_VANILLA ||
|
||||
(GameServer()->m_apPlayers[SnappingClient]->m_ClientVersion >= VERSION_DDRACE &&
|
||||
!GameServer()->m_apPlayers[SnappingClient]->m_ShowOthers
|
||||
)
|
||||
|
|
|
@ -266,7 +266,8 @@ void CPlayer::FakeSnap(int SnappingClient)
|
|||
{
|
||||
IServer::CClientInfo info;
|
||||
Server()->GetClientInfo(SnappingClient, &info);
|
||||
if (((CGameContext *) GameServer())->m_apPlayers[SnappingClient]->m_ClientVersion >= VERSION_DDNET_OLD)
|
||||
CGameContext *GameContext = (CGameContext *) GameServer();
|
||||
if (GameContext->m_apPlayers[SnappingClient] && GameContext->m_apPlayers[SnappingClient]->m_ClientVersion >= VERSION_DDNET_OLD)
|
||||
return;
|
||||
|
||||
int id = VANILLA_MAX_CLIENTS - 1;
|
||||
|
|
|
@ -314,7 +314,7 @@ void CGameTeams::SendTeamsState(int ClientID)
|
|||
if (g_Config.m_SvTeam == 3)
|
||||
return;
|
||||
|
||||
if (m_pGameContext->m_apPlayers[ClientID]->m_ClientVersion <= VERSION_DDRACE)
|
||||
if (m_pGameContext->m_apPlayers[ClientID] && m_pGameContext->m_apPlayers[ClientID]->m_ClientVersion <= VERSION_DDRACE)
|
||||
return;
|
||||
|
||||
CMsgPacker Msg(NETMSGTYPE_SV_TEAMSSTATE);
|
||||
|
|
Loading…
Reference in a new issue