Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 20th, 2012  |  syntax: None  |  size: 3.01 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. @name Super GravGun
  2. @persist [EE OldEntity Ammo]:entity On Mouse1 Mouse2 OldMass LockAng:angle CanTD
  3. runOnTick(1)
  4. runOnChat(1)
  5.  
  6. Mouse1 = owner():keyAttack1()
  7. Mouse2 = owner():keyAttack2()
  8. WType = owner():weapon():type(), AimE = owner():aimEntity()
  9.  
  10. if(first() | duped())
  11. {
  12.     EE = entity(), Ammo = noentity()
  13.     On = 1, OldEntity = noentity(), CanTD = 1
  14.     printColor(vec(255, 255, 0), "Super GravGun Enabled !")
  15. }
  16.  
  17. if(tickClk() & Ammo & On)
  18. {
  19.     if(changed(Mouse1) & Mouse1)
  20.     {
  21.         Ammo:applyForce((owner():shootPos() + owner():eye() * 999999 - Ammo:pos()) * Ammo:mass() * 999999)
  22.         Ammo = noentity()
  23.     }
  24.     else
  25.     {
  26.         Length = clamp(Ammo:boxSize():length(), 80, 200) + owner():vel():length() / 5 # Adding velocity prevent object to collide with player, depending on his speed
  27.         Ammo:applyForce((owner():shootPos() + owner():eye() * Length - Ammo:pos()) * Ammo:mass() * 20 - Ammo:vel() * Ammo:mass())
  28.         TarQ = quat(LockAng)
  29.         CurQ = quat(Ammo)
  30.         Q = TarQ / CurQ
  31.         V = Ammo:toLocal(rotationVector(Q) + Ammo:pos())
  32.         Ammo:applyTorque((200 * V - 10 * Ammo:angVelVector()) * Ammo:inertia())
  33.     }
  34. }
  35.  
  36. if(chatClk(owner()))
  37. {
  38.     LSA = owner():lastSaid()
  39.     LS  = LSA:sub(2, LSA:length()):explode(" ")
  40.     LS0 = LSA:index(1)
  41.     LS1 = LS:string(1)
  42.     LS2 = LS:string(2)
  43.     LS3 = LS:string(3)
  44.     LS4 = LS:string(4)
  45.    
  46.     if(LS0 == "/")
  47.     {
  48.         if(LS1 == "gravgun")
  49.         {
  50.             hideChat(1)
  51.             if(!On)
  52.             {
  53.                 printColor(vec(255, 255, 0), "Super GravGun Enabled !")
  54.                 On = 1
  55.             }
  56.             else
  57.             {
  58.                 printColor(vec(255, 255, 0), "Super GravGun Disabled !")
  59.                 On = 0
  60.             }
  61.         }
  62.     }
  63. }
  64.  
  65. if(WType == "weapon_physcannon" & AimE:owner() == owner() & !AimE:isFrozen() & changed(Mouse1) & Mouse1 & On & !Ammo)
  66. {
  67.     AimE:applyForce((owner():shootPos() + owner():eye() * 999999 - AimE:pos()) * AimE:mass() * 999999)
  68. }
  69.  
  70. if(WType == "weapon_physcannon" & AimE:owner() == owner() & !AimE:isFrozen() & changed(Mouse2) & Mouse2 & On & !Ammo & CanTD)
  71. {
  72.     Ammo = owner():aimEntity()
  73.     CanTD = 0
  74.     LockAng = Ammo:angles()
  75.     OldEntity = noentity()
  76.     timer("CanTDToggle", 800)
  77. }
  78.  
  79. if(WType == "weapon_physcannon" & changed(Mouse2) & Mouse2 & On & Ammo & CanTD)
  80. {
  81.     Ammo = noentity()
  82. }
  83.  
  84. if(WType == "weapon_physcannon" & AimE:owner() == owner() & !AimE:isFrozen() & On & !Ammo) # To prevent gravgun to pick objects, temporarily set mass to 500
  85. {
  86.     if(OldEntity != owner():aimEntity())
  87.     {
  88.         if(!OldEntity)
  89.         {
  90.             OldEntity = owner():aimEntity()
  91.             OldMass = OldEntity:mass()
  92.             OldEntity:setMass(500)
  93.         }
  94.         else
  95.         {
  96.             OldEntity:setMass(OldMass)
  97.             OldEntity = owner():aimEntity()
  98.             OldMass = OldEntity:mass()
  99.             OldEntity:setMass(500)
  100.         }
  101.     }
  102. }
  103.  
  104. if(clk("CanTDToggle"))
  105. {
  106.     CanTD = !CanTD
  107. }