Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.04.2002, 22:03
[fragless]Spirit



ich hab so aus einer laune heraus mal alle projektilwaffen in halflife so umgecoded, dass sie sichtbare kugeln verschießen... neue klasse CBullet.
soweit so gut... aber unter umständen passiert es hin und wieder, daß kugeln einfach in der luft hängen bleiben (hauptsächlich beim abschießen anderer player).
ich vermute, daß die kugel in dem fall zu denken aufhört ohne removed worden zu sein.

schnipsel:

void CBullet::BulletTouch( CBaseEntity *pOther )
{
if (pev->owner==pOther->pev->owner)
{
pev->velocity=m_v;
pev->speed=m_s;
return;
}

SetTouch( NULL );
SetThink( NULL );

if (pOther->pev->takedamage)
{
TraceResult tr = UTIL_GetGlobalTrace( );
entvars_t *pevOwner;

pevOwner = VARS( pev->owner );

// UNDONE: this needs to call TraceAttack instead
ClearMultiDamage( );

switch(m_iBulletType)
{
default:
case BULLET_PLAYER_9MM:
pOther->TraceAttack(pevOwner, gSkillData.plrDmg9MM, pev->velocity.Normalize(), &tr, DMG_BULLET);
break;

case BULLET_PLAYER_MP5:
pOther->TraceAttack(pevOwner, gSkillData.plrDmgMP5, pev->velocity.Normalize(), &tr, DMG_BULLET);
break;

case BULLET_PLAYER_BUCKSHOT:
// make distance based!
pOther->TraceAttack(pevOwner, gSkillData.plrDmgBuckshot, pev->velocity.Normalize(), &tr, DMG_BULLET);
break;

case BULLET_PLAYER_357:
pOther->TraceAttack(pevOwner, gSkillData.plrDmg357, pev->velocity.Normalize(), &tr, DMG_BULLET);
break;

case BULLET_NONE: // FIX
pOther->TraceAttack(pevOwner, 50, pev->velocity.Normalize(), &tr, DMG_CLUB);
// only decal glass
if ( !FNullEnt(tr.pHit) && VARS(tr.pHit)->rendermode != 0)
{
UTIL_DecalTrace( &tr, DECAL_GLASSBREAK1 + RANDOM_LONG(0,2) );
}

break;
}

ApplyMultiDamage( pev, pevOwner );

pev->velocity = Vector( 0, 0, 0 );
switch( RANDOM_LONG(0,1) )
{
case 0:
EMIT_SOUND(ENT(pev), CHAN_BODY, "weapons/xbow_hitbod1.wav", 1, ATTN_NORM); break;
case 1:
EMIT_SOUND(ENT(pev), CHAN_BODY, "weapons/xbow_hitbod2.wav", 1, ATTN_NORM); break;
}

if ( !g_pGameRules->IsMultiplayer() )
{
Killed( pev, GIB_NEVER );
}
}
else
{
EMIT_SOUND_DYN(ENT(pev), CHAN_BODY, "weapons/xbow_hit1.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 98 + RANDOM_LONG(0,7));

SetThink( SUB_Remove );
pev->nextthink = gpGlobals->time;

if ( FClassnameIs( pOther->pev, "worldspawn" )||FClassnameIs( pOther->pev, "func_wall" ) )
{
// if what we hit is static architecture, can stay around for a while.
Vector vecDir = pev->velocity.Normalize( );
UTIL_SetOrigin( pev, pev->origin - vecDir * 12 );
pev->angles = UTIL_VecToAngles( vecDir );
pev->solid = SOLID_NOT;
pev->movetype = MOVETYPE_FLY;
pev->velocity = Vector( 0, 0, 0 );
pev->avelocity.z = 0;
pev->angles.z = RANDOM_LONG(0,360);
pev->nextthink = gpGlobals->time + 10.0;
}
}

--

Jeder der Rechtschreibsfehler findet darf
... 1.) diese behalten
... 2.) sie sich merken damit er sie nicht selber macht
... 3.) Microsoft verklagen, weil deren Rechtschreibprüfung versagt hat
Co-Programmer & Mapper for Paroxysm - Alien Encounters

zum Seitenanfang zum Seitenende Profil || Suche
001
17.04.2002, 13:32
[fragless]Spirit



ist die frage so blöd oder so gefinkelt daß keiner antwortet?
hmm.. ich vermisse die flame-posts also vermutlich nicht so blöd.

--

Jeder der Rechtschreibsfehler findet darf
... 1.) diese behalten
... 2.) sie sich merken damit er sie nicht selber macht
... 3.) Microsoft verklagen, weil deren Rechtschreibprüfung versagt hat
Co-Programmer & Mapper for Paroxysm - Alien Encounters

zum Seitenanfang zum Seitenende Profil || Suche
002
17.04.2002, 13:43
Retro



Vermutlich hat absolut niemand lust den Source zu lesen?!

Du musst drauf achten das dein Bullet auch entfernt wird wenn es ein Entity (=Monster, Player...) getroffen hat.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
003
17.04.2002, 13:49
Archangel



if ( !g_pGameRules->IsMultiplayer() )
{
Killed( pev, GIB_NEVER );
}

entferne die abfrage, also dass da nur steht:
Killed(pev, GIB_NEVER);

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
004
17.04.2002, 22:15
[fragless]Spirit



argh... doch blöd!
mich packt daß verlangen kopf voran gegen eine steinmauer zu springen

--

Jeder der Rechtschreibsfehler findet darf
... 1.) diese behalten
... 2.) sie sich merken damit er sie nicht selber macht
... 3.) Microsoft verklagen, weil deren Rechtschreibprüfung versagt hat
Co-Programmer & Mapper for Paroxysm - Alien Encounters

zum Seitenanfang zum Seitenende Profil || Suche