M14EBR KF2

Тема в разделе "Оружие", создана пользователем gall87, 27 июл 2016.

  1. gall87

    gall87 Капо

    [​IMG]


    Код:
    Портированная винтовка из Killing Floor 2, имеет лазерный прицел и 2х кратную оптику

    PHP:
    Код для бантика:M39EBR.MutM39EBRBattleRifle
    PHP:
    Код для магазина:M39EBR.M39EBRPickup

    [​IMG]
    Автор портирования: G@L.
    Модель, анимации,звуки:tripwire interactive.

    Мутатор не для Продажи!​
     
    Doctor AKC, Stein, kok-s и ещё 1-му нравится это.
  2. kok-s

    kok-s Капо

    Хорошо смотрится. G@L отличная работа.
     
  3. BAHO

    BAHO Fresh Meat

    Не плохо, на досуге попробую.
     
  4. Doctor AKC

    Doctor AKC Новенький

    Великолепная пушка, за исключением того, что очень долго вылетает пуля. Имеется в виду, есть задержка между выстрелом и вылетом пули, причем достаточно долгоя-где-то полсекунды, не больше. Что посоветуете?
     
  5. RaideN111

    RaideN111 Игровая Администрация

    Код:
    //=============================================================================
     //M14EBR Fire
    //=============================================================================
    class M39EBRRFire extends M14EBRFire; /*
    var()  class<Emitter>  ShellEjectClass;  // class of the shell eject emitter
    var()  Emitter  ShellEjectEmitter;  // The shell eject emitter
    var()  name  ShellEjectBoneName;  // name of the shell eject bone
    
    simulated function bool AllowFire()
    {
       if(KFWeapon(Weapon).bIsReloading)
         return false;
       if(KFPawn(Instigator).SecondaryItem!=none)
         return false;
       if(KFPawn(Instigator).bThrowingNade)
         return false;
    
       if(KFWeapon(Weapon).MagAmmoRemaining < 1)
       {
         if( Level.TimeSeconds - LastClickTime>FireRate )
         {
           LastClickTime = Level.TimeSeconds;
         }
    
         if( AIController(Instigator.Controller)!=None )
           KFWeapon(Weapon).ReloadMeNow();
         return false;
       }
    
       return super(WeaponFire).AllowFire();
    }
    
    simulated function InitEffects()
    {
      super.InitEffects();
    
      // don't even spawn on server
      if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
         return;
      if ( (ShellEjectClass != None) && ((ShellEjectEmitter == None) || ShellEjectEmitter.bDeleteMe) )
      {
      ShellEjectEmitter = Weapon.Spawn(ShellEjectClass);
      Weapon.AttachToBone(ShellEjectEmitter, ShellEjectBoneName);
      }
    }
    
    function DrawMuzzleFlash(Canvas Canvas)
    {
      super.DrawMuzzleFlash(Canvas);
      // Draw shell ejects
      if (ShellEjectEmitter != None )
      {
      Canvas.DrawActor( ShellEjectEmitter, false, false, Weapon.DisplayFOV );
      }
    }
    
    function FlashMuzzleFlash()
    {
      super.FlashMuzzleFlash();
    
      if (ShellEjectEmitter != None)
      {
      ShellEjectEmitter.Trigger(Weapon, Instigator);
      }
    }
    
    simulated function DestroyEffects()
    {
      super.DestroyEffects();
    
      if (ShellEjectEmitter != None)
      ShellEjectEmitter.Destroy();
    }
    
    function DoFireEffect()
    {
      local Vector StartProj, StartTrace, X,Y,Z;
      local Rotator R, Aim;
      local Vector HitLocation, HitNormal;
      local Actor Other;
      local int p;
      local int SpawnCount;
      local float theta;
    
      Instigator.MakeNoise(1.0);
      Weapon.GetViewAxes(X,Y,Z);
    
      StartTrace = Instigator.Location + Instigator.EyePosition();// + X*Instigator.CollisionRadius;
      StartProj = StartTrace + X*ProjSpawnOffset.X;
      if ( !Weapon.WeaponCentered() && !KFWeap.bAimingRifle )
        StartProj = StartProj + Weapon.Hand * Y*ProjSpawnOffset.Y + Z*ProjSpawnOffset.Z;
    
      // check if projectile would spawn through a wall and adjust start location accordingly
      Other = Weapon.Trace(HitLocation, HitNormal, StartProj, StartTrace, false);
    
    // Collision attachment debugging
     /*  if( Other.IsA('ROCollisionAttachment'))
      {
         log(self$"'s trace hit "$Other.Base$" Collision attachment");
      }*/
    
      if (Other != None)
      {
      StartProj = HitLocation;
      }
    
      Aim = AdjustAim(StartProj, AimError);
    
      SpawnCount = Max(1, ProjPerFire * int(Load));
    
      switch (SpreadStyle)
      {
      case SS_Random:
      X = Vector(Aim);
      for (p = 0; p < SpawnCount; p++)
      {
      R.Yaw = Spread * (FRand()-0.5);
      R.Pitch = Spread * (FRand()-0.5);
      R.Roll = Spread * (FRand()-0.5);
      SpawnProjectile(StartProj, Rotator(X >> R));
      }
      break;
      case SS_Line:
      for (p = 0; p < SpawnCount; p++)
      {
      theta = Spread*PI/32768*(p - float(SpawnCount-1)/2.0);
      X.X = Cos(theta);
      X.Y = Sin(theta);
      X.Z = 0.0;
      SpawnProjectile(StartProj, Rotator(X >> Aim));
      }
      break;
      default:
      SpawnProjectile(StartProj, Aim);
      }
    
       if (Instigator != none )
       {
         // Really boost the momentum for low grav. AA12 only gets momentum on low grav
      if( Instigator.Physics == PHYS_Falling
      && Instigator.PhysicsVolume.Gravity.Z > class'PhysicsVolume'.default.Gravity.Z)
      {
      Instigator.AddVelocity((KickMomentum * 10.0) >> Instigator.GetViewRotation());
      }
       }
    }
    */
    defaultproperties
    {
      DamageMin=140
      DamageMax=140
    //    ProjectileClass=Class'M39EBRBullet'
    //    ProjPerFire=1
    //KickMomentum=(X=-5.000000,Z=1.000000)
     //  FireAimedAnim="Fire_Iron"
      //  RecoilRate=0.085000
      //  maxVerticalRecoilAngle=2000
     //  maxHorizontalRecoilAngle=500
     //  ShellEjectClass=Class'ROEffects.KFShellEjectEBR'
     //  ShellEjectBoneName="Shell_eject"
      FireSoundRef="DZWeaponPack.kf2_m14_G.snd.M14EBR_M"
      StereoFireSoundRef="DZWeaponPack.kf2_m14_G.snd.M14EBR_S"
      NoAmmoSound=Sound'KF_M14EBRSnd.M14EBR_DryFire'
    //    bRandomPitchFireSound=False
      //  bPawnRapidFireAnim=True
      //  bWaitForRelease=True
      //  TransientSoundVolume=2.000000
      //  TransientSoundRadius=500.000000
      FireLoopAnim="Fire"
      FireForce="AssaultRifleFire"
      FireRate=0.250000
      AmmoClass=Class'M39EBRAmmo'
      /*  ShakeRotMag=(X=50.000000,Y=50.000000,Z=300.000000)
      ShakeRotRate=(X=7500.000000,Y=7500.000000,Z=7500.000000)
      ShakeRotTime=0.650000
      ShakeOffsetMag=(X=6.000000,Y=3.000000,Z=7.500000)
      ShakeOffsetRate=(X=1000.000000,Y=1000.000000,Z=1000.000000)
      ShakeOffsetTime=1.150000
      BotRefireRate=0.990000
      FlashEmitterClass=Class'MuzzleFlash1stM39EBR'
      aimerror=42.000000
      Spread=0.005000
      SpreadStyle=SS_Random */
        DamageType=Class'DamTypeM39EBR'
    }
    
    


    мне это тоже не нравилось, поэтому я немного переделал Fire класс этой пушки. Теперь пуля летит как в оригинальной М39EBR
     
  6. gall87

    gall87 Капо

    Открываем M39EBRBullet и в defaultproperties добавляем
    Speed=28000.000000
    MaxSpeed=200000.000000
    Код:
    class M39EBRBullet extends ShotgunBullet;
    
    defaultproperties
    {
        MaxPenetrations=1
        HeadShotDamageMult=2.00000
        PenDamageReduction=0.10
        Damage=100.000000
        MomentumTransfer=70000.000000
        MyDamageType=Class'M39EBR.DamTypeM39EBR'
        DrawScale=1.000000
        Speed=28000.000000
        MaxSpeed=200000.000000
    }
    
     
    Последнее редактирование модератором: 17 янв 2017
  7. Doctor AKC

    Doctor AKC Новенький

    О да, стало в разы лучше
    Спасибочки))))