From 7bfea15dd0fdac607915ce3f2d7a2ae798c98811 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Mon, 13 Dec 2021 11:47:55 -0800 Subject: [PATCH] Add base/shared/fx_corpse.qc, change set to seta in masters.lst --- base/src/shared/fx_corpse.qc | 62 ++++++++++ base/src/shared/include.src | 1 + platform/masters.lst | 130 ++++++++++---------- src/gs-entbase/shared/NSRenderableEntity.qc | 7 +- 4 files changed, 133 insertions(+), 67 deletions(-) create mode 100644 base/src/shared/fx_corpse.qc diff --git a/base/src/shared/fx_corpse.qc b/base/src/shared/fx_corpse.qc new file mode 100644 index 00000000..2c5b858f --- /dev/null +++ b/base/src/shared/fx_corpse.qc @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifdef SERVER +#define CORPSES_MAX 32 +entity g_bodies; + +void +FX_Corpse_Init(void) +{ + entity next = spawn(NSRenderableEntity); + g_bodies = next; + + for ( int i = 0; i <= CORPSES_MAX; i++ ) { + next.classname = "corpse"; + next.owner = spawn(NSRenderableEntity); + + if ( i == CORPSES_MAX ) { + next.owner = g_bodies; + } else { + next = next.owner; + } + } +} + +entity +FX_Corpse_Next(void) +{ + entity r = g_bodies; + g_bodies = g_bodies.owner; + return r; +} + +NSRenderableEntity +FX_Corpse_Spawn(player pl) +{ + NSRenderableEntity body_next = FX_Corpse_Next(); + setorigin(body_next, pl.origin + [0,0,32]); + setmodel(body_next, pl.model); + setsize(body_next, VEC_HULL_MIN, VEC_HULL_MAX); + body_next.SetMovetype(MOVETYPE_TOSS); + body_next.SetSolid(SOLID_TRIGGER); + body_next.SetModelindex(pl.modelindex); + body_next.SetAngles(pl.angles); + body_next.velocity = (pl.velocity); + body_next.colormap = pl.colormap; + return body_next; +} +#endif \ No newline at end of file diff --git a/base/src/shared/include.src b/base/src/shared/include.src index e553d040..da60fc85 100644 --- a/base/src/shared/include.src +++ b/base/src/shared/include.src @@ -13,6 +13,7 @@ fx_explosion.qc fx_gibhuman.qc fx_spark.qc fx_impact.qc +fx_corpse.qc items.h weapons.h diff --git a/platform/masters.lst b/platform/masters.lst index 24f6e900..75980f10 100644 --- a/platform/masters.lst +++ b/platform/masters.lst @@ -1,71 +1,71 @@ // Master Server Definitions -set net_master1 "master.frag-net.com:27950" -set net_master2 "" -set net_master3 "" -set net_master4 "" -set net_master5 "" -set net_master6 "" -set net_master7 "" -set net_master8 "" -set net_masterextra1 "" -set net_masterextra2 "" -set net_masterextra3 "" -set net_masterextra4 "" -set net_masterextra5 "" -set net_masterextra6 "" -set net_masterextra7 "" -set net_masterextra8 "" +seta net_master1 "master.frag-net.com:27950" +seta net_master2 "" +seta net_master3 "" +seta net_master4 "" +seta net_master5 "" +seta net_master6 "" +seta net_master7 "" +seta net_master8 "" +seta net_masterextra1 "" +seta net_masterextra2 "" +seta net_masterextra3 "" +seta net_masterextra4 "" +seta net_masterextra5 "" +seta net_masterextra6 "" +seta net_masterextra7 "" +seta net_masterextra8 "" -set net_qwmaster1 "" -set net_qwmaster2 "" -set net_qwmaster3 "" -set net_qwmaster4 "" -set net_qwmaster5 "" -set net_qwmaster6 "" -set net_qwmaster7 "" -set net_qwmaster8 "" -set net_qwmasterextra1 "" -set net_qwmasterextra2 "" -set net_qwmasterextra3 "" -set net_qwmasterextra4 "" -set net_qwmasterextra5 "" -set net_qwmasterextra6 "" -set net_qwmasterextra7 "" -set net_qwmasterextra8 "" +seta net_qwmaster1 "" +seta net_qwmaster2 "" +seta net_qwmaster3 "" +seta net_qwmaster4 "" +seta net_qwmaster5 "" +seta net_qwmaster6 "" +seta net_qwmaster7 "" +seta net_qwmaster8 "" +seta net_qwmasterextra1 "" +seta net_qwmasterextra2 "" +seta net_qwmasterextra3 "" +seta net_qwmasterextra4 "" +seta net_qwmasterextra5 "" +seta net_qwmasterextra6 "" +seta net_qwmasterextra7 "" +seta net_qwmasterextra8 "" -set net_q2master1 "" -set net_q2master2 "" -set net_q2master3 "" -set net_q2master4 "" -set net_q2master5 "" -set net_q2master6 "" -set net_q2master7 "" -set net_q2master8 "" -set net_q2masterextra1 "" -set net_q2masterextra2 "" -set net_q2masterextra3 "" -set net_q2masterextra4 "" -set net_q2masterextra5 "" -set net_q2masterextra6 "" -set net_q2masterextra7 "" -set net_q2masterextra8 "" +seta net_q2master1 "" +seta net_q2master2 "" +seta net_q2master3 "" +seta net_q2master4 "" +seta net_q2master5 "" +seta net_q2master6 "" +seta net_q2master7 "" +seta net_q2master8 "" +seta net_q2masterextra1 "" +seta net_q2masterextra2 "" +seta net_q2masterextra3 "" +seta net_q2masterextra4 "" +seta net_q2masterextra5 "" +seta net_q2masterextra6 "" +seta net_q2masterextra7 "" +seta net_q2masterextra8 "" -set net_q3master1 "" -set net_q3master2 "" -set net_q3master3 "" -set net_q3master4 "" -set net_q3master5 "" -set net_q3master6 "" -set net_q3master7 "" -set net_q3master8 "" -set net_q3masterextra1 "" -set net_q3masterextra2 "" -set net_q3masterextra3 "" -set net_q3masterextra4 "" -set net_q3masterextra5 "" -set net_q3masterextra6 "" -set net_q3masterextra7 "" -set net_q3masterextra8 "" -set net_qwmasterextraHistoric "" +seta net_q3master1 "" +seta net_q3master2 "" +seta net_q3master3 "" +seta net_q3master4 "" +seta net_q3master5 "" +seta net_q3master6 "" +seta net_q3master7 "" +seta net_q3master8 "" +seta net_q3masterextra1 "" +seta net_q3masterextra2 "" +seta net_q3masterextra3 "" +seta net_q3masterextra4 "" +seta net_q3masterextra5 "" +seta net_q3masterextra6 "" +seta net_q3masterextra7 "" +seta net_q3masterextra8 "" +seta net_qwmasterextraHistoric "" diff --git a/src/gs-entbase/shared/NSRenderableEntity.qc b/src/gs-entbase/shared/NSRenderableEntity.qc index e4191f52..73ea5668 100644 --- a/src/gs-entbase/shared/NSRenderableEntity.qc +++ b/src/gs-entbase/shared/NSRenderableEntity.qc @@ -122,6 +122,7 @@ NSRenderableEntity::SendEntity(entity ePEnt, float fChanged) } if (fChanged & BASEFL_CHANGED_MODELINDEX) { WriteShort(MSG_ENTITY, modelindex); + WriteByte(MSG_ENTITY, colormap); } if (fChanged & BASEFL_CHANGED_SOLID) { WriteByte(MSG_ENTITY, solid); @@ -139,6 +140,7 @@ NSRenderableEntity::SendEntity(entity ePEnt, float fChanged) } if (fChanged & BASEFL_CHANGED_FRAME) { WriteByte(MSG_ENTITY, frame); + WriteByte(MSG_ENTITY, frame1time); } if (fChanged & BASEFL_CHANGED_SKIN) { WriteByte(MSG_ENTITY, skin + 128); @@ -328,6 +330,7 @@ NSRenderableEntity::ReceiveEntity(float flChanged) } if (flChanged & BASEFL_CHANGED_MODELINDEX) { setmodelindex(this, readshort()); + colormap = readbyte(); } if (flChanged & BASEFL_CHANGED_SOLID) { solid = readbyte(); @@ -348,9 +351,9 @@ NSRenderableEntity::ReceiveEntity(float flChanged) maxs[2] = readcoord(); } if (flChanged & BASEFL_CHANGED_FRAME) { - frame1time = 0.0; - frame2time = 0.0f; frame = readbyte(); + frame1time = + frame2time = readbyte(); } if (flChanged & BASEFL_CHANGED_SKIN) { skin = readbyte() - 128;