Index | FAQ | Search | Memberlist | Usergroups | Profile | Log in to check your private messages | Log in | Register

Unknown Command

| Inside3d Forums Forum Index -> QuakeC Programming

View previous topic :: View next topic
Author | Message
--- | ---
smd Joined: 23 Sep 2007 Posts: 23 |

Posted: Sat Oct 06, 2007 4:10 pm Post subject: Unknown Command |

hi! is there such a command in dp? i highlighted it red, cause i dont want that the grunt gib a corpse. if (killed or shoot by a grunt) self.health=0;
else if (killed or shoot by the player)
self.health=25;
self.th_stand = SUB_Null;
self.th_walk = SUB_Null;
self.th_run = SUB_Null;
self.th_pain = SUB_Gib;
self.th_die = army_really_die;
self.th_melee = SUB_Null;
self.th_missile = SUB_Null;
self.takedamage= DAMAGE_YES;
self.flags = self.flags &! FL_MONSTER;

Back to top |

Dr. Shadowborg Inside3D Staff Joined: 16 Oct 2004 Posts: 726 |

Posted: Sun Oct 07, 2007 3:59 pm Post subject: |

If what you're asking is for the grunt to lose interest in a corpse, then all you have to do is set the classname of whatever's become a corpse to well, "corpse" and then have a check in ai_run() (it's in ai.qc) to make sure that what it's attacking is NOT a corpse.
_________________
"Roboto suggests Plasma Bazooka."

Back to top |

smd Joined: 23 Sep 2007 Posts: 23 |

Posted: Sun Oct 07, 2007 8:20 pm Post subject: |

worksssssss thank u very much!!! great forum

Back to top |

leileilol Joined: 15 Oct 2004 Posts: 1321 |

Posted: Sun Oct 07, 2007 8:24 pm Post subject: |

Don't just thank 'u'. Also thank 'y' and 'o'. _________________

Back to top |

Sajt Joined: 16 Oct 2004 Posts: 1026 |

Posted: Sun Oct 07, 2007 9:36 pm Post subject: Re: Unknown Command |

smd wrote:
self.flags = self.flags &! FL_MONSTER;

Are you actually doing this?
It may work for the case where FL_MONSTER is the only flag set, but what it actually does is remove ALL flags.
FL_MONSTER = 32
!FL_MONSTER = 0
anything & 0 = 0
So you're setting self.flags to 0.
! (logical not) is not a substitute for ~ (bitwise complement). QuakeC doesn't have ~ because it wouldn't work so well with floats. So in QuakeC the correct way to remove a flag is:
self.flags = self.flags - (self.flags & FL_MONSTER);
Or the equivalent:
if (self.flags & FL_MONSTER)
self.flags = self.flags - FL_MONSTER;
_________________
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.

Back to top |

smd Joined: 23 Sep 2007 Posts: 23 |

Posted: Mon Oct 08, 2007 3:55 pm Post subject: |

sorry, but i need your help again i have gibbable corpses, so i can also walk through them and gib them. all works good, but sometimes suddendly all corpses become solid and i cant walk through them anymore and also all the teleporters in the map dont work then. So i cant finish shub-nigguraths pit for example, cause the teleport dont work. thats really weird!
i hope for a little help

Back to top |

smd Joined: 23 Sep 2007 Posts: 23 |

Posted: Mon Oct 08, 2007 8:39 pm Post subject: |

i found out that it has something to do with the w_fireaxe void() W_FireAxe = { local float oldsolid; local vector source;
local vector org;
makevectors (self.v_angle);
source = self.origin + '0 0 16';
if (ext_solidcorpse == TRUE)
{
oldsolid = self.solid;
self.solid = SOLID_BBOX;
}
traceline (source, source + v_forward*64, FALSE, self);
if (trace_fraction == 1.0)
return;
org = trace_endpos - v_forward*4;
if (trace_ent.takedamage)
{
trace_ent.axhitme = 1;
SpawnBlood (org, '0 0 0', 20);
T_Damage (trace_ent, self, self, 20);
}
else
{ // hit wall
sound (self, CHAN_WEAPON, "player/axhit2.wav", 1, ATTN_NORM);
WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
WriteByte (MSG_BROADCAST, TE_GUNSHOT);
WriteCoord (MSG_BROADCAST, org_x);
WriteCoord (MSG_BROADCAST, org_y);
WriteCoord (MSG_BROADCAST, org_z);
}
if (ext_solidcorpse == TRUE)
self.solid = oldsolid;
};
wihtout the red code pieces = its the original fireaxe, i cant gib the corpses.
with the red code = i can gib with the axe, but after one slash with the axe, the corpses are all solid and the teleporters dont work!

Back to top |

Sajt Joined: 16 Oct 2004 Posts: 1026 |

Posted: Mon Oct 08, 2007 11:12 pm Post subject: |

Put the second red bit before the 'if (trace_fraction == 1) return;' bit. Otherwise, everytime you miss, the player is stuck as SOLID_BBOX forever. It's customary to reset the solid right after the traceline. I usually make a function called traceline_hitcorpse to make this easy.
_________________
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.

Back to top |

smd Joined: 23 Sep 2007 Posts: 23 |

Posted: Tue Oct 09, 2007 4:46 am Post subject: |

1000 thanks again, works perfect now great

Back to top |

Display posts from previous:

| Inside3d Forums Forum Index -> QuakeC Programming | All times are GMT
Page 1 of 1

Jump to:

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Powered by phpBB © 2004 phpBB Group