diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-09-24 14:54:51 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-09-24 14:54:51 +0000 |
| commit | eb812244d9fba85f6a117e7b5dc1ee500544a08a (patch) | |
| tree | e32f5de3b2cc0f288a5a0c21b5a4dd012aa20235 | |
| parent | 917ebc17c617dfd27e4e997dce713cb1dfb6cfdc (diff) | |
| download | zcatch-eb812244d9fba85f6a117e7b5dc1ee500544a08a.tar.gz zcatch-eb812244d9fba85f6a117e7b5dc1ee500544a08a.zip | |
fixed server crash when dieing
| -rw-r--r-- | src/game/server/entities/character.cpp | 4 | ||||
| -rw-r--r-- | src/game/server/player.cpp | 30 |
2 files changed, 16 insertions, 18 deletions
diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index e79962c2..c04be833 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -801,7 +801,7 @@ bool CHARACTER::take_damage(vec2 force, int dmg, int from, int weapon) if(health <= 0) { die(from, weapon); - + // set attacker's face to happy (taunt!) if (from >= 0 && from != player->client_id) { @@ -809,7 +809,7 @@ bool CHARACTER::take_damage(vec2 force, int dmg, int from, int weapon) chr->emote_type = EMOTE_HAPPY; chr->emote_stop = server_tick() + server_tickspeed(); } - + return false; } diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index 252e23e3..45d56388 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -19,17 +19,6 @@ PLAYER::~PLAYER() character = 0; } -/* -void PLAYER::init(int client_id) -{ - // clear everything - ~PLAYER(); - mem_zero(this, sizeof(*this)); - new(this) PLAYER(); - - this->client_id = client_id; -}*/ - void PLAYER::tick() { server_setclientscore(client_id, score); @@ -54,12 +43,21 @@ void PLAYER::tick() latency.accum_max = 0; } } - - if(spawning && !get_character()) + + if(character) + { + if(character->alive) + { + view_pos = character->pos; + } + else + { + delete character; + character = 0; + } + } + else if(spawning) try_respawn(); - - if(get_character()) - view_pos = get_character()->pos; } void PLAYER::snap(int snaping_client) |