diff options
| author | Teetime <teetimetw@yahoo.de> | 2011-11-05 18:03:33 +0100 |
|---|---|---|
| committer | Teetime <teetimetw@yahoo.de> | 2011-11-05 18:03:33 +0100 |
| commit | 744018aaafb218321907c4e0c0e0b4472fb7e1b9 (patch) | |
| tree | 50323eec409c701dfd16c5275ef17d795b85efc9 /src/game/server/entities/character.cpp | |
| parent | 24718cc8d6f8021f6c54e1c2207f7e68b75a22c3 (diff) | |
| download | zcatch-744018aaafb218321907c4e0c0e0b4472fb7e1b9.tar.gz zcatch-744018aaafb218321907c4e0c0e0b4472fb7e1b9.zip | |
Added possibility to freeze players and improved and extended anticamper
Diffstat (limited to 'src/game/server/entities/character.cpp')
| -rw-r--r-- | src/game/server/entities/character.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 06c1c913..d09bc714 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -541,6 +541,12 @@ void CCharacter::OnPredictedInput(CNetObj_PlayerInput *pNewInput) void CCharacter::OnDirectInput(CNetObj_PlayerInput *pNewInput) { + if(m_pPlayer->m_FreezeTicks) + { + ResetInput(); + return; + } + mem_copy(&m_LatestPrevInput, &m_LatestInput, sizeof(m_LatestInput)); mem_copy(&m_LatestInput, pNewInput, sizeof(m_LatestInput)); @@ -579,6 +585,11 @@ void CCharacter::Tick() m_Core.m_Input = m_Input; m_Core.Tick(true); + //Set weapon back to the last one + if(m_pPlayer->m_FreezeTicks == 1) + SetWeapon(m_LastWeapon); + + // handle death-tiles and leaving gamelayer if(GameServer()->Collision()->GetCollisionAt(m_Pos.x+m_ProximityRadius/3.f, m_Pos.y-m_ProximityRadius/3.f)&CCollision::COLFLAG_DEATH || GameServer()->Collision()->GetCollisionAt(m_Pos.x+m_ProximityRadius/3.f, m_Pos.y+m_ProximityRadius/3.f)&CCollision::COLFLAG_DEATH || @@ -894,3 +905,11 @@ void CCharacter::Snap(int SnappingClient) pCharacter->m_PlayerFlags = GetPlayer()->m_PlayerFlags; } + +void CCharacter::Freeze(int Ticks) +{ + m_pPlayer->m_FreezeTicks = Ticks; + m_LastWeapon = m_ActiveWeapon; + m_ActiveWeapon = WEAPON_NINJA; + GameServer()->CreateSound(m_Pos, SOUND_PLAYER_PAIN_LONG); +} |