Advertisement
BullyATWiiplaza

GSC Wall Running

Jun 4th, 2017
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.30 KB | None | 0 0
  1. wallRunning2()
  2. {
  3.     self endon("disconnect");
  4.     self endon("death");
  5.  
  6.     while(true)
  7.     {
  8.         hasHitWall = self getAheadEntity();
  9.        
  10.         if(hasHitWall && !self isOnGround())
  11.         {
  12.             leftTrace = vectorScale(anglesToRight(self.angles), -1);
  13.             self iPrintln("Left: " + leftTrace);
  14.             rightTrace = anglesToRight(self.angles);
  15.             self iPrintln("Right: " + rightTrace);
  16.             forwardTrace = anglesToForward(self.angles);
  17.             self iPrintln("Forward: " + forwardTrace);
  18.            
  19.             dip = 0;
  20.            
  21.             entity = spawn("script_model", self.origin);
  22.  
  23.             while(true)
  24.             {
  25.                 if(distance(self.origin + (0, 0, 20), leftTrace) < 35 || distance(self.origin + (0, 0, 20), rightTrace) < 35 && !self isOnGround())
  26.                 {
  27.                     dip += 0.3;
  28.                     if(distance(self.origin + (0, 0, 20), forwardTrace) < 40)
  29.                     {
  30.                         self iPrintln("Break forward");
  31.                         break;
  32.                     }
  33.                    
  34.                     entity moveTo(entity.origin + (anglesToForward(self.angles) * 20) - (0, 0, dip), 0.07);
  35.                     wait 0.05;
  36.                 }
  37.                 else
  38.                 {
  39.                     self iPrintln("Break");
  40.                     break;
  41.                 }
  42.                
  43.                 wait 0.05;
  44.             }
  45.                
  46.             if(self isLinkedTo(model))
  47.             {
  48.                 self unlink();
  49.             }
  50.            
  51.             model delete();
  52.         }
  53.        
  54.         wait 0.2;
  55.     }
  56. }
  57.  
  58. wallRunning()
  59. {
  60.     level endon("game_ended");
  61.     self endon("disconnect");
  62.     self endon("death");
  63.    
  64.     wallRunning = false;
  65.     dip = 0.0;
  66.    
  67.     while(true)
  68.     {
  69.         // Check if we hit the wall and are in the air
  70.         while(self getAheadEntity() && !self isOnGround())
  71.         {
  72.             if(!wallRunning)
  73.             {
  74.                 // Give some time to hit the wall
  75.                 wait 0.1;
  76.             }
  77.            
  78.             wallRunning = true;
  79.             self iPrintln("Origin: " + self.origin);
  80.             model = spawn("script_model", self.origin);
  81.             model setModel("tag_origin");
  82.             travelDistance = 150;
  83.             movementVector = vectorScale(anglesToForward(self getPlayerAngles()), travelDistance);
  84.             movementVector -= (0, 0, dip);
  85.             self iPrintln("Vector: " + movementVector);
  86.             targetOrigin = self.origin + movementVector;
  87.             self playerLinkTo(model);
  88.             travelTime = travelDistance / 300; // Keep the travel time constant
  89.             self iPrintln("Travelling Time: " + travelTime);
  90.             model moveTo(targetOrigin, travelTime);
  91.             wait travelTime;
  92.            
  93.             if(self isLinkedTo(model))
  94.             {
  95.                 self unlink();
  96.             }
  97.            
  98.             model delete();
  99.            
  100.             dip += travelDistance / 100; // Dip down a bit while wall running
  101.         }
  102.        
  103.         wallRunning = false;
  104.         dip = 0.0;
  105.        
  106.         wait 0.1;
  107.     }
  108. }
  109.  
  110. getAheadEntity()
  111. {
  112.     level.physicsTraceMaskClip = 8;
  113.  
  114.     start = self getEyeApprox();
  115.     velocity = self getVelocity();
  116.     end = start + (velocity * 0.25);
  117.     trace = physicsTrace(start, end, vectorScale((0, 1, 0), 15), vectorScale((0, 1, 0), 15), self, level.physicsTraceMaskClip);
  118.     entity = trace["entity"];
  119.    
  120.     if(isDefined(entity))
  121.     {
  122.         self iPrintln("Entity defined");
  123.         self iPrintln("Entity defined: " + entity.origin);
  124.         return false;
  125.     }
  126.     else
  127.     {
  128.         if (trace["fraction"] < 0.99 || trace["surfacetype"] != "none")
  129.         {
  130.             if(isDefined(level.origin))
  131.             {
  132.                 self iPrintln("Level origin defined: " + level.origin);
  133.             }
  134.             else
  135.             {
  136.                 self iPrintln("Level defined");
  137.                 self iPrintln("Level defined: " + level);
  138.                 self iPrintln("Level origin: " + level.origin);
  139.             }
  140.            
  141.             return true;
  142.         }
  143.     }
  144.    
  145.     self iPrintln("Undefined");
  146.     return false;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement