diff options
Diffstat (limited to 'src/game/server/entities')
| -rw-r--r-- | src/game/server/entities/character.cpp | 38 | ||||
| -rw-r--r-- | src/game/server/entities/flag.cpp | 3 | ||||
| -rw-r--r-- | src/game/server/entities/laser.cpp | 3 | ||||
| -rw-r--r-- | src/game/server/entities/pickup.cpp | 3 | ||||
| -rw-r--r-- | src/game/server/entities/projectile.cpp | 3 |
5 files changed, 31 insertions, 19 deletions
diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 581b0357..e29b778b 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -793,20 +793,22 @@ void CCharacter::Snap(int SnappingClient) if(NetworkClipped(SnappingClient)) return; - CNetObj_Character *Character = static_cast<CNetObj_Character *>(Server()->SnapNewItem(NETOBJTYPE_CHARACTER, m_pPlayer->GetCID(), sizeof(CNetObj_Character))); + CNetObj_Character *pCharacter = static_cast<CNetObj_Character *>(Server()->SnapNewItem(NETOBJTYPE_CHARACTER, m_pPlayer->GetCID(), sizeof(CNetObj_Character))); + if(!pCharacter) + return; // write down the m_Core if(!m_ReckoningTick || GameServer()->m_World.m_Paused) { // no dead reckoning when paused because the client doesn't know // how far to perform the reckoning - Character->m_Tick = 0; - m_Core.Write(Character); + pCharacter->m_Tick = 0; + m_Core.Write(pCharacter); } else { - Character->m_Tick = m_ReckoningTick; - m_SendCore.Write(Character); + pCharacter->m_Tick = m_ReckoningTick; + m_SendCore.Write(pCharacter); } // set emote @@ -816,30 +818,30 @@ void CCharacter::Snap(int SnappingClient) m_EmoteStop = -1; } - Character->m_Emote = m_EmoteType; + pCharacter->m_Emote = m_EmoteType; - Character->m_AmmoCount = 0; - Character->m_Health = 0; - Character->m_Armor = 0; + pCharacter->m_AmmoCount = 0; + pCharacter->m_Health = 0; + pCharacter->m_Armor = 0; - Character->m_Weapon = m_ActiveWeapon; - Character->m_AttackTick = m_AttackTick; + pCharacter->m_Weapon = m_ActiveWeapon; + pCharacter->m_AttackTick = m_AttackTick; - Character->m_Direction = m_Input.m_Direction; + pCharacter->m_Direction = m_Input.m_Direction; if(m_pPlayer->GetCID() == SnappingClient) { - Character->m_Health = m_Health; - Character->m_Armor = m_Armor; + pCharacter->m_Health = m_Health; + pCharacter->m_Armor = m_Armor; if(m_aWeapons[m_ActiveWeapon].m_Ammo > 0) - Character->m_AmmoCount = m_aWeapons[m_ActiveWeapon].m_Ammo; + pCharacter->m_AmmoCount = m_aWeapons[m_ActiveWeapon].m_Ammo; } - if (Character->m_Emote == EMOTE_NORMAL) + if(pCharacter->m_Emote == EMOTE_NORMAL) { if(250 - ((Server()->Tick() - m_LastAction)%(250)) < 5) - Character->m_Emote = EMOTE_BLINK; + pCharacter->m_Emote = EMOTE_BLINK; } - Character->m_PlayerState = m_PlayerState; + pCharacter->m_PlayerState = m_PlayerState; } diff --git a/src/game/server/entities/flag.cpp b/src/game/server/entities/flag.cpp index e155f848..4d034214 100644 --- a/src/game/server/entities/flag.cpp +++ b/src/game/server/entities/flag.cpp @@ -26,6 +26,9 @@ void CFlag::Reset() void CFlag::Snap(int SnappingClient) { CNetObj_Flag *pFlag = (CNetObj_Flag *)Server()->SnapNewItem(NETOBJTYPE_FLAG, m_Team, sizeof(CNetObj_Flag)); + if(!pFlag) + return; + pFlag->m_X = (int)m_Pos.x; pFlag->m_Y = (int)m_Pos.y; pFlag->m_Team = m_Team; diff --git a/src/game/server/entities/laser.cpp b/src/game/server/entities/laser.cpp index 1c598e6b..17eb4332 100644 --- a/src/game/server/entities/laser.cpp +++ b/src/game/server/entities/laser.cpp @@ -98,6 +98,9 @@ void CLaser::Snap(int SnappingClient) return; CNetObj_Laser *pObj = static_cast<CNetObj_Laser *>(Server()->SnapNewItem(NETOBJTYPE_LASER, m_Id, sizeof(CNetObj_Laser))); + if(!pObj) + return; + pObj->m_X = (int)m_Pos.x; pObj->m_Y = (int)m_Pos.y; pObj->m_FromX = (int)m_From.x; diff --git a/src/game/server/entities/pickup.cpp b/src/game/server/entities/pickup.cpp index 87be87e7..a2c6f650 100644 --- a/src/game/server/entities/pickup.cpp +++ b/src/game/server/entities/pickup.cpp @@ -126,6 +126,9 @@ void CPickup::Snap(int SnappingClient) return; CNetObj_Pickup *pP = static_cast<CNetObj_Pickup *>(Server()->SnapNewItem(NETOBJTYPE_PICKUP, m_Id, sizeof(CNetObj_Pickup))); + if(!pP) + return; + pP->m_X = (int)m_Pos.x; pP->m_Y = (int)m_Pos.y; pP->m_Type = m_Type; diff --git a/src/game/server/entities/projectile.cpp b/src/game/server/entities/projectile.cpp index f45fe99d..5b3bc482 100644 --- a/src/game/server/entities/projectile.cpp +++ b/src/game/server/entities/projectile.cpp @@ -100,5 +100,6 @@ void CProjectile::Snap(int SnappingClient) return; CNetObj_Projectile *pProj = static_cast<CNetObj_Projectile *>(Server()->SnapNewItem(NETOBJTYPE_PROJECTILE, m_Id, sizeof(CNetObj_Projectile))); - FillInfo(pProj); + if(pProj) + FillInfo(pProj); } |