Raised This Month: $ Target: $400
 0% 

Help me to convert this please


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
darktemplar
Member
Join Date: Sep 2009
Old 01-22-2013 , 08:43   Help me to convert this please
Reply With Quote #1

Code:
void CBaseEntity::FireBullets(ULONG cShots, Vector vecSrc, Vector vecDirShooting, Vector vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker )
{
    static int tracerCount;
    int tracer;
    TraceResult tr;
    Vector vecRight = gpGlobals->v_right;
    Vector vecUp = gpGlobals->v_up;

    if ( pevAttacker == NULL )
        pevAttacker = pev;  // the default attacker is ourselves

    ClearMultiDamage();
    gMultiDamage.type = DMG_BULLET | DMG_NEVERGIB;

    for (ULONG iShot = 1; iShot <= cShots; iShot++)
    {
        // get circular gaussian spread
        float x, y, z;
        do {
            x = RANDOM_FLOAT(-0.5,0.5) + RANDOM_FLOAT(-0.5,0.5);
            y = RANDOM_FLOAT(-0.5,0.5) + RANDOM_FLOAT(-0.5,0.5);
            z = x*x+y*y;
        } while (z > 1);

        Vector vecDir = vecDirShooting +
                        x * vecSpread.x * vecRight +
                        y * vecSpread.y * vecUp;
        Vector vecEnd;

        vecEnd = vecSrc + vecDir * flDistance;
        UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, ENT(pev)/*pentIgnore*/, &tr);

        tracer = 0;
        if (iTracerFreq != 0 && (tracerCount++ % iTracerFreq) == 0)
        {
            Vector vecTracerSrc;

            if ( IsPlayer() )
            {// adjust tracer position for player
                vecTracerSrc = vecSrc + Vector ( 0 , 0 , -4 ) + gpGlobals->v_right * 2 + gpGlobals->v_forward * 16;
            }
            else
            {
                vecTracerSrc = vecSrc;
            }
            
            if ( iTracerFreq != 1 )        // guns that always trace also always decal
                tracer = 1;
            switch( iBulletType )
            {
            case BULLET_MONSTER_MP5:
            case BULLET_MONSTER_9MM:
            case BULLET_MONSTER_12MM:
            default:
                MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, vecTracerSrc );
                    WRITE_BYTE( TE_TRACER );
                    WRITE_COORD( vecTracerSrc.x );
                    WRITE_COORD( vecTracerSrc.y );
                    WRITE_COORD( vecTracerSrc.z );
                    WRITE_COORD( tr.vecEndPos.x );
                    WRITE_COORD( tr.vecEndPos.y );
                    WRITE_COORD( tr.vecEndPos.z );
                MESSAGE_END();
                break;
            }
        }
        // do damage, paint decals
        if (tr.flFraction != 1.0)
        {
            CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);

            if ( iDamage )
            {
                pEntity->TraceAttack(pevAttacker, iDamage, vecDir, &tr, DMG_BULLET | ((iDamage > 16) ? DMG_ALWAYSGIB : DMG_NEVERGIB) );
                
                TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, iBulletType);
                DecalGunshot( &tr, iBulletType );
            } 
            else switch(iBulletType)
            {
            default:
            case BULLET_MONSTER_9MM:
                pEntity->TraceAttack(pevAttacker, gSkillData.monDmg9MM, vecDir, &tr, DMG_BULLET);
                
                TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, iBulletType);
                DecalGunshot( &tr, iBulletType );

                break;

            case BULLET_MONSTER_MP5:
                pEntity->TraceAttack(pevAttacker, gSkillData.monDmgMP5, vecDir, &tr, DMG_BULLET);
                
                TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, iBulletType);
                DecalGunshot( &tr, iBulletType );

                break;

            case BULLET_MONSTER_12MM:        
                pEntity->TraceAttack(pevAttacker, gSkillData.monDmg12MM, vecDir, &tr, DMG_BULLET); 
                if ( !tracer )
                {
                    TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, iBulletType);
                    DecalGunshot( &tr, iBulletType );
                }
                break;
            
            case BULLET_NONE: // FIX 
                pEntity->TraceAttack(pevAttacker, 50, vecDir, &tr, DMG_CLUB);
                TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, iBulletType);
                // only decal glass
                if ( !FNullEnt(tr.pHit) && VARS(tr.pHit)->rendermode != 0)
                {
                    UTIL_DecalTrace( &tr, DECAL_GLASSBREAK1 + RANDOM_LONG(0,2) );
                }

                break;
            }
        }
        // make bullet trails
        UTIL_BubbleTrail( vecSrc, tr.vecEndPos, (flDistance * tr.flFraction) / 64.0 );
    }
    ApplyMultiDamage(pev, pevAttacker);
}
I really need this code in AMXX. Can some pros help me convert this to AMXX, please ...
Thank you in advance
darktemplar is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 20:30.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode