Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
08.09.2001, 20:10
Retro



Moin, also mir gehts um nen Laserstrahl.

Das ganze soll für eine Waffe sein, der Laser soll sich vom "gesicht" aus bis zum auftreffen auf nen Gegenstand hinziehen. Es soll eine Zielhilfe sein, also soll er auch keinen Schden anrichten.

Aber irgendwie wird das nichts. Wenn ich nen Teil aus dem Gauss Quellcode nehmen, passiert garnichts, oder HL stürzt ab.
Dann hab ich mir mal den env_laser angeguckt, aber es passiert wieder nichts.

Ich hab den Code erstmal in die PrimaryAttack gestzt, nur um zu gucken ob es funzt. Ich schätze dannach kommt es in die Idle...
Aber dazu muss es erstmal funktionieren =\

--

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
001
08.09.2001, 20:22
Zeeke



Ich glaub bei http://hlpp.valveworld.com gab es ein Tut für genau sowas..., ansonsten mal so die anderen Seiten wie www.planethalflife.com/hlprogramming etc anschaun....

--

zum Seitenanfang zum Seitenende Profil || Suche
002
08.09.2001, 23:31
The_Overmind



Mach da raus ein Event!
Guck dir das Gauss Event an, da is der Code für den Laser Client-Seitig drinne. Seit SDK 2.0 is im Server Code kein Laser mehr bei der Gauss.

--

zum Seitenanfang zum Seitenende Profil || Suche
003
09.09.2001, 01:22
Retro



Hmpf, ich hab schon fast den fesamten CGauss::Fire() Code da drinne gehabt, aber getan hat sich garnichts =(

--

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
004
09.09.2001, 11:40
The_Overmind



Zitat:

Seit SDK 2.0 is im Server Code kein Laser mehr bei der Gauss.

Folglich: Wenn du den CGauss:Fire() Code kopierst, wird trotzdem nichts passieren. Es sei den du greifst auf das Event zu. Aber da du kein Laser kriegst, glaub ich das eher nicht.

in der ev_hldm.cpp:

Quellcode:
void EV_FireLaser( event_args_t *args )
{
int idx;
vec3_t origin;
vec3_t angles;
vec3_t velocity;
float flDamage = 9;       //setz da ein was du willst

int m_iWeaponVolume = GAUSS_PRIMARY_FIRE_VOLUME;
vec3_t vecSrc;
vec3_t vecDest;
pmtrace_t tr, beam_tr;
physent_t *pEntity;
int m_iBeam;
vec3_t up, right, forward;

idx = args->entindex;
VectorCopy( args->origin, origin );
VectorCopy( args->angles, angles );
VectorCopy( args->velocity, velocity );

EV_GetGunPosition( args, vecSrc, origin );

m_iBeam = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/lgtning.spr" );    //Oder irgendeinanderes Sprite

AngleVectors( angles, forward, right, up );

VectorMA( vecSrc, 8192, forward, vecDest );

if ( EV_IsLocal( idx ) )
{
gEngfuncs.pEventAPI->EV_WeaponAnimation( MP5_FIRE2, 2 );
}

gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/hks1.wav", 1, ATTN_NORM, 0, 94 + gEngfuncs.pfnRandomLong( 0, 0xf ) ); //kannst auch irgendein anderen Sound nehmen, musst du nur in deiner Waffe precachen

gEngfuncs.pEventAPI->EV_SetUpPlayerPrediction( false, true );

// Store off the old count
gEngfuncs.pEventAPI->EV_PushPMStates();

// Now add in all of the players.
gEngfuncs.pEventAPI->EV_SetSolidPlayers ( idx - 1 );

gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
gEngfuncs.pEventAPI->EV_PlayerTrace( vecSrc, vecDest, PM_STUDIO_BOX, -1, &tr );

gEngfuncs.pEventAPI->EV_PopPMStates();

pEntity = gEngfuncs.pEventAPI->EV_GetPhysent( tr.ent );

if ( EV_IsLocal( idx ) )
{
// Add muzzle flash to current weapon model
EV_MuzzleFlash();
}

gEngfuncs.pEfxAPI->R_BeamEntPoint(
origin + up * 15,    //ungefähre Gesichtsposi
tr.endpos,
m_iBeam,
0.1, //Life
0.7, // Width * 50
0.20, // Noise * 100
255.0, //Brightness
0, 0, 0, 255, // Red
0, // Green
0 // BLue
);

//Decal
EV_HLDM_DecalGunshot( &tr, BULLET_MONSTER_12MM );
}

So da hast du schon mal dein Event
oben in der ev_hldm.cpp musst du noch die Zeile
Quellcode:
void EV_FireLaser( struct event_args_s *args  );

bei den andern Events einfügen und in der hl_events.cpp machst du das ganze nochmal. Nun sollt das funken.
Natürlich musst du von deiner Server Waffe das Event noch aufrufen.

Hoffe das hilft dir.
MfG
[-XHP-]he Overmind

--


Dieser Beitrag wurde am 09.09.2001 um 11:42 von The_Overmind bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
09.09.2001, 12:55
McMapper



ahm sorr ich blick noch nicht ganz durch wenn du evtl den event aufruf in der server.dll noch posten könntest ? ich hab selbst auch ne waffe gemacht, nur wenn ich sie mir heute so anschaue finde ich da Playback event oder so dann die firebullets aber nichts was auf die EV_firem14 auf client zugreift ... nun ich bin etwas ratlos :) danke im vorraus !
[EDIT]
so da isses
PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usm14 );

