From 0049f48c3808d0b410eaea28aee84a70a448fdca Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Sun, 12 Jun 2011 16:26:11 +0200 Subject: [PATCH] Waypointsprites for vehicles --- models/sprites/vehicle_frame0.tga | Bin 0 -> 65580 bytes models/sprites/vehicle_frame1.tga | Bin 0 -> 65580 bytes qcsrc/server/vehicles/vehicles.qc | 112 +++++++++++++++++++++++++----- 3 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 models/sprites/vehicle_frame0.tga create mode 100644 models/sprites/vehicle_frame1.tga diff --git a/models/sprites/vehicle_frame0.tga b/models/sprites/vehicle_frame0.tga new file mode 100644 index 0000000000000000000000000000000000000000..0864bcb80e7d99eac84a2459c1ebc747eeb01362 GIT binary patch literal 65580 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 NcFCN%7tTIC{10P{1a|-c literal 0 HcmV?d00001 diff --git a/models/sprites/vehicle_frame1.tga b/models/sprites/vehicle_frame1.tga new file mode 100644 index 0000000000000000000000000000000000000000..073354de3416543b10d46521597f715733370898 GIT binary patch literal 65580 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 literal 0 HcmV?d00001 diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index 69c0f87e5..7400dc142 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -684,16 +684,6 @@ void vehicles_damage(entity inflictor, entity attacker, float damage, float deat } } -void vehicles_return() -{ - pointparticles(particleeffectnum("teleport"), self.enemy.origin + '0 0 64', '0 0 0', 1); - - self.enemy.think = vehicles_spawn; - self.enemy.nextthink = time; - - remove(self); -} - void vehicles_clearrturn() { entity ret; @@ -705,25 +695,115 @@ void vehicles_clearrturn() { ret.classname = ""; ret.think = SUB_Remove; - ret.nextthink = time + 0.1; + ret.nextthink = time + 0.1; + + if(ret.waypointsprite_attached) + WaypointSprite_Kill(ret.waypointsprite_attached); + return; } ret = ret.chain; } } +void vehicles_return() +{ + pointparticles(particleeffectnum("teleport"), self.enemy.origin + '0 0 64', '0 0 0', 1); + + self.enemy.think = vehicles_spawn; + self.enemy.nextthink = time; + + if(self.waypointsprite_attached) + WaypointSprite_Kill(self.waypointsprite_attached); + + remove(self); +} + +void vehicles_showwp_goaway() +{ + if(self.waypointsprite_attached) + WaypointSprite_Kill(self.waypointsprite_attached); + + remove(self); + +} + +void vehicles_showwp() +{ + entity oldself; + + if(self.cnt) + { + self.think = vehicles_return; + self.nextthink = self.cnt; + } + else + { + self.think = vehicles_return; + self.nextthink = time +1; + + oldself = self; + self = spawn(); + setmodel(self, "null"); + self.team = oldself.enemy.team; + self.enemy = oldself.enemy; + setorigin(self, oldself.enemy.pos1); + + self.nextthink = time + 5; + self.think = vehicles_showwp_goaway; + } + + WaypointSprite_Spawn("vehicle", 0, 0, self, '0 0 64', world, 0, self, waypointsprite_attached, TRUE); + if(self.waypointsprite_attached) + { + + if(teams_matter && self.team) + WaypointSprite_UpdateTeamRadar(self.waypointsprite_attached, RADARICON_POWERUP, TeamColor(self.team)); + else + WaypointSprite_UpdateTeamRadar(self.waypointsprite_attached, RADARICON_POWERUP, '1 1 1'); + + WaypointSprite_UpdateRule(self.waypointsprite_attached, self.enemy.team, SPRITERULE_DEFAULT); + if(oldself == world) + { + WaypointSprite_UpdateBuildFinished(self.waypointsprite_attached, self.nextthink); + dprint("Oldies is goldies\n"); + } + + WaypointSprite_Ping(self.waypointsprite_attached); + } + + if(oldself != world) + self = oldself; +} + void vehicles_setreturn() { entity ret; - + vehicles_clearrturn(); ret = spawn(); ret.classname = "vehicle_return"; - ret.enemy = self; - ret.think = vehicles_return; - ret.nextthink = time + self.vehicle_respawntime; -} + ret.enemy = self; + ret.team = self.team; + ret.think = vehicles_showwp; + + if(self.deadflag != DEAD_NO) + { + ret.cnt = time + self.vehicle_respawntime; + ret.nextthink = min(time + self.vehicle_respawntime, time + self.vehicle_respawntime - 5); + } + else + { + ret.nextthink = min(time + self.vehicle_respawntime, time + self.vehicle_respawntime - 1); + } + + + + setmodel(ret, "null"); + setorigin(ret, self.pos1 + '0 0 96'); + +} void vehicles_configcheck(string configname, float check_cvar) { -- 2.39.2