Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
04.01.2002, 16:06
Grom



So da bin ich mal wieder *g*:

Also ich will es so machen, dass ich die Schockwelle vom Houndeye in meine Waffe eincode.. nur das wenn ich das als Noob versuche so um die 30 Fehler erscheinen, ich hab das jetzt auf 15 Fehler runtergeschraubt, aber ich kanns glaube ich vergessen!

Vorschläge von euch, wie ich das machen könnte??

Ich hab das so gemacht:

Ich hab in der "hl_weapons" die Zeile "CRpgshock g_Rpgshock;" hinzugefügt...
Als nächstes habe ich versucht das Parameter des Shockangriffs in der neuen "rpgshock.cpp" einzubinden:

Code unverändert:
//=========================================================
// SonicAttack
//=========================================================
void CHoundeye :: SonicAttack ( void )
{
float flAdjustedDamage;
float flDist;

switch ( RANDOM_LONG( 0, 2 ) )
{
case 0: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast1.wav", 1, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast2.wav", 1, ATTN_NORM); break;
case 2: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast3.wav", 1, ATTN_NORM); break;
}

// blast circles
MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16);
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16 + HOUNDEYE_MAX_ATTACK_RADIUS / .2); // reach damage radius over .3 seconds
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

WRITE_BYTE( 255 ); //brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16);
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16 + ( HOUNDEYE_MAX_ATTACK_RADIUS / 2 ) / .2); // reach damage radius over .3 seconds
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

WRITE_BYTE( 255 ); //brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();

CBaseEntity *pEntity = NULL;
// iterate on all entities in the vicinity.
while ((pEntity = UTIL_FindEntityInSphere( pEntity, pev->origin, HOUNDEYE_MAX_ATTACK_RADIUS )) != NULL)
{
if ( pEntity->pev->takedamage != DAMAGE_NO )
{
if ( !FClassnameIs(pEntity->pev, "monster_houndeye") )
{// houndeyes don't hurt other houndeyes with their attack

// houndeyes do FULL damage if the ent in question is visible. Half damage otherwise.
// This means that you must get out of the houndeye's attack range entirely to avoid damage.
// Calculate full damage first

if ( SquadCount() > 1 )
{
// squad gets attack bonus.
flAdjustedDamage = gSkillData.houndeyeDmgBlast + gSkillData.houndeyeDmgBlast * ( HOUNDEYE_SQUAD_BONUS * ( SquadCount() - 1 ) );
}
else
{
// solo
flAdjustedDamage = gSkillData.houndeyeDmgBlast;
}

flDist = (pEntity->Center() - pev->origin).Length();

flAdjustedDamage -= ( flDist / HOUNDEYE_MAX_ATTACK_RADIUS ) * flAdjustedDamage;

if ( !FVisible( pEntity ) )
{
if ( pEntity->IsPlayer() )
{
// if this entity is a client, and is not in full view, inflict half damage. We do this so that players still
// take the residual damage if they don't totally leave the houndeye's effective radius. We restrict it to clients
// so that monsters in other parts of the level don't take the damage and get pissed.
flAdjustedDamage *= 0.5;
}
else if ( !FClassnameIs( pEntity->pev, "func_breakable" ) && !FClassnameIs( pEntity->pev, "func_pushable" ) )
{
// do not hurt nonclients through walls, but allow damage to be done to breakables
flAdjustedDamage = 0;
}
}

//ALERT ( at_aiconsole, "Damage: %f\n", flAdjustedDamage );

if (flAdjustedDamage > 0 )
{
pEntity->TakeDamage ( pev, pev, flAdjustedDamage, DMG_SONIC | DMG_ALWAYSGIB );
}
}
}
}
}

Mein veränderter Code:

//=========================================================
// SonicAttack
//=========================================================
void CHoundeye :: SonicAttack ( void )
{
float flAdjustedDamage;
float flDist;

switch ( RANDOM_LONG( 0, 2 ) )
{
case 0: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast1.wav", 1, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast2.wav", 1, ATTN_NORM); break;
case 2: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast3.wav", 1, ATTN_NORM); break;
}

// blast circles
MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

WRITE_BYTE( 255 ); //brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );

WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

WRITE_BYTE( 255 ); //brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();

CBaseEntity *pEntity = NULL;
// iterate on all entities in the vicinity.
while ((pEntity = UTIL_FindEntityInSphere( pEntity, pev->origin, HOUNDEYE_MAX_ATTACK_RADIUS )) != NULL)
{

{
// squad gets attack bonus.
flAdjustedDamage = gSkillData.houndeyeDmgBlast + gSkillData.houndeyeDmgBlast * ( HOUNDEYE_SQUAD_BONUS * ( SquadCount() - 1 ) );
}
else
{
// solo
flAdjustedDamage = gSkillData.houndeyeDmgBlast;
}

flDist = (pEntity->Center() - pev->origin).Length();

flAdjustedDamage -= ( flDist / HOUNDEYE_MAX_ATTACK_RADIUS ) * flAdjustedDamage;

if ( !FVisible( pEntity ) )
{
if ( pEntity->IsPlayer() )
{
// if this entity is a client, and is not in full view, inflict half damage. We do this so that players still
// take the residual damage if they don't totally leave the houndeye's effective radius. We restrict it to clients
// so that monsters in other parts of the level don't take the damage and get pissed.
flAdjustedDamage *= 0.5;
}
else if ( !FClassnameIs( pEntity->pev, "func_breakable" ) && !FClassnameIs( pEntity->pev, "func_pushable" ) )
{
// do not hurt nonclients through walls, but allow damage to be done to breakables
flAdjustedDamage = 0;
}
}

//ALERT ( at_aiconsole, "Damage: %f\n", flAdjustedDamage );

if (flAdjustedDamage > 0 )
{
pEntity->TakeDamage ( pev, pev, flAdjustedDamage, DMG_SONIC | DMG_ALWAYSGIB );
}
}
}
}
}

