FAILED QC coding by me: Segfault! (func_cherryblossompetal)

Developer discussion of experimental fixes, changes, and improvements.

Moderators: Nexuiz Moderators, Moderators

FAILED QC coding by me: Segfault! (func_cherryblossompetal)

Postby tundramagi » Fri Apr 24, 2009 3:38 am

(EDIT: Updated the diffs, still a failure)
FAILED QC coding by me: Segfault!
I tried to implement a suggested feature (downwardly floating cherry blossoms), but since I am a garbage crap coder, who lives off the government dole because he has no talents and no future, I failed because I suck.

Here's the segfault when loading a map containing 4 func_cherryblossompetal (s):
Nexuiz wrote:Mod_Q3BSP_LoadTriangles: invalid vertexindex 0 (0 vertices), setting to 0
Mod_Q3BSP_LoadTriangles: invalid vertexindex 1 (0 vertices), setting to 0
Mod_Q3BSP_LoadTriangles: invalid vertexindex 2 (0 vertices), setting to 0
Mod_Q3BSP_LoadTriangles: invalid vertexindex 0 (0 vertices), setting to 0
Mod_Q3BSP_LoadTriangles: invalid vertexindex 2 (0 vertices), setting to 0
Mod_Q3BSP_LoadTriangles: invalid vertexindex 3 (0 vertices), setting to 0
sh: line 1: 11482 Segmentation fault ~/stuff/nexuiz/Nexuiz/../darkplaces/nexuiz-sdl -game temp


Addition to effectsinfo.txt:
Code: Select all
// func_cherryblossompetal effect, used to inditcate japan.
// used in qcsrc/server/g_triggers.qc:   self.effects = EF_CHERRYBLOSSOMPETAL
effect EF_CHERRYBLOSSOMPETAL
count 75
type static
color 0xf12353 0xf12353
size 1.0 2.0
alpha 64 128 128
gravity 0.1
airfriction 0.2
liquidfriction 0.8
originjitter 16 16 64
velocityjitter 32 32 0
//lightradius 200
//lighttime 0
//lightcolor 0.4 0.9 0.9


Diff of the qcsrc dir:
Code: Select all
Index: server/g_triggers.qc
===================================================================
--- server/g_triggers.qc   (revision 6583)
+++ server/g_triggers.qc   (working copy)
@@ -1624,3 +1624,11 @@
{
   self.use = trigger_disablerelay_use;
}
+
+
+void spawnfunc_func_cherryblossompetal()
+{
+   self.effects = EF_CHERRYBLOSSOMPETAL;
+}
+
+
Index: server/extensions.qh
===================================================================
--- server/extensions.qh   (revision 6583)
+++ server/extensions.qh   (working copy)
@@ -183,6 +183,14 @@
//description:
//entity emits bouncing sparkles in every direction

+//DP_EF_CHERRYBLOSSOMPETAL
+//idea: DivVerent
+//darkplaces implementation: a04191b92fbd93aa67214ef7e72d6d2e
+//effects bit:
+float   EF_CHERRYBLOSSOMPETAL     = 4294967296;
+//description:
+//entity emits cherry blossom petals in a downwardly direction, as is prudent
+
//DP_EF_TELEPORT_BIT
//idea: id software
//darkplaces implementation: div0
Index: client/csqc_constants.qc
===================================================================
--- client/csqc_constants.qc   (revision 6583)
+++ client/csqc_constants.qc   (working copy)
@@ -107,6 +107,7 @@
const float    EF_STARDUST                  = 2048;

const float    EF_NOSHADOW                  = 4096;

const float    EF_NODEPTHTEST               = 8192;

+const float    EF_CHERRYBLOSSOMPETAL            = 4294967296;



// Quake Player Flag Constants

const float    PFL_ONGROUND               = 1;



Diff of the darkplaces dir:
Code: Select all
Index: sv_main.c
===================================================================
--- sv_main.c   (revision 8939)
+++ sv_main.c   (working copy)
@@ -196,6 +196,7 @@
   "TE_TEI_BIGEXPLOSION",
   "TE_TEI_PLASMAHIT",
   "EF_STARDUST",
+   "EF_CHERRYBLOSSOMPETAL",
   "TR_ROCKET",
   "TR_GRENADE",
   "TR_BLOOD",
@@ -1042,7 +1043,7 @@
      specialvisibilityradius = max(specialvisibilityradius, glowsize * 4);
   if (flags & RENDER_GLOWTRAIL)
      specialvisibilityradius = max(specialvisibilityradius, 100);
