X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fbumblebee_weapons.qc;h=1114c11025d436d2aa33669ad4c0ebc328528ddf;hp=5838b7358a6e37d383b32cc828e169e2aacaf881;hb=5fd24f44d110c8a0c308ca7eab5be987bb9c49a5;hpb=a8cc9eb71b0d0e44e9a968a9cf5554f6226cc838 diff --git a/qcsrc/common/vehicles/vehicle/bumblebee_weapons.qc b/qcsrc/common/vehicles/vehicle/bumblebee_weapons.qc index 5838b7358..1114c1102 100644 --- a/qcsrc/common/vehicles/vehicle/bumblebee_weapons.qc +++ b/qcsrc/common/vehicles/vehicle/bumblebee_weapons.qc @@ -1,12 +1,14 @@ #ifndef VEHICLE_BUMBLEBEE_WEAPONS_H #define VEHICLE_BUMBLEBEE_WEAPONS_H -#include "../../weapons/all.qh" +#include #endif #ifdef IMPLEMENTATION +REGISTER_NET_LINKED(ENT_CLIENT_BUMBLE_RAYGUN) + #ifdef SVQC float autocvar_g_vehicle_bumblebee_cannon_cost; @@ -17,7 +19,7 @@ float autocvar_g_vehicle_bumblebee_cannon_speed; float autocvar_g_vehicle_bumblebee_cannon_spread; float autocvar_g_vehicle_bumblebee_cannon_force; -float bumble_raygun_send(entity to, int sf); +bool bumble_raygun_send(entity this, entity to, int sf); void bumblebee_fire_cannon(entity _gun, string _tagname, entity _owner) { @@ -25,17 +27,17 @@ void bumblebee_fire_cannon(entity _gun, string _tagname, entity _owner) vehicles_projectile(EFFECT_BIGPLASMA_MUZZLEFLASH.eent_eff_name, SND(VEH_BUMBLEBEE_FIRE), v, normalize(v_forward + randomvec() * autocvar_g_vehicle_bumblebee_cannon_spread) * autocvar_g_vehicle_bumblebee_cannon_speed, autocvar_g_vehicle_bumblebee_cannon_damage, autocvar_g_vehicle_bumblebee_cannon_radius, autocvar_g_vehicle_bumblebee_cannon_force, 0, - DEATH_VH_BUMB_GUN, PROJECTILE_BUMBLE_GUN, 0, true, true, _owner); + DEATH_VH_BUMB_GUN.m_id, PROJECTILE_BUMBLE_GUN, 0, true, true, _owner); } -float bumble_raygun_send(entity to, float sf) -{SELFPARAM(); - WriteByte(MSG_ENTITY, ENT_CLIENT_BUMBLE_RAYGUN); +bool bumble_raygun_send(entity this, entity to, float sf) +{ + WriteHeader(MSG_ENTITY, ENT_CLIENT_BUMBLE_RAYGUN); WriteByte(MSG_ENTITY, sf); if(sf & BRG_SETUP) { - WriteByte(MSG_ENTITY, num_for_edict(self.realowner)); + WriteByte(MSG_ENTITY, etof(self.realowner)); WriteByte(MSG_ENTITY, self.realowner.team); WriteByte(MSG_ENTITY, self.cnt); } @@ -61,10 +63,10 @@ float bumble_raygun_send(entity to, float sf) #ifdef CSQC -void bumble_raygun_draw(); +void bumble_raygun_draw(entity this); -void bumble_raygun_read(bool bIsNew) -{SELFPARAM(); +NET_HANDLE(ENT_CLIENT_BUMBLE_RAYGUN, bool isnew) +{ int sf = ReadByte(); if(sf & BRG_SETUP) @@ -78,7 +80,7 @@ void bumble_raygun_read(bool bIsNew) else self.colormod = '0 1 0'; - self.traileffect = particleeffectnum(EFFECT_BUMBLEBEE_HEAL_MUZZLEFLASH); + self.traileffect = EFFECT_BUMBLEBEE_HEAL_MUZZLEFLASH.m_id; self.lip = particleeffectnum(EFFECT_BUMBLEBEE_HEAL_IMPACT); self.draw = bumble_raygun_draw; @@ -99,22 +101,24 @@ void bumble_raygun_read(bool bIsNew) self.move_origin_y = ReadCoord(); self.move_origin_z = ReadCoord(); } + return true; } -void bumble_raygun_draw() -{SELFPARAM(); +.float bumble_raygun_nextdraw; +void bumble_raygun_draw(entity this) +{ float _len; vector _dir; vector _vtmp1, _vtmp2; - _len = vlen(self.origin - self.move_origin); - _dir = normalize(self.move_origin - self.origin); + _len = vlen(this.origin - this.move_origin); + _dir = normalize(this.move_origin - this.origin); - if(self.total_damages < time) + if(this.bumble_raygun_nextdraw < time) { - boxparticles(self.traileffect, self, self.origin, self.origin + _dir * -64, _dir * -_len , _dir * -_len, 1, PARTICLES_USEALPHA); - boxparticles(self.lip, self, self.move_origin, self.move_origin + _dir * -64, _dir * -200 , _dir * -200, 1, PARTICLES_USEALPHA); - self.total_damages = time + 0.1; + boxparticles(particleeffectnum(Effects_from(this.traileffect)), this, this.origin, this.origin + _dir * -64, _dir * -_len , _dir * -_len, 1, PARTICLES_USEALPHA); + boxparticles(this.lip, this, this.move_origin, this.move_origin + _dir * -64, _dir * -200 , _dir * -200, 1, PARTICLES_USEALPHA); + this.bumble_raygun_nextdraw = time + 0.1; } float i, df, sz, al; @@ -123,19 +127,19 @@ void bumble_raygun_draw() df = DRAWFLAG_NORMAL; //((random() < 0.5) ? DRAWFLAG_ADDITIVE : DRAWFLAG_SCREEN); sz = 5 + random() * 5; al = 0.25 + random() * 0.5; - _vtmp1 = self.origin + _dir * _len * (0.25 + i); - _vtmp1 += (randomvec() * (_len * 0.2) * (frametime * 2)); //self.raygun_l1; - Draw_CylindricLine(self.origin, _vtmp1, sz, "gfx/colors/white.tga", 1, 1, self.colormod, al, df, view_origin); + _vtmp1 = this.origin + _dir * _len * (0.25 + i); + _vtmp1 += (randomvec() * (_len * 0.2) * (frametime * 2)); //this.raygun_l1; + Draw_CylindricLine(this.origin, _vtmp1, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin); - _vtmp2 = self.origin + _dir * _len * (0.5 + i); - _vtmp2 += (randomvec() * (_len * 0.2) * (frametime * 5)); //self.raygun_l2; - Draw_CylindricLine(_vtmp1, _vtmp2, sz, "gfx/colors/white.tga", 1, 1, self.colormod, al, df, view_origin); + _vtmp2 = this.origin + _dir * _len * (0.5 + i); + _vtmp2 += (randomvec() * (_len * 0.2) * (frametime * 5)); //this.raygun_l2; + Draw_CylindricLine(_vtmp1, _vtmp2, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin); - _vtmp1 = self.origin + _dir * _len * (0.75 + i); - _vtmp1 += randomvec() * (_len * 0.2) * (frametime * 10); //self.raygun_l3; - Draw_CylindricLine(_vtmp2, _vtmp1, sz, "gfx/colors/white.tga", 1, 1, self.colormod, al, df, view_origin); + _vtmp1 = this.origin + _dir * _len * (0.75 + i); + _vtmp1 += randomvec() * (_len * 0.2) * (frametime * 10); //this.raygun_l3; + Draw_CylindricLine(_vtmp2, _vtmp1, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin); - Draw_CylindricLine(_vtmp1, self.move_origin + randomvec() * 32, sz, "gfx/colors/white.tga", 1, 1, self.colormod, al, df, view_origin); + Draw_CylindricLine(_vtmp1, this.move_origin + randomvec() * 32, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin); } }