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.

2026-03-11 19:32:32
/back