ist das m_usm14 was ? ka irgendwie kommt es auch beim precache event vor.. *nix raff
[EDIT]

--


Dieser Beitrag wurde am 09.09.2001 um 12:57 von McMapper bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
09.09.2001, 15:22
Retro



Ok, ich verstehe nun wie man das mit dem Event mach - Thx!
Aber irgendwas ist am Laser verkehrt, jedenfalls stimmen die Parameter nicht:Quellcode:--------------------Konfiguration: cl_dll - Win32 Debug--------------------
Kompilierung läuft...
ev_hldm.cpp
C:\Half-Life\Sdk\SourceCode\cl_dll\ev_hldm.cpp(1320) : error C2664: 'struct beam_s *(int,float *,int,float,float,float,float,float,int,float,float,float,float)' : Konvertierung des Parameters 1 von 'class Vector' in 'int' nicht moeglich
        Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
Fehler beim Ausführen von cl.exe.

client.dll - 1 Fehler, 0 Warnung(en)

Hmm, ich werd mal suchen wo der gleiche Aufruf stattfindet, und mir die Parameter dort mal angucken.

--

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
007
09.09.2001, 17:16
The_Overmind



ach sooo ja klar

du musst da statt "origin + up * 15" "idx | 0x1000" einsetzen
is zwar die Waffen Posi, aber damit sollte das erstmal laufen ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
008
09.09.2001, 20:16
[UHK]Hostage



Macht hier jemand einen Elite Force : Assimilation Remake?
Würd mich interressieren. Wenn ihr das hingekriegt habt postet bitte mal so eine Art tut oder einen Linka auf ein solches.. danke!

--

============================
Ich hasse diese nervigen Signaturen!

zum Seitenanfang zum Seitenende Profil || Suche
009
09.09.2001, 20:26
Retro



Erm, was hat das bitte mit nem Laserstrahl zu tun? lol

Aber es funktioniert, jedenfalls lässt es sich kompilieren ;)
Wie soll ich das aber aufrufen? Ich hab es so probiert wie die FireBullets aufgerufen werden, das geht leider ent.

Ansonsten hab ich mir die anderen Events aus der ev_hldm.cpp angeguckt, aber nirgends was zum abgucken in der hl.dll gefunden?

--

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
010
11.09.2001, 15:02
Retro



Ist das so schwierig, oder einfach nur lächerlich einfach? =(

(Sorry, konnte alten Post net mehr editieren)

--

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
011
23.09.2001, 21:41
afrobnullsiebenelf



das würde mich aber auch mal interesieren!
Hats jetzt geklappt? Wenn ja Wie genau?

--

$> su -c "rm -rf /"
Tu es!

zum Seitenanfang zum Seitenende Profil || Suche