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 | |
| 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')
| -rw-r--r-- | src/game/server/entities/character.cpp | 19 | ||||
| -rw-r--r-- | src/game/server/entities/character.h | 2 |
2 files changed, 21 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); +} diff --git a/src/game/server/entities/character.h b/src/game/server/entities/character.h index a311a6f9..f90e4d80 100644 --- a/src/game/server/entities/character.h +++ b/src/game/server/entities/character.h @@ -64,6 +64,8 @@ public: bool IsAlive() const { return m_Alive; } class CPlayer *GetPlayer() { return m_pPlayer; } + void Freeze(int Tick); + private: // player controlling this character class CPlayer *m_pPlayer; |