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!
|