Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
26.03.2001, 21:33
Madden2k



ich habe soweit ein mod fertig mit thirdperson sicht. *nun da gefällt mir was nicht*
ich habe immer den Kopf des models am fadenkreuz. :( also will ich ein laser als crosschair coden. (wie bei Ultima ass..)
dann währe noch die sich. Wie bkomme ich das hin , dass ich über das model dierekt aufs Crosschair kucken kann.
Ich würde mich freuen ein paar lösungen geposted zu bekommen.
auch als E-mail.

Enrico.J@gmx.de

--

CU
madden

zum Seitenanfang zum Seitenende Profil || Suche
001
27.03.2001, 15:00
PIII 800 mhz



Ich hab da auch ma sowas an ein Laser gedacht aber wo man auch den strahl seht und ich hab gesehn das man bei 3DSMAX den laser machen konnte nur wo mein problem dort jetzt liegt is,dass das ja nur ein licht is und das soll ja bis zur wand gehen also heist es ich muss das licht sehr sehr lang machen nur weis ich net ob das funkt.Das is mein prob mit den laser.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
27.03.2001, 15:03
Zeeke



Hi!

Ich hatte mal irgendwo ein Tut gesehen, wie man das macht, guck mal auf hlpp.valveworld.com. Wenn es das dort nicht gibt, guck mal auf anderen (englischen) Coding-Seiten.
Ich müsste das Tut auch noch auf meiner Platte haben, bin momentan noch auf der Arbeit, wenn ich zu Hause bin, kann ich es ja irgendwo hochladen, falls du es nicht gefunden hast.

Ciao

--

zum Seitenanfang zum Seitenende Profil || Suche
003
27.03.2001, 18:04
Prophyle



hehe das weiß ich dass man den Strahl auch sieht
das ist mein Code. Er ist zwar nicht der beste, weil ich es nicht geschafft habe, den Strahl durch ein extra Laserpointer Entity gehen zu lassen, aber sollte trotzdem funzen. Dabei wird jedes WeapIdle vom Server ein Event gesendet. Event genauso machen wie die normalen Schussevents.
Achtung: Auf langsameren PCs kann es unter Umständen strange aussehen!

void EV_FireLaser( event_args_t *args )
{
int idx;
vec3_t origin;
vec3_t angles;

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

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

/*

Leider nicht ganz funktionabel, ich bräuchte den Null-Vector...

// Make sure we don't have a gauss spin event in the queue for this guy
gEngfuncs.pEventAPI->EV_KillEvents( idx, "events/laser.sc" );

EV_GetGunPosition( args, vecSrc, origin );

struct cl_entity_s *v_model = gEngfuncs.GetViewModel();
struct cl_entity_s *player = gEngfuncs.GetLocalPlayer();

angles= player->angles;
origin= player->origin;

vec3_t vecNull;

AngleVectors( angles, forward, right, up );
AngleVectors( Vector( 0,0,100000 ), vecNull, right, up );

Vector vecVerschiebung;

vecVerschiebung= forward -vecNull;

vecSrc= v_model->attachment[2] +origin;
vecDest= v_model->attachment[1] +origin;

//\\Formel für Vector-drehen: P' = P + ( B -A ) * (( P -M )/(A-M))
//\\P der zu drehende Punkt, P' sein Bild
//\\A der 0-Vector, B sein Bild

vecSrc= vecSrc +( ( vecVerschiebung ) )* ( Length( vecSrc -origin ) / Length( vecViewOrig )) );
vecDest= vecDest +( ( vecVerschiebung ) )* ( Length( vecDest -origin ) / Length( vecViewOrig ) ) );
// VectorMA( origin, 8192, v_model->attachment[1] -v_model->attachment[2], vecDest );

//vecSrc= vecSrc +origin;
//vecDest= vecDest +origin;
*/
// gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/gauss2.wav", 0.5 + 2.0 * (1.0 / 400.0), ATTN_NORM, 0, 85 + gEngfuncs.pfnRandomLong( 0, 0x1f ) );

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 );

EV_GetGunPosition( args, vecSrc, origin );
AngleVectors( angles, forward, right, up );
VectorMA( vecSrc, 8192, forward, vecDest );

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

gEngfuncs.pEventAPI->EV_PopPMStates();

if ( tr.allsolid )
return;

m_iBeam = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/smoke.spr" );
gEngfuncs.pEfxAPI->R_BeamEntPoint(
idx | 0x1000,
tr.endpos,
m_iBeam, // Der sprite
0.01, // Dauer, spielt damit rum wenns STRANGE aussieht.
0.3, // Dicke
0.0, // Amplitude
128.0, // Helligkeit
0, // Schnelligkeit
0, // Startframe des Sprites
0, // Framerate
150, // Farben, red
0, // green
0 // blue
);
}

Der Code ist recht einfach zu verstehen und kann sicher noch verbessert werden.

--

Prophyle, Coder beim SGT: http://mod.famkos.de.
Delphi, C++, Qt

zum Seitenanfang zum Seitenende Profil || Suche
004
27.03.2001, 21:26
Madden2k



