ritting a puppeting player... (first test)
c

void () PositionCameraHobbit;
void () PositionCameraQuakeTP
void () CCam;


//ChaseCam
.vector camview;
.float aflag; //check if camera is active (if not, require spawning it)

void() CCamChasePlayer = {

   if(self.hobbit_mode)
      PositionCameraHobbit();
   else   
      PositionCameraQuakeTP();
};


void () PositionCameraQuakeTP =  {
   local vector towards_player;
   local vector tpcamview;

   tpcamview = '0 0 -1' * 75;

   makevectors (self.v_angle);
   traceline ((self.origin + self.view_ofs),((((self.origin + self.view_ofs)
      + (v_forward * tpcamview_z)) + (v_up * tpcamview_x)) + (v_right * tpcamview_y)),FALSE,self);

   //Push the camera somewhat towards the player, because trace_endpos sometimes appears inside solid
   towards_player = (trace_endpos - self.origin);
   towards_player = normalize(towards_player);

   setorigin (self.trigger_field,trace_endpos - towards_player * 15);
   WriteByte (MSG_ONE,5);
   WriteEntity (MSG_ONE,self.trigger_field);
   
   self.weaponmodel = "";      
   self.view_ofs = '0 0 22';   
};


void () PositionCameraHobbit = {
   local vector towards_player;
   //local vector towards_player_angle;
   local vector fixed_angle;
   local vector desired_position_camera;
   local vector desired_angle;

   desired_angle = vectoangles('0 -136 254');
   desired_angle_y = 0 - desired_angle_y;

   fixed_angle = vectoangles('0 136 254');   

   desired_position_camera = self.origin + self.camview;

   makevectors (fixed_angle);
   traceline ( self.origin, desired_position_camera ,FALSE,self);
   
   self.view_ofs = '0 0 0';  

   //Move the camera to the desired position
   setorigin (self.trigger_field, trace_endpos);
      
   msg_entity = self;
   WriteByte (MSG_ONE,SVC_SETVIEWPORT);
   WriteEntity (MSG_ONE,self.trigger_field);

   WriteByte (MSG_ONE,SVC_SETANGLES);
   WriteAngle (MSG_ONE,desired_angle_x);
   WriteAngle (MSG_ONE,desired_angle_y);
   WriteAngle (MSG_ONE,desired_angle_z);

   self.weaponmodel = "";      
}

void () CCamChasePlayer_think =  {
   local vector towards_player;
   local vector fixed_angle;
   local vector desired_position_camera;

   self.nextthink = time;
   self = self.owner;

   PositionCameraHobbit();
};


void () CCam =  {
   local entity camera;

   //Create cam if don't exist
   if (self.aflag == FALSE) {
      self.aflag = TRUE;

      camera = spawn ();      
      camera.classname = "camera";
      camera.movetype = MOVETYPE_FLY;
      camera.solid = SOLID_NOT;
      camera.owner = self;
      

      setmodel (camera,"progs/eyes.mdl");
      setsize (camera,'0 0 0','0 0 0');
            
      self.camview = '0 -136 314';    
      self.weaponmodel = "";
      self.trigger_field = camera;                     
   }
};

Test to create a puppeted player. This is a early test has works, only does the part of have the puppet follow the player and have the same frame.
Writting a puppeting player...  (first test)
2026-03-11 19:32:32
/back