SHARE
TWEET

Untitled

a guest Nov 19th, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Convars.SetValue( "rm_destroy_empty_weapon", 0 );
  2.  
  3. nextRefillTick1 <- {};
  4. nextRefillTick2 <- {};
  5. lastClip1 <- {};
  6. lastClip2 <- {};
  7.  
  8. timeBetweenRefill1 <- 0.1;
  9. timeBetweenRefill2 <- 5;
  10. timeBetweenInverse1 <- 75;
  11. timeBetweenInverse2 <- 5;
  12. timeAfterShoot1 <- 5;
  13. timeAfterShoot2 <- 10;
  14. singleClipPenalty <- 0.55;
  15. noClipPenalty <- 4;
  16.  
  17. regenInterval <- {
  18.     asw_weapon_mines=250
  19.     asw_weapon_electrified_armor=150
  20.     asw_weapon_freeze_grenades=250
  21.     asw_weapon_grenades=200
  22.     asw_weapon_laser_mines=480
  23.     asw_weapon_tesla_trap=120
  24.     asw_weapon_hornet_barrage=120
  25.     asw_weapon_medkit=40
  26.     asw_weapon_heal_grenade=450
  27.     asw_weapon_gas_grenades=600
  28.     asw_weapon_stim=150
  29.     asw_weapon_buff_grenade=200
  30.     asw_weapon_medical_satchel=450
  31. }
  32.  
  33. ammoCount <- {
  34.     asw_weapon_mines=8
  35.     asw_weapon_electrified_armor=4
  36.     asw_weapon_freeze_grenades=8
  37.     asw_weapon_grenades=16
  38.     asw_weapon_laser_mines=16
  39.     asw_weapon_tesla_trap=24
  40.     asw_weapon_hornet_barrage=16
  41.     asw_weapon_medkit=3
  42.     asw_weapon_heal_grenade=18
  43.     asw_weapon_gas_grenades=8
  44.     asw_weapon_stim=6
  45.     asw_weapon_buff_grenade=12
  46.     asw_weapon_medical_satchel=18
  47. }
  48.  
  49. regenDelay <- {
  50.     asw_weapon_mines=0
  51.     asw_weapon_electrified_armor=0
  52.     asw_weapon_freeze_grenades=0
  53.     asw_weapon_grenades=0
  54.     asw_weapon_laser_mines=0
  55.     asw_weapon_tesla_trap=0
  56.     asw_weapon_hornet_barrage=0
  57.     asw_weapon_medkit=0
  58.     asw_weapon_heal_grenade=0
  59.     asw_weapon_gas_grenades=0
  60.     asw_weapon_stim=0
  61.     asw_weapon_buff_grenade=0
  62.     asw_weapon_medical_satchel=0
  63.  
  64. }
  65.  
  66. function Update()
  67. {
  68.     minDelay <- 0.2;
  69.     marine <- null;
  70.     while ( ( marine = Entities.FindByClassname( marine, "asw_marine" ) ) != null )
  71.     {
  72.         for ( local weapon = marine.FirstMoveChild(); weapon != null; weapon = weapon.NextMovePeer() )
  73.         {
  74.             if ( weapon != null && (weapon.GetClassname() in regenDelay) )
  75.             {
  76.                 timeBetweenInverse1 = regenInterval[weapon.GetClassname()];
  77.                 timeAfterShoot1 = regenDelay[weapon.GetClassname()];
  78.            
  79.                 if ( !( "GetMaxClip1" in weapon ) )          
  80.                 continue;
  81.                 local maxClip1 = weapon.GetMaxClip1();            
  82.                 if (maxClip1 <= 0)
  83.                 continue;
  84.                 local clips1 = weapon.GetMaxAmmo1() / maxClip1;
  85.                
  86.                 if ( clips1 < noClipPenalty )
  87.                 {
  88.                     if ( weapon != null && (weapon.GetClassname() in ammoCount) )
  89.                        maxClip1 = ammoCount[weapon.GetClassname()];
  90.                     else maxClip1 = ceil( maxClip1 * ( 1 - singleClipPenalty / clips1 ) );
  91.                 }
  92.                
  93.                 if ( weapon.Clip1() > maxClip1 )
  94.                     weapon.SetClip1( maxClip1 );
  95.  
  96.                 if ( !( weapon.entindex() in nextRefillTick1 ) )
  97.                 {
  98.                     nextRefillTick1[weapon.entindex()] <- Time();
  99.                     lastClip1[weapon.entindex()] <- weapon.Clip1();
  100.                     continue;
  101.                 }
  102.  
  103.                 if ( weapon.Clip1() != lastClip1[weapon.entindex()] )
  104.                 {
  105.                     lastClip1[weapon.entindex()] = weapon.Clip1();
  106.                     nextRefillTick1[weapon.entindex()] = Time() + timeAfterShoot1 + timeBetweenInverse1 / weapon.GetMaxAmmo1();
  107.                 }
  108.                 if ( nextRefillTick1[weapon.entindex()] <= Time() && weapon.Clip1() < maxClip1 )
  109.                 {
  110.                     weapon.SetClip1( weapon.Clip1() + 1 );
  111.                     lastClip1[weapon.entindex()] = weapon.Clip1();
  112.                     delay <- timeBetweenRefill1 + timeBetweenInverse1 / weapon.GetMaxAmmo1();
  113.                     nextRefillTick1[weapon.entindex()] = Time() + delay;
  114.                     if ( delay < minDelay )
  115.                     minDelay = delay;
  116.                 }
  117.             }
  118.         }
  119.     }
  120.     timeBetweenInverse1 = 75;
  121.     timeAfterShoot1 = 5;
  122.     return minDelay;
  123. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top