Advertisement
xePixTvx

[MW2/GSC/INFINITYLOADER]STALKING CLONE

Dec 9th, 2019
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.81 KB | None | 0 0
  1. //add to init
  2. /*
  3.     precacheMpAnim("pb_stand_alert");
  4.     precacheMpAnim("pb_walk_forward_akimbo");
  5.     precacheMpAnim("pb_run_fast");
  6.     precacheMpAnim("pb_sprint_akimbo");
  7. */
  8.  
  9.  
  10. toggle_stalking_clone()
  11. {
  12.     if(!self.Clone_Follow)
  13.     {
  14.         self.Clone_Follow = true;
  15.         self thread createTheStalkingClone();
  16.     }
  17.     else
  18.     {
  19.         self.Clone_Follow = false;
  20.     }
  21. }
  22. createTheStalkingClone()//Not good but its not ai zombies so i dont care
  23. {
  24.     player_body_model = self.model;
  25.     player_head_model = self getAttachModelName(0);
  26.     target            = self;
  27.    
  28.     //Body
  29.     clone = spawn("script_model",self.origin);
  30.     clone setModel(player_body_model);
  31.    
  32.     //Head
  33.     clone.head = spawn("script_model",clone getTagOrigin("j_spine4"));
  34.     clone.head setModel(player_head_model);
  35.     clone.head.angles = (270,0,270);
  36.     clone.head linkto(clone,"j_spine4");
  37.    
  38.     clone.currentsurface = "default";
  39.     clone.targetname     = "clone";
  40.     clone.classname      = "clone";
  41.     clone.currentAnim    = "";//idle,walk,run,sprint
  42.     clone.speed          = 0;
  43.    
  44.    
  45.     while(self.Clone_Follow)
  46.     {
  47.         //Anim + Speed
  48.         distanceToTarget = distance(clone.origin,target.origin);
  49.         if(distanceToTarget >= 250 && distanceToTarget < 350)
  50.         {
  51.             if(clone.currentAnim!="walk")
  52.             {
  53.                 clone.currentAnim = "walk";
  54.                 clone.Speed       = 5.0;
  55.                 clone scriptModelPlayAnim("pb_walk_forward_akimbo");
  56.             }
  57.         }
  58.         else if(distanceToTarget >= 350 && distanceToTarget < 500)
  59.         {
  60.             if(clone.currentAnim!="run")
  61.             {
  62.                 clone.currentAnim = "run";
  63.                 clone.Speed       = 10.0;
  64.                 clone scriptModelPlayAnim("pb_run_fast");
  65.             }
  66.         }
  67.         else if(distanceToTarget >= 500)
  68.         {
  69.             if(clone.currentAnim!="sprint")
  70.             {
  71.                 clone.currentAnim = "sprint";
  72.                 clone.Speed       = 15.0;
  73.                 clone scriptModelPlayAnim("pb_sprint_akimbo");
  74.             }
  75.         }
  76.         else
  77.         {
  78.             if(clone.currentAnim!="idle")
  79.             {
  80.                 clone.currentAnim = "idle";
  81.                 clone.Speed       = 0;
  82.                 clone notify("clone_move_done");
  83.                 clone scriptModelPlayAnim("pb_stand_alert");
  84.             }
  85.         }
  86.        
  87.        
  88.         //Move
  89.         clone clone_move(target.origin);
  90.        
  91.         wait 0.05;
  92.     }
  93.     clone delete();
  94.     clone.head delete();
  95. }
  96. clone_move(targetPos)
  97. {
  98.     self notify("clone_move_done");
  99.     self endon("clone_move_done");
  100.     self clone_clampToGround();
  101.     pos          = self.origin;
  102.     target_pos   = targetPos;
  103.     vec3_normal  = VectorNormalize(target_pos - self.origin);
  104.     vec3_angles  = VectorToAngles(target_pos - self getTagOrigin("j_head"));
  105.     moveToLoc    = pos + (vec3_normal*self.Speed);
  106.     rotate_angle = VectorToAngles(target_pos - self getTagOrigin("j_head"));
  107.     self.origin  = moveToLoc;
  108.     self RotateTo((0,rotate_angle[1],0),0.1);
  109.     self notify("clone_move_done");
  110. }
  111. clone_clampToGround()
  112. {
  113.     trace = bulletTrace(self.origin+(0,0,50),self.origin+(0,0,-40),false,self);
  114.     if(isdefined(trace["entity"])&&isDefined(trace["entity"].targetname)&&trace["entity"].targetname=="clone")
  115.     {
  116.         trace = bulletTrace(self.origin+(0,0,50),self.origin+(0,0,-40),false,trace["entity"]);
  117.     }
  118.     self.currentsurface = trace["surfacetype"];
  119.     if(self.currentsurface=="none")
  120.     {
  121.         self.currentsurface = "default";
  122.     }
  123.     if((trace["position"][2]-(self.origin[2]-40))>0&&((self.origin[2]+50)-trace["position"][2])>0)
  124.     {
  125.         self.origin = trace["position"];
  126.         return true;
  127.     }
  128.     return false;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement