diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-11-18 23:29:34 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-11-18 23:29:34 +0000 |
| commit | adb6b58e3c9e23e1d659497f0fb9b4542de1c7cf (patch) | |
| tree | c39935cacd9b0425a1e9f9a2b5b506feef299923 /src/game/server | |
| parent | 9be8a4c39d5be538f85c905cf5194962271296a4 (diff) | |
| download | zcatch-adb6b58e3c9e23e1d659497f0fb9b4542de1c7cf.tar.gz zcatch-adb6b58e3c9e23e1d659497f0fb9b4542de1c7cf.zip | |
fixed score board stuff for CTF and improved kill messages for it aswell
Diffstat (limited to 'src/game/server')
| -rw-r--r-- | src/game/server/game_server.cpp | 7 | ||||
| -rw-r--r-- | src/game/server/srv_common.cpp | 5 | ||||
| -rw-r--r-- | src/game/server/srv_common.h | 2 | ||||
| -rw-r--r-- | src/game/server/srv_ctf.cpp | 17 | ||||
| -rw-r--r-- | src/game/server/srv_ctf.h | 2 |
5 files changed, 23 insertions, 10 deletions
diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp index 241e3862..797f31bf 100644 --- a/src/game/server/game_server.cpp +++ b/src/game/server/game_server.cpp @@ -992,17 +992,18 @@ void player::tick_defered() void player::die(int killer, int weapon) { - gameobj->on_player_death(this, get_player(killer), weapon); + int mode_special = gameobj->on_player_death(this, get_player(killer), weapon); - dbg_msg("game", "kill killer='%d:%s' victim='%d:%s' weapon=%d", + dbg_msg("game", "kill killer='%d:%s' victim='%d:%s' weapon=%d special=%d", killer, server_clientname(killer), - client_id, server_clientname(client_id), weapon); + client_id, server_clientname(client_id), weapon, mode_special); // send the kill message msg_pack_start(MSG_KILLMSG, MSGFLAG_VITAL); msg_pack_int(killer); msg_pack_int(client_id); msg_pack_int(weapon); + msg_pack_int(mode_special); msg_pack_end(); server_send_msg(-1); diff --git a/src/game/server/srv_common.cpp b/src/game/server/srv_common.cpp index c97433d3..5cb3d6e4 100644 --- a/src/game/server/srv_common.cpp +++ b/src/game/server/srv_common.cpp @@ -127,15 +127,16 @@ void gameobject::on_player_info_change(class player *p) } -void gameobject::on_player_death(class player *victim, class player *killer, int weapon) +int gameobject::on_player_death(class player *victim, class player *killer, int weapon) { // do scoreing if(!killer) - return; + return 0; if(killer == victim) victim->score--; // klant arschel else killer->score++; // good shit + return 0; } void gameobject::do_warmup(int seconds) diff --git a/src/game/server/srv_common.h b/src/game/server/srv_common.h index a780dd73..11a6c3f2 100644 --- a/src/game/server/srv_common.h +++ b/src/game/server/srv_common.h @@ -136,7 +136,7 @@ public: virtual void tick(); virtual void on_player_spawn(class player *p) {} - virtual void on_player_death(class player *victim, class player *killer, int weapon); + virtual int on_player_death(class player *victim, class player *killer, int weapon); virtual void on_player_info_change(class player *p); diff --git a/src/game/server/srv_ctf.cpp b/src/game/server/srv_ctf.cpp index 42061a5c..972da032 100644 --- a/src/game/server/srv_ctf.cpp +++ b/src/game/server/srv_ctf.cpp @@ -29,16 +29,25 @@ void gameobject_ctf::on_player_spawn(class player *p) { } -void gameobject_ctf::on_player_death(class player *victim, class player *killer, int weaponid) +int gameobject_ctf::on_player_death(class player *victim, class player *killer, int weaponid) { gameobject::on_player_death(victim, killer, weaponid); + int had_flag = 0; + // drop flags for(int fi = 0; fi < 2; fi++) { flag *f = flags[fi]; + if(f && f->carrying_player == killer) + had_flag |= 2; if(f && f->carrying_player == victim) + { f->carrying_player = 0; + had_flag |= 1; + } } + + return had_flag; } void gameobject_ctf::tick() @@ -125,12 +134,14 @@ void flag::snap(int snapping_client) if(spawntick != -1) return; - obj_flag *flag = (obj_flag *)snap_new_item(OBJTYPE_FLAG, id, sizeof(obj_flag)); + obj_flag *flag = (obj_flag *)snap_new_item(OBJTYPE_FLAG, team, sizeof(obj_flag)); flag->x = (int)pos.x; flag->y = (int)pos.y; flag->team = team; flag->carried_by = -1; - if(carrying_player) + if(at_stand) + flag->carried_by = -2; + else if(carrying_player) flag->carried_by = carrying_player->client_id; } diff --git a/src/game/server/srv_ctf.h b/src/game/server/srv_ctf.h index e7bc93ab..37f3cfb0 100644 --- a/src/game/server/srv_ctf.h +++ b/src/game/server/srv_ctf.h @@ -9,7 +9,7 @@ public: virtual void tick(); virtual void on_player_spawn(class player *p); - virtual void on_player_death(class player *victim, class player *killer, int weapon); + virtual int on_player_death(class player *victim, class player *killer, int weapon); }; // TODO: move to seperate file |