Danke erstmal für den Code nur leider bin ich newbe beim Coden und kann gerade mal die Hud-Farben !auswendig! ändern. Wo muss ich den Code einfügen? oda ganz ersetzen.
Beschreibe, wenn du zeit hast das nochmal genauer wie ich das einfüge. bídde.
danke

--

CU
madden

zum Seitenanfang zum Seitenende Profil || Suche
005
28.03.2001, 20:21
Prophyle



uff
na gut ich versuchs.
Aber bitte, wenn du gerade erst angefangen hast, beschwer dich nicht, dass es nicht ausfürhlich genug ist, weil das mit den Events eins von den mittelschweren Sachen schon ist!
1. Du schaust dir ein Weapon-Coding -tutorial an, da steht drin wie man Events vom Server aus ausruft(e.g. "m_usFirePython"). Ist aber auch selbst herauszufinden, schau dir mal die Python an und suche alles was im Zusammenhang steht mit m_usFirePython. Das was in PrimaryAttack steht ziehst du(mit neuem Namen) nach WeapIdle.
2. Du erzeugst in deinem Events-ordner eine Datei namens "Laser.sc". Dahinein kopierst du was in "FireGlock.sc" steht.
3. Jetzt suchst du in der client.dll nach allem was "firepython" enthält, kopierst es, fügst es darunter ein, und ersetzt "firepython" durch "Laser".
4. Und dann noch den Code von oben...

Falls irgendwelche strings von mir jetzt nicht stimmen bitte genauer anschauen, ich hab im Mom auch nicht den Überblick.

--

Prophyle, Coder beim SGT: http://mod.famkos.de.
Delphi, C++, Qt

zum Seitenanfang zum Seitenende Profil || Suche
006
28.03.2001, 20:34
TheTinySteini



