From: Samual Lenks Date: Mon, 3 Sep 2012 03:38:06 +0000 (-0400) Subject: Complete implementation of mutator hooks for vehicles X-Git-Tag: xonotic-v0.7.0~240^2~57 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=ac827e4407d4da0c8df2c862c3e0707e9f8e0a7d Complete implementation of mutator hooks for vehicles --- diff --git a/qcsrc/server/mutators/base.qh b/qcsrc/server/mutators/base.qh index 52e7a8811..f9a23e5f8 100644 --- a/qcsrc/server/mutators/base.qh +++ b/qcsrc/server/mutators/base.qh @@ -231,15 +231,15 @@ MUTATOR_HOOKABLE(VehicleEnter); // called when a player enters a vehicle // allows mutators to set special settings in this event // INPUT - entity other; // player - entity self; // vehicle + entity vh_player; // player + entity vh_vehicle; // vehicle MUTATOR_HOOKABLE(VehicleExit); // called when a player exits a vehicle // allows mutators to set special settings in this event // INPUT - entity other; // player - entity self; // vehicle + entity vh_player; // player + entity vh_vehicle; // vehicle MUTATOR_HOOKABLE(AbortSpeedrun); // called when a speedrun is aborted and the player is teleported back to start position diff --git a/qcsrc/server/mutators/gamemode_ctf.qc b/qcsrc/server/mutators/gamemode_ctf.qc index 342f52983..c7749293c 100644 --- a/qcsrc/server/mutators/gamemode_ctf.qc +++ b/qcsrc/server/mutators/gamemode_ctf.qc @@ -1185,18 +1185,18 @@ MUTATOR_HOOKFUNCTION(ctf_HelpMePing) MUTATOR_HOOKFUNCTION(ctf_VehicleEnter) { - if(other.flagcarried) + if(vh_player.flagcarried) { if(!autocvar_g_ctf_flagcarrier_allow_vehicle_carry) { - ctf_Handle_Throw(self, world, DROP_NORMAL); + ctf_Handle_Throw(vh_player, world, DROP_NORMAL); } else { - setattachment(other.flagcarried, self, ""); - setorigin(other, VEHICLE_FLAG_OFFSET); - other.flagcarried.scale = VEHICLE_FLAG_SCALE; - //other.flagcarried.angles = '0 0 0'; + setattachment(vh_player.flagcarried, vh_vehicle, ""); + setorigin(vh_player.flagcarried, VEHICLE_FLAG_OFFSET); + vh_player.flagcarried.scale = VEHICLE_FLAG_SCALE; + //vh_player.flagcarried.angles = '0 0 0'; } } @@ -1205,12 +1205,12 @@ MUTATOR_HOOKFUNCTION(ctf_VehicleEnter) MUTATOR_HOOKFUNCTION(ctf_VehicleExit) { - if(self.owner.flagcarried) + if(vh_player.flagcarried) { - setattachment(self.owner.flagcarried, self.owner, ""); - setorigin(self.owner.flagcarried, FLAG_CARRY_OFFSET); - self.owner.flagcarried.scale = FLAG_SCALE; - self.owner.flagcarried.angles = '0 0 0'; + setattachment(vh_player.flagcarried, vh_player, ""); + setorigin(vh_player.flagcarried, FLAG_CARRY_OFFSET); + vh_player.flagcarried.scale = FLAG_SCALE; + vh_player.flagcarried.angles = '0 0 0'; } return 0; diff --git a/qcsrc/server/vehicles/bumblebee.qc b/qcsrc/server/vehicles/bumblebee.qc index a445f12ce..4b0f1d13a 100644 --- a/qcsrc/server/vehicles/bumblebee.qc +++ b/qcsrc/server/vehicles/bumblebee.qc @@ -242,7 +242,11 @@ void bumb_gunner_exit(float _exitflag) self.hud = HUD_NORMAL; self.switchweapon = self.vehicle.switchweapon; - // FIXCTF TODO + vh_player = self; + vh_vehicle = self.vehicle; + MUTATOR_CALLHOOK(VehicleExit); + self = vh_player; + self.vehicle = vh_vehicle; self.vehicle.vehicle_hudmodel.viewmodelforclient = self.vehicle; @@ -326,7 +330,11 @@ float bumb_gunner_enter() CSQCVehicleSetup(other, other.hud); - // FIXCTF TODO + vh_player = other; + vh_vehicle = _gun; + MUTATOR_CALLHOOK(VehicleEnter); + other = vh_player; + _gun = vh_vehicle; return TRUE; } diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index 4364b54fa..16a339e09 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -659,7 +659,11 @@ void vehicles_enter() CSQCVehicleSetup(self.owner, self.hud); + vh_player = other; + vh_vehicle = self; MUTATOR_CALLHOOK(VehicleEnter); + other = vh_player; + self = vh_vehicle; self.vehicle_enter(); antilag_clear(other); @@ -795,10 +799,12 @@ void vehicles_exit(float eject) if(!teamplay) _vehicle.team = 0; else - - self.team = self.tur_head.team; - + + vh_player = _player; + vh_vehicle = _vehicle; MUTATOR_CALLHOOK(VehicleExit); + _player = vh_player; + _vehicle = vh_vehicle; _vehicle.team = _vehicle.tur_head.team;