Was soll ich tun, damit das geeeht?? *bäääähhh* *heul* :D

--

zum Seitenanfang zum Seitenende Profil || Suche
001
04.01.2002, 18:34
Grom



na kommt schon, so lang ist der Source nicht, um das durchzulesen, und soviel Text kann das auch nicht sein! :D

cu, grom

--

zum Seitenanfang zum Seitenende Profil || Suche
002
04.01.2002, 19:04
Archangel



ähm, also du willst das bei der RPG eincoden ?

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16);
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16 + HOUNDEYE_MAX_ATTACK_RADIUS / .2); // reach damage radius over .3 seconds
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

das sind die wichtigen zeilen, die musst du halt an der stelle einfügen, wo das projectile des rpgs detoniert (in der rpg.cpp mal nach TE_EXPLOSION suchen), und in dieser funkk einnfügen

--

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
003
04.01.2002, 20:14
Grom



also ok, ichh hab das jetzt mal gemacht wie du sagtest, allerdings gibts nüx, was TE_Explosion heisst...

Aber ich habe das jetzt so eingesetzt:

1.

void CRpgRocket :: IgniteThink( void )
{
// pev->movetype = MOVETYPE_TOSS;

pev->movetype = MOVETYPE_FLY;
pev->effects |= EF_LIGHT;

// make rocket sound
EMIT_SOUND( ENT(pev), CHAN_VOICE, "weapons/rocket1.wav", 1, 0.5 );

// rocket trail
MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY );

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16);
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16 + HOUNDEYE_MAX_ATTACK_RADIUS / .2); // reach damage radius over .3 seconds
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

MESSAGE_END(); // move PHS/PVS data sending into here (SEND_ALL, SEND_PVS, SEND_PHS)

m_flIgniteTime = gpGlobals->time;

// set to follow laser spot
SetThink( FollowThink );
pev->nextthink = gpGlobals->time + 0.1;
}

2.

void CRpgRocket :: RocketTouch ( CBaseEntity *pOther )
{
if ( m_pLauncher )
{
// my launcher is still around, tell it I'm dead.
m_pLauncher->m_cActiveRockets--;
}

MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16);
WRITE_COORD( pev->origin.x);
WRITE_COORD( pev->origin.y);
WRITE_COORD( pev->origin.z + 16 + HOUNDEYE_MAX_ATTACK_RADIUS / .2); // reach damage radius over .3 seconds
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); // framerate
WRITE_BYTE( 2 ); // life
WRITE_BYTE( 16 ); // width
WRITE_BYTE( 0 ); // noise

WriteBeamColor();

STOP_SOUND( edict(), CHAN_VOICE, "weapons/rocket1.wav" );
ExplodeTouch( pOther );
}

Jedoch geht beides nicht! :(

hätte noch jemand einen Vorschlag?

cu, grom

PS: diesmal gabts aber schonmal keine Errors :D

PPS: die Explosion kommt immer noch, muss ichj die vielleicht ausschalten?

--

zum Seitenanfang zum Seitenende Profil || Suche
004
04.01.2002, 20:39
Exec



ja such einfach nen nem wert, der die größe der explosion betimmt und setzt den auf 0 *G* dann merkste nix und siehst nix ... oder aba (is gleube ich die bessere lösung) du klammerst den teil einfach aus ...

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
005
05.01.2002, 10:02
[GeF]Duke



man Grom
Der code den ich dir gab war _richtig_ und zwar würde so eine Druckwelle dadurch kommen

--

llllllll»NewbZ«llllllll
----»HL-Hellsing-Mod «----
Wir suchen noch members ^_^

zum Seitenanfang zum Seitenende Profil || Suche
006
05.01.2002, 12:59
Grom



es kommt keine Atom explosion, es kommt KEINE druckwelle!!!!!
teste das bei dir, und schick mir die client.dll zu, aber bei mir gehts nicht!

--

zum Seitenanfang zum Seitenende Profil || Suche
007
05.01.2002, 13:19
[GeF]Duke



o man
doch net die Client.dll
ich hab dir den Code meines alten Mods gegeben und dort gehts

--

llllllll»NewbZ«llllllll
----»HL-Hellsing-Mod «----
Wir suchen noch members ^_^

zum Seitenanfang zum Seitenende Profil || Suche
008
05.01.2002, 13:43
Grom



boing, ich will deinen Alten mod aber nicht :( ich will nur die rpg.cpp mit druckwelle!!! oder noch besser mit der shockattack von den Houndeyes!!

--

zum Seitenanfang zum Seitenende Profil || Suche
009
06.01.2002, 19:43
schlomo



Wenn mich nicht alles täuscht, ist die rpg.cpp aber trotzdem nicht in der Client.dll....MOD hin oder her...

--

zum Seitenanfang zum Seitenende Profil || Suche
010
06.01.2002, 20:21
Jonathan Dark



das stimmt alle Waffen sind in der hl.dll. In der Client.dll werden nur Decals wie einschusslöcher und Patronenauswurf gesteuert werden. Aber da die RPG keine Patronen auswürft und Einschusslöcher hinterlässt(die Explosionsflecken haben nur was mit der ammo zu tun) ist eigentlich nix in der Client.dll.

--

Ach wie gut das niemand weiss, dass ich undercover-bild-redakteur heiss... :P
---------------------------------------
BTS_Splitta:lighting is noch voll fürn arsch...
-Sir_Pepe-:Mach mich nicht arbeitslos.

zum Seitenanfang zum Seitenende Profil || Suche