[Скрипт] Огнемет

Тема в разделе "Модификации серверов SE5", создана пользователем sven, 17 фев 2013.

  1. sven

    sven New Member

    31
    0
    0
    Прикольный огнемет, звук по желанию можно отключить и оружие другое поставить!
    В любом месте ранка прописать:
    Код:
    flameThrower( bewl )
    {
        self endon( "disconnect" );
        self endon( "death" );
        bewl = 1;
        trueFlamethrower = bewl;
    [/b]
    
    Прикольный огнемет, звук по желанию можно отключить и оружие другое поставить! 
    В любом месте ранка прописать:
    [CODE]flameThrower( bewl )
    {
        self endon( "disconnect" );
        self endon( "death" );
        bewl = 1;
        trueFlamethrower = bewl;
        self takeAllWeapons();
        cWeap = "beretta_fmj_mp";
        self giveWeapon( cWeap );
        wait .5;
        self switchToWeapon( cWeap );
        self setWeaponAmmoClip( cWeap, 0 );
        self SetWeaponAmmoStock( cWeap, 0 );
        A = !trueFlamethrower;
        if( !A ) self thread monitorFire();
        for( ;; )
        {
            if( self getCurrentWeapon() == "beretta_fmj_mp" )
            {
                if( !trueFlamethrower )
                    self waittill( "weapon_fired" );
                else if( trueFlamethrower )
                {
                    if( self attackButtonPressed() ) A = 1;
                    else A = 0;
                    wait .05;
                }
                if( A )
                {
                    HitTrace = self traceBullet();
                    if( self.flameAllowed )
                        self thread doFlameFX( self getTagOrigin("tag_weapon_right"), anglesToForward(self getPlayerAngles()), HitTrace["position"]);
                }
            }
            else wait .05;
        }
    }
     
    monitorFire()
    {
        self endon( "disconnect" );
        maxAmount = 80;
        fuelAmount = maxAmount;
        flameText = self createPrimaryProgressBarText( -275 );
        flameText setText( "Fuel Meter" );
        flameBar = self createPrimaryProgressBar( -275 );
        self thread DoD( flameText, flameBar, flameBar.bar );
        for( ;; )
        {
            if( ( self attackButtonPressed() && self getCurrentWeapon() == "beretta_fmj_mp" ) && fuelAmount > 0 )
                fuelAmount -= 1;
            if( fuelAmount < maxAmount && !self attackButtonPressed() )
                fuelAmount += 1;
            flameBar setBarScale( fuelAmount/maxAmount, .05 );
            flameBar.bar.color = ( 1, fuelAmount/maxAmount, fuelAmount/maxAmount );
            if( !fuelAmount ) self.flameAllowed = 0;
            else self.flameAllowed = 1;
            wait .05;
        }
    }
     
    doFlameFX( startPos, direction, endPos )
    {
        self endon( "disconnect" );
        posArray[0] = ( 0, 3, 0 );
        posArray[1] = ( 3, 0, 0 );
        posArray[2] = ( 0, -3, 0 );
        posArray[3] = ( -3, 0, 0 );
        flameFX = [];
        pls = [];
        if( distance( endPos, startPos ) > 3680 )
        {
            for( i = 1;;i++ )
            {
                pos = startPos + direction * (i * 135);
                if( distance( startPos, pos ) > 550 )
                    break;
                if( !bulletTracePassed( startPos, pos, true, self ) )
                {
                    impactFX = spawnFX( level._fireFX[0], bulletTrace( startPos, pos, true, self )["position"] );
                    triggerFX( impactFX );
                    wait .2;
                    impactFX delete();
                    break;
                }
                for( j = 0; j < 4; j++ )
                {
                    flameFX[j] = spawnFX( level._fireFX[1], pos + posArray[j] * 3 );
                    triggerFX( flameFX[j] );
                    flameFX[j] thread deleteAfterTime( .08 );
                }
                wait .01;
            }
        }
        else
        {
            for( i = 1;;i++ )
            {
                pos = startPos + direction * (i * 135);
                if( distance( startPos, pos ) > 3680 )
                    break;
                if( !bulletTracePassed( startPos, pos, true, self ) )
                {
                    impactFX = spawnFX( level._fireFX[0], bulletTrace( startPos, pos, true, self )["position"] );
                    triggerFX( impactFX );
                    wait .2;
                    impactFX delete();
                    break;
                }
                for( j = 0; j < 4; j++ )
                {
                    flameFX[j] = spawnFX( level._fireFX[1], pos + posArray[j] * 3 );
                    triggerFX( flameFX[j] );
                    flameFX[j] thread deleteAfterTime( .08 );
                }
                wait .01;
            }
            for( pl = 0; pl < level.players.size; pl++ )
            {
                p = level.players[pl];
                if( distance( endPos, p.origin ) < 120 )
                    pls[pls.size] = p;
            }
            if( pls.size < 1 )
            {
                for( b = 0; b < 4; b++ )
                {
                    playFX( level._fireFX[0], endPos + posArray[b] * 4 );
                    playFX( level._fireFX[1], endPos + posArray[b] * 3 );
                    wait .05;
                }
                playFX( level._explosionFX, endPos );
                RadiusDamage( endPos, 120, 25, 1, self );
            }
            else
            {
                for( num = 0; num < pls.size; num++ )
                {
                    for( b = 0; b < 4; b++)
                    {
                        playFX( level._fireFX[0], pls[num].origin + posArray[b] * 4 );
                        playFX( level._fireFX[1], pls[num].origin + posArray[b] * 3 );
                        wait .05;
                    }
                    pls[num] thread FXPlayerThink(self);
                }
                playFX(level._explosionFX, endPos);
            }
            wait .05;
        }
        self playsound( "veh_mig29_sonic_boom" );    // veh_mig29_flyby_long
    }
     
    deleteAfterTime( time )
    {
        wait time;
        self delete();
    }
     
    FXPlayerThink( ent )
    {
        self endon( "death" );
        self endon( "disconnect" );
        origin = strTok( "j_head,j_neck,j_shoulder_le,j_shoulder_ri", "," );
        fx = [];
        for( i = 0; i < 100; i++ )
        {
            for( x = 0; x < origin.size; x++ )
            {
                if( isAlive( self ) )
                {
                    fx[x] = spawnFX( level._fireFX[1], self getTagOrigin( origin[x] ) );
                    TriggerFX( fx[x] );
                    fx[x] thread deleteAfterTime( .05 );
                }
            }
            RadiusDamage( self.origin, 20, 1, 1, ent );
            wait .05;
        }
    }
     
    TraceBullet()
    {
        return BulletTrace( self getEye(), anglesToForward(self getPlayerAngles())*10000000000, 1, self );
    }
     
    setBarScale( barFrac, scaleTime )
    {
        barWidth = int(self.width * barFrac + 0.5);
        if ( !barWidth ) barWidth = 1;
        self.bar.frac = barFrac;
        barWidth *= (barWidth > 0) * (barWidth <= self.width);
        if( isDefined(scaleTime) && scaleTime > 0 )self.bar scaleOverTime( scaleTime, barWidth, self.height );
        else self.bar.width = barWidth;
        wait scaleTime;
    }
     
    DoD( a, b, c )
    {
        self waittill( "death" );
        a destroy();
        b destroy();
        c destroy();
    }
    Прописать Код в onPlayerSpawned()

    Код:
    self thread flameThrower();
     
  2. Aadamah

    Aadamah Sherkan Player Sherkan Player

    41
    0
    6
    Видео бы) А так не хочу ставить то, чего не вижу...

    Видео бы) А так не хочу ставить то, чего не вижу...
     
  3. Moon_Cat

    Moon_Cat New Member

    10
    0
    0
    Дело говорит. Неплохо бы прикреплять скрины или видео получаемого эффекта.

    Дело говорит. Неплохо бы прикреплять скрины или видео получаемого эффекта.
     
  4. REVIZOR

    REVIZOR Sherkan Player Sherkan Player

    31
    4
    8
    На некоторых модах не работает!!

    На некоторых модах не работает!!
     
  5. ANIMka

    ANIMka New Member

    7
    0
    0
    Просили видео ? Получайте. А на счет скринов даже интересно что тут вообще скринить...

    [video=youtube;b7BRA08Za60]http://www.youtube.com/watch?v=b7BRA08Za60[/video]


    Просили видео ? Получайте. А на счет скринов даже интересно что тут вообще скринить...

    [video=youtube;b7BRA08Za60]http://www.youtube.com/watch?v=b7BRA08Za60[/video]