Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
31.12.2000, 11:27
Basman



Ich weis ,das ich nicht viel weis, desshalb muss ich fragen.
Kann mir den jemand sagen wie dei Einschusslöcher bei einer neuen Waffe einstelle, und das es so eine Rauchwolke wie in Couterstreik gibt, wenn man auf eine bestimmte Textur schießt?

--

www.GamersScene.de

zum Seitenanfang zum Seitenende Profil || Suche
001
31.12.2000, 14:30
feigling



Das steht glaube ich in der materials.txt. Die musst du suchen und dort kannst du einstellen, was die Textur machen soll, wenn man drauf schießt.
Steht aber auch genau in der datei, wie man das einstellt

--

zum Seitenanfang zum Seitenende Profil || Suche
002
31.12.2000, 15:18
Another1



Das hat rein garnichts mit materials.txt zu tun. Du musst das coden. Entweder du schaust dir mal die EV_Fire*** (z.B.: EV_FireGlock) Functionen an, die in der evhldm.cpp in deiner client.dll sind, bzw. die EV_HLDM_FireBullets functio (alles auch clientside) oder, wenn du es serverside haben willst, in der mp.dll/hl.dll in der CBaseEntity::FireBullets function. Serverside musste ein Tempentity TE_SMOKE machen, clientside eine der neuen Enginefunctions benutzen (ich weiß wie, hab jetzt aber keine Lust ALLES zu erklären).
Wenns nich weiterhilft, sorry =/

--

Another1

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

zum Seitenanfang zum Seitenende Profil || Suche
003
31.12.2000, 15:30
apfelkorn



würde mich übrigens auch interessieren, auf welche engine-funktion du da zugreifen willst.

--

zum Seitenanfang zum Seitenende Profil || Suche
004
31.12.2000, 15:32
Basman



Ah, danke, habs mit den Rauchwolken gefunden.
Ich hab jetzt eine Neue Waffe gecoded, aber sie macht jetzt keine Einschusslöcher in die Wand. Was ist falsch?

--

www.GamersScene.de

zum Seitenanfang zum Seitenende Profil || Suche
005
31.12.2000, 17:42
Another1



@apfelkorn und alle anderen die es interresiert:

ok, hier is mein code:
hab keine lust zu erklären, aber ich glaube man sieht wie es funzt:
(es ist viel code, ich weiß, aber das meiste is nur ein switch(iTextureType)

void EV_HLDM_GunshotDecalSprite(pmtrace_t* pTrace,char texture_type)
{
int iRand;
physent_t *pe;

bool sparks = false;int particles = FALSE;bool decal = true;int sprite = false;
float spr_scale = 1.5f;
float spr_renderamt = RANDOM_FLOAT(70,120);
float spr_life = 4;
float spr_framerate = 12;
char decalName[32]; // stores the decal name

color24 spr_color = {255,255,255};
color24 prt_color = {0,0,0};

int prt_count = 15;

iRand = RANDOM_LONG(0,4);
switch( iRand)
{
case 0: gEngfuncs.pEventAPI->EV_PlaySound( -1, pTrace->endpos, 0, SOUND_BULLET_MISS1, 1.0, ATTN_NORM, 0, PITCH_NORM ); break;
case 1: gEngfuncs.pEventAPI->EV_PlaySound( -1, pTrace->endpos, 0, SOUND_BULLET_RICOCHET1, 1.0, ATTN_NORM, 0, PITCH_NORM ); break;
case 2: gEngfuncs.pEventAPI->EV_PlaySound( -1, pTrace->endpos, 0, SOUND_BULLET_RICOCHET2, 1.0, ATTN_NORM, 0, PITCH_NORM ); break;
// case 3: gEngfuncs.pEventAPI->EV_PlaySound( -1, pTrace->endpos, 0, "weapons/ric4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM ); break;
// case 4: gEngfuncs.pEventAPI->EV_PlaySound( -1, pTrace->endpos, 0, "weapons/ric5.wav", 1.0, ATTN_NORM, 0, PITCH_NORM ); break;
default:
// NO SOUND!
break;
}

pe = gEngfuncs.pEventAPI->EV_GetPhysent( pTrace->ent );

switch(texture_type) { // texture types
case CHAR_TEX_CONCRETE:
sparks = false;
particles = true;
decal = true;
if (RANDOM_FLOAT(0,1))
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_1);
else
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_2);

sprintf( decalName, "{bullet_normal");
spr_color.r = 220;
spr_color.g = 210;
spr_color.b = 215;
spr_renderamt = RANDOM_FLOAT(60,100);
spr_framerate = 25;
break;
case CHAR_TEX_METAL :
sparks = true;
particles = false;
decal = true;
sprite = false;

sprintf( decalName, "{bullet_metal");
spr_scale = 0.4f;
spr_renderamt = RANDOM_FLOAT(60,80);
spr_framerate = 12;
break;
case CHAR_TEX_DIRT :
sparks = false;
particles = true;
decal = true;
if (RANDOM_FLOAT(0,1))
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_1);
else
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_2);

sprintf( decalName, "{bullet_normal");
spr_color.r = 118;
spr_color.g = 98;
spr_color.b = 67;
spr_scale = 3.2f;
spr_life = 4;
spr_framerate = 8;
spr_renderamt = RANDOM_FLOAT(80,100);
break;
case CHAR_TEX_VENT :
sparks = true;
particles = true;
decal = true;
sprite = false;

sprintf( decalName, "{bullet_metal");
spr_scale = 0.8f;
spr_renderamt = RANDOM_FLOAT(60,80);
spr_framerate = 12;
break;
case CHAR_TEX_GRATE :
sparks = true;
particles = false;
decal = true;
sprite = false;

sprintf( decalName, "{bullet_metal");
spr_scale = 0.4f;
spr_renderamt = RANDOM_FLOAT(60,80);
spr_framerate = 12;
break;
case CHAR_TEX_TILE :
sparks = false;
particles = true;
decal = true;
if (RANDOM_FLOAT(0,1))
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_1);
else
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_2);

sprintf( decalName, "{bullet_normal");
spr_color.r = 255;
spr_color.g = 255;
spr_color.b = 255;
spr_scale = 1.8f;
prt_color.r = 100;
prt_color.g = 100;
prt_color.b = 100;
break;
case CHAR_TEX_SLOSH :
sparks = false;
particles = true;
decal = true;
if (RANDOM_FLOAT(0,1))
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_1);
else
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_2);

sprintf( decalName, "{bullet_normal");
spr_color.r = 220;
spr_color.g = 50;
spr_color.b = 10;
prt_color.r = 10;
prt_color.g = 15;
prt_color.b = 170;
break;
case CHAR_TEX_WOOD :
sparks = false;
particles = true;
decal = true;
if (RANDOM_FLOAT(0,1))
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_1);
else
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_2);

if (RANDOM_LONG(0,4))
{
sprintf( decalName, "{bullet_wood");
}
else
{
if (RANDOM_LONG(0,1))
sprintf( decalName, "{dent%d",RANDOM_LONG(3,4));
else
sprintf( decalName, "{dent6");

};
spr_color.r = 145;
spr_color.g = 103;
spr_color.b = 72;
spr_scale = 1.75f;
spr_renderamt = RANDOM_FLOAT(100,120);
spr_framerate = 18;

prt_color.r = 100;
prt_color.g = 70;
prt_color.b = 55;
break;
case CHAR_TEX_COMPUTER:
sparks = true;
particles = false;
decal = true;
sprite = false;

sprintf( decalName, "{bullet_normal");
prt_color.r = 255;
prt_color.g = 255;
prt_color.b = 255;
break;
case CHAR_TEX_GLASS :
sparks = false;
particles = true;
decal = true;
sprite = false;

sprintf( decalName, "{bullet_normal");
prt_color.r = 255;
prt_color.g = 255;
prt_color.b = 255;
break;
case CHAR_TEX_FLESH :
sparks = false;
particles = true;
decal = true;
if (RANDOM_FLOAT(0,1))
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_1);
else
sprite = EV_FIND_MODEL_INDEX(MODEL_WALL_PUFF_2);

sprintf( decalName, "{bullet_normal");
spr_color.r = 255;
spr_color.g = 50;
spr_color.b = 10;
spr_scale = 2.1f;
prt_color.r = 255;
prt_color.g = 40;
prt_color.b = 20;
break;
};

TEMPENTITY *pHitEffect;

if(particles) // ( float * pos, int size, int color, float life );
EFX_R_BULLET_IMPACT_PARTICLES( pTrace->endpos);//, 1, EFX_R_LOOKUP_COLOR(prt_color.r,prt_color.g,prt_color.b), 2 );

if(sprite)
{
vec3_t vecDir,vecStart;
VectorScale(pTrace->plane.normal,3,vecDir);
VectorAdd(pTrace->endpos,vecDir,vecStart);
pHitEffect = EFX_R_TEMP_SPRITE( vecStart, pTrace->plane.normal, spr_scale, sprite, kRenderGlow, kRenderFxNoDissipation, RANDOM_FLOAT(70,120), spr_life, FTENT_SPRANIMATE );
pHitEffect->die = ENG_GET_CLIENT_TIME() + spr_life;
// pHitEffect->frameMax = spr_framerate;
pHitEffect->entity.curstate.renderamt = spr_renderamt;
pHitEffect->entity.curstate.rendercolor.r = spr_color.r;
pHitEffect->entity.curstate.rendercolor.g = spr_color.g;
pHitEffect->entity.curstate.rendercolor.b = spr_color.b;
pHitEffect->entity.curstate.framerate = spr_framerate;

pHitEffect->entity.baseline.renderamt = spr_renderamt;
pHitEffect->entity.baseline.rendercolor.r = spr_color.r;
pHitEffect->entity.baseline.rendercolor.g = spr_color.g;
pHitEffect->entity.baseline.rendercolor.b = spr_color.b;
pHitEffect->entity.baseline.framerate = spr_framerate;

};

if(sparks)
EFX_R_SPARK_STREAKS( pTrace->endpos, RANDOM_LONG(10,25), -70, 70 );

// Only decal brush models such as the world etc.
if ( decal && pe && ( pe->solid == SOLID_BSP || pe->movetype == MOVETYPE_PUSHSTEP ) )
{
if ( CVAR_GET_FLOAT( "r_decals" ) )
{
EFX_R_DECAL_SHOOT(
gEngfuncs.pEfxAPI->Draw_DecalIndex( gEngfuncs.pEfxAPI->Draw_DecalIndexFromName( decalName ) ),
gEngfuncs.pEventAPI->EV_IndexFromTrace( pTrace ), 0, pTrace->endpos, 0 );

}
}
};
// end [aone]

und dann noch eine Datei von mir, wo !ALLE! engine functions "gesammelt" sind:
hier als zip(so um die 100 KB glaub ich)

Hoffe das gilt nich als spamming =)

--

Another1

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

zum Seitenanfang zum Seitenende Profil || Suche
006
31.12.2000, 20:15
Basman



DANKE Another1!!!

--

www.GamersScene.de

zum Seitenanfang zum Seitenende Profil || Suche
007
31.12.2000, 21:10
Another1



Immer doch!

--

Another1

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

zum Seitenanfang zum Seitenende Profil || Suche
008
01.01.2001, 11:52
apfelkorn



Das ist echt interessant... danke...

--

zum Seitenanfang zum Seitenende Profil || Suche