Hm, das ist aber in seinem Fall nicht gut als Event zu machen (es soll ja schließlich immer da sein, oder?). Also müsste man jeden Frame ein neues Event schicken... schlecht. Jetzt weiß ich aber leider nicht, wo man sowas am besten einfügt, damit es der Client selbstständig jedes Frame ausführt. Dann brächte man nur noch ne ServerMessage, um den Beam gegebenenfalls ausschalten zu können (zum Beispiel, wenn 'n Intermission ist - ob der Spieler überhaupt Waffen hat kann man ja auch im Client überprüfen).

Achso, ja, ist das Mod Single- oder Multiplayer? Wenn nämlich Multi, dann haste ein Problem, weil die anderen den Laser nicht sehen (zumindest nicht mit der Methode, die ich kurz beschrieben hab). Da müsste man das ganze dann so umschreiben, dass der Client automatisch auch die Strahlen der anderen berechnet... ohoh... Naja, dürfte aber nicht sooo schwer sein.

@Prophyle: Was willst du da eigentlich mit dem Null-Vektor und diesem Vektor-Rumgerechne erreichen? Es geht aus dem Code irgendwie nur hervor, dass es nicht geht, aber nicht, wofür es denn gut sein soll, wenn's mal geht ;)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
007
29.03.2001, 11:53
UniSol07



Ich habe da mal was von Another1 (Hier ein grosses Danke) bekommen. Client side... Habs aber nie getestet.
Also: hier der Code:
#include "hud.h"
#include "cl_util.h"
#include "parsemsg.h"
#include "const.h"
#include "entity_state.h"
#include "cl_entity.h"
#include "entity_types.h"
#include "usercmd.h"
#include "pm_defs.h"
#include "pm_materials.h"

#include "eventscripts.h"
#include "ev_hldm.h"

#include "r_efx.h"
#include "event_api.h"
#include "event_args.h"
#include "in_defs.h"

#include "def_engine.h"
#include "alert.h"
#include "../dlls/beretta.h"
#include "../dlls/fnfal.h"
#include "../dlls/steyer.h"
#include "laser_sight.h"

bool fLaserSightOn[256]; // Just store the player
laser sight things here !
int *pLaserSight[256]; // just store the laser
sight here !
bool fAllocated[256]; // is the target glow
sprite allocated

model_s *pLaserModel = NULL;

// this is the clientside laser sight code, done
by another1, yeah cool, right ?

void MsgFunc_LaserSight(const char *pszName, int
iSize, void *pbuf)
{
BEGIN_READ(pbuf,iSize);

bool fState = READ_BYTE();
int iPlayer = READ_BYTE();
fLaserSightOn[iPlayer] = fState;

if(!GetLaserSight(iPlayer)) // Alloc laser sight
here first
{
int iModelIndex;
if(!pLaserModel)
pLaserModel = ENG_CL_LOAD_MODEL(
"sprites/laserdot.spr", &iModelIndex);
if(pLaserModel)
{
float vecOrigin[3] = {0,0,0};

pLaserSight[iPlayer] =
(int*)EFX_CL_TEMP_ENT_ALLOC(vecOrigin,pLaserModel
;
fAllocated[iPlayer] = true;
};

};

if(!fState && GetLaserSight(iPlayer))
{
GetLaserSight(iPlayer)->entity.baseline.effects
|= EF_NODRAW;
GetLaserSight(iPlayer)->entity.curstate.effects
|= EF_NODRAW;
GetLaserSight(iPlayer)->entity.prevstate.effect
|= EF_NODRAW;
GetLaserSight(iPlayer)->entity.curstate.renderf
= kRenderFxNone;
GetLaserSight(iPlayer)->entity.curstate.renderm
de = kRenderTransAdd;
GetLaserSight(iPlayer)->entity.curstate.rendera
t = 180;
VectorRGBSet((GetLaserSight(iPlayer)->entity.cu
state.rendercolor),255,0,0);

GetLaserSight(iPlayer)->entity.prevstate.render
x = kRenderFxNone;
GetLaserSight(iPlayer)->entity.prevstate.render
ode = kRenderTransAdd;
GetLaserSight(iPlayer)->entity.prevstate.render
mt = 180;
VectorRGBSet((GetLaserSight(iPlayer)->entity.pr
vstate.rendercolor),255,0,0);

GetLaserSight(iPlayer)->entity.baseline.renderf
= kRenderFxNone;
GetLaserSight(iPlayer)->entity.baseline.renderm
de = kRenderTransAdd;
GetLaserSight(iPlayer)->entity.baseline.rendera
t = 180;
VectorRGBSet((GetLaserSight(iPlayer)->entity.ba
eline.rendercolor),255,0,0);

};


// ALERT(at_console,"Player %d switched the laser
sight %s",(int)iPlayer,(fState) ? "ON" : "OFF");
};
-------------------------------
Sorry, die Darstellung ist etwas chaotisch... Und meiner Meinung nach sind ein paar Dinge abgeschnitten (ICQ?). Ausserdem hat es drei Header-Files, die ich bei mir nicht sofort gefunden habe (Beretta.h und folgende)

Ich wäre froh, wenn Another1 dazu mal etwas schreiben würde... Thx!

--

Play HL and have fun

zum Seitenanfang zum Seitenende Profil || Suche
008
29.03.2001, 16:05
Madden2k



danke für eure antworten. Also ich will es so machen, dass der Spieler das wie beim RPG sieht. das würde schon genügen. Nix mit laser den jader sehen soll. Hat schonmal einer Ultima 9 gespielt dort ist das gut gelungen.

wenn ich bei dieser gelegenheit sagen darf ich suche noch Leide für den Mod:

Coder (mitden ich mir den Kopf darüber zerbrechen kann)
Modeler (dringend gesucht und bekommen genaue anweisung zum aussehen und animationen)
Mapper

Aber naja wenn fragen oder Modmithelfer mitmachen wollen dann schaut mal forbei:

Enrico.J@gmx.de
ICQ#: 85761293

CU

--

CU
madden

zum Seitenanfang zum Seitenende Profil || Suche
009
29.03.2001, 18:59
Another1



Jo .. also da fehlt ein wichtiger header glaub ich
def_engine.h
der is auf meiner homepage under dools:
HalfLife Code 1.1 oder so heißt das ding

http://members.tripod.de/another1_real

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
010
29.03.2001, 21:27
Prophyle



cool, danke!

Also wenn ich das in Worten mal zusammenfassen darf:
-ich nehme mal an, dass GetLaserSight pLaserSight zurückgibt!

1. Eine Waffe schickt an den client die Message "lasersight".
2. Wenn der Laser ausgeschaltet werden soll, wird fState auf true gesetzt.
3. Falls die Message zum erstenmal gesendet wird, erzeugt die DLL das Laser-Strahl-model, speichert seine Adresse.
4. Nun wird der Laser abhängig von fState und pLaserSight gezeichnet, d.h. er wird mit rendermodes etc. versehen.

Fragen:
Die Lasersight-models werden abhängig von der Player-anzahl also immer mitgeschleppt, auch wenn sie ein Player gar nicht aktiviert hat. Trotzdem geht das IMO nicht auf die Frames, weil das Model nicht gezeichnet wird?!

Wo wird die Position des Laser-models innerhalb der World dargestellt?

Wie sieht die laser.h aus?

--

Prophyle, Coder beim SGT: http://mod.famkos.de.
Delphi, C++, Qt

zum Seitenanfang zum Seitenende Profil || Suche
011
29.03.2001, 22:40
Madden2k



jo nagut ich bekomme da ja nichts mehr mit blablabla schön dass ihr mit so viele antworten geschickt habt aba ich sehe da nicht mehr durch. ich breuchte jemand der mir einfach die client.dll schickt wo das schon eingbaut ist.
aba naja dank nochmals.

ICQ# 85761293
E-Mail: Enrico.J@gmx.de

--

CU
madden

zum Seitenanfang zum Seitenende Profil || Suche
012
02.04.2001, 18:21
Prophyle



Eure Antworten sind echt interessant...

--

Prophyle, Coder beim SGT: http://mod.famkos.de.
Delphi, C++, Qt

zum Seitenanfang zum Seitenende Profil || Suche
013
18.04.2001, 11:38
PIII 800 mhz



Unisol7 können wir ma über icq reden wegen den code ich kapier das net gescheit auf jeden fall hier is scho ma meine 84808939

--

zum Seitenanfang zum Seitenende Profil || Suche