-   if (effects & (EF_BRIGHTFIELD | EF_MUZZLEFLASH | EF_BRIGHTLIGHT | EF_DIMLIGHT | EF_RED | EF_BLUE | EF_FLAME | EF_STARDUST))
+   if (effects & (EF_BRIGHTFIELD | EF_MUZZLEFLASH | EF_BRIGHTLIGHT | EF_DIMLIGHT | EF_RED | EF_BLUE | EF_FLAME | EF_STARDUST | EF_CHERRYBLOSSOMPETAL))
   {
      if (effects & EF_BRIGHTFIELD)
         specialvisibilityradius = max(specialvisibilityradius, 80);
@@ -1060,6 +1061,8 @@
         specialvisibilityradius = max(specialvisibilityradius, 250);
      if (effects & EF_STARDUST)
         specialvisibilityradius = max(specialvisibilityradius, 100);
+      if (effects & EF_CHERRYBLOSSOMPETAL)
+         specialvisibilityradius = max(specialvisibilityradius, 250);
   }

   // early culling checks
Index: cl_main.c
===================================================================
--- cl_main.c   (revision 8939)
+++ cl_main.c   (working copy)
@@ -1079,7 +1079,7 @@
   // entity is in the world...
   trailtype = EFFECT_NONE;
   // LordHavoc: if the entity has no effects, don't check each
-   if (e->render.effects & (EF_BRIGHTFIELD | EF_FLAME | EF_STARDUST))
+   if (e->render.effects & (EF_BRIGHTFIELD | EF_FLAME | EF_STARDUST | EF_CHERRYBLOSSOMPETAL))
   {
      if (e->render.effects & EF_BRIGHTFIELD)
      {
@@ -1090,6 +1090,8 @@
      }
      if (e->render.effects & EF_FLAME)
         CL_ParticleTrail(EFFECT_EF_FLAME, bound(0, cl.time - cl.oldtime, 0.1), origin, origin, vec3_origin, vec3_origin, NULL, 0, false, true);
+      if (e->render.effects & EF_CHERRYBLOSSOMPETAL)
+         CL_ParticleTrail(EFFECT_EF_CHERRYBLOSSOMPETAL, bound(0, cl.time - cl.oldtime, 0.1), origin, origin, vec3_origin, vec3_origin, NULL, 0, false, true);
      if (e->render.effects & EF_STARDUST)
         CL_ParticleTrail(EFFECT_EF_STARDUST, bound(0, cl.time - cl.oldtime, 0.1), origin, origin, vec3_origin, vec3_origin, NULL, 0, false, true);
   }
@@ -1293,7 +1295,7 @@
   dlightcolor[1] = 0;
   dlightcolor[2] = 0;
   // LordHavoc: if the entity has no effects, don't check each
-   if (e->render.effects & (EF_BRIGHTFIELD | EF_DIMLIGHT | EF_BRIGHTLIGHT | EF_RED | EF_BLUE | EF_FLAME | EF_STARDUST))
+   if (e->render.effects & (EF_BRIGHTFIELD | EF_DIMLIGHT | EF_BRIGHTLIGHT | EF_RED | EF_BLUE | EF_FLAME | EF_STARDUST | EF_CHERRYBLOSSOMPETAL))
   {
      if (e->render.effects & EF_BRIGHTFIELD)
      {
@@ -1331,6 +1333,8 @@
      }
      if (e->render.effects & EF_FLAME)
         CL_ParticleTrail(EFFECT_EF_FLAME, 0, origin, origin, vec3_origin, vec3_origin, NULL, 0, true, false);
+      if (e->render.effects & EF_CHERRYBLOSSOMPETAL)
+         CL_ParticleTrail(EFFECT_EF_CHERRYBLOSSOMPETAL, 0, origin, origin, vec3_origin, vec3_origin, NULL, 0, true, false);   
      if (e->render.effects & EF_STARDUST)
         CL_ParticleTrail(EFFECT_EF_STARDUST, 0, origin, origin, vec3_origin, vec3_origin, NULL, 0, true, false);
   }
Index: protocol.h
===================================================================
--- protocol.h   (revision 8939)
+++ protocol.h   (working copy)
@@ -73,6 +73,7 @@
#define EF_ZOMGIB            536870912   // small blood trail
#define EF_TRACER2            1073741824   // orange split trail + rotate
#define EF_TRACER3            0x80000000   // purple trail
+#define EF_CHERRYBLOSSOMPETAL         0x100000000   // cherry blossom petals

// internaleffects bits (no overlap with EF_ bits):
#define INTEF_FLAG1QW            1
Index: cl_particles.c
===================================================================
--- cl_particles.c   (revision 8939)
+++ cl_particles.c   (working copy)
@@ -409,6 +409,7 @@
   "TE_TEI_BIGEXPLOSION",
   "TE_TEI_PLASMAHIT",
   "EF_STARDUST",
+   "EF_CHERRYBLOSSOMPETAL",
   "TR_ROCKET",
   "TR_GRENADE",
   "TR_BLOOD",
@@ -954,6 +955,13 @@
         CL_NewParticle(pt_static, 0x903010, 0xFFD030, tex_particle, 4, 0, lhrandom(64, 128), 128, 1, 0, lhrandom(originmins[0], originmaxs[0]), lhrandom(originmins[1], originmaxs[1]), lhrandom(originmins[2], originmaxs[2]), lhrandom(velocitymins[0], velocitymaxs[0]), lhrandom(velocitymins[1], velocitymaxs[1]), lhrandom(velocitymins[2], velocitymaxs[2]), 0.2, 0.8, 16, 128, true, 0, 1, PBLEND_ADD, PARTICLE_BILLBOARD);
      CL_AllocLightFlash(NULL, &tempmatrix, 200, 1.0f, 0.7f, 0.3f, 0, 0, 0, -1, true, 1, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
   }
+   else if (effectnameindex == EFFECT_EF_CHERRYBLOSSOMPETAL)
+   {
+      count *= 200 * cl_particles_quality.value;
+      while (count-- > 0)
+         CL_NewParticle(pt_static, 0x903010, 0xFFD030, tex_particle, 4, 0, lhrandom(64, 128), 128, 1, 0, lhrandom(originmins[0], originmaxs[0]), lhrandom(originmins[1], originmaxs[1]), lhrandom(originmins[2], originmaxs[2]), lhrandom(velocitymins[0], velocitymaxs[0]), lhrandom(velocitymins[1], velocitymaxs[1]), lhrandom(velocitymins[2], velocitymaxs[2]), 0.2, 0.8, 16, 128, true, 0, 1, PBLEND_ADD, PARTICLE_BILLBOARD);
+      CL_AllocLightFlash(NULL, &tempmatrix, 200, 1.0f, 0.7f, 0.3f, 0, 0, 0, -1, true, 1, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
+   }
   else if (!strncmp(particleeffectname[effectnameindex], "TR_", 3))
   {
      vec3_t dir, pos;
Index: client.h
===================================================================
--- client.h   (revision 8939)
+++ client.h   (working copy)
@@ -1332,6 +1332,7 @@
   EFFECT_TE_TEI_BIGEXPLOSION,
   EFFECT_TE_TEI_PLASMAHIT,
   EFFECT_EF_STARDUST,
+   EFFECT_EF_CHERRYBLOSSOMPETAL,
   EFFECT_TR_ROCKET,
   EFFECT_TR_GRENADE,
   EFFECT_TR_BLOOD,



I am a failure.
Last edited by tundramagi on Fri Apr 24, 2009 4:20 am, edited 1 time in total.
tundramagi
Forum addon
 
Posts: 974
Joined: Sun Jan 04, 2009 4:53 pm

Postby tundramagi » Fri Apr 24, 2009 3:51 am

O, I have to edit the engine stuff too.
tundramagi
Forum addon
 
Posts: 974
Joined: Sun Jan 04, 2009 4:53 pm

Postby [-z-] » Fri Apr 24, 2009 4:01 am

maybe if you rethought the tone of this message it wouldn't be in the trash and someone would offer to help you.
[-z-]
Site Admin and Nexuiz Ninja
 
Posts: 1794
Joined: Mon Nov 13, 2006 12:20 am
Location: Florida

Postby tundramagi » Fri Apr 24, 2009 4:03 am

And I should use a diffrent value.
tundramagi
Forum addon
 
Posts: 974
Joined: Sun Jan 04, 2009 4:53 pm

Postby tundramagi » Fri Apr 24, 2009 4:13 am

Hmm, I don't think there's room in the bitmask for another effect.
tundramagi
Forum addon
 
Posts: 974
Joined: Sun Jan 04, 2009 4:53 pm

gdb's opinion

Postby tundramagi » Fri Apr 24, 2009 4:38 am

gdb's opinion:
Code: Select all
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212258624 (LWP 13649)]
0x0810aa08 in ?? ()
(gdb)


Code: Select all
(gdb) bt
#0  0x0810aa08 in ?? ()
#1  0x0cf5b5c8 in ?? ()
#2  0x0cf6044c in ?? ()
#3  0x00000000 in ?? ()
(gdb)



(Happens when loading the map with the new function, and only when loading said map (there are no problems with regular maps etc))
tundramagi
Forum addon
 
Posts: 974
Joined: Sun Jan 04, 2009 4:53 pm


Return to Nexuiz - Development

Who is online

Users browsing this forum: No registered users and 1 guest

cron