var updateRate;
function control_player()
{
var oldskill1;
var save_pan = 0; //stores the entity.pan (needed to find out if the pan has changed)
if(enet_get_connection() == CLIENT_SERVER_MODE) proc_mode = PROC_LATE;
trigger_ctrl();
while(1)
{
player_camsys(); //this is cam system of the player, found in player_system.c
//store the keys as bits in a skill1
my.skill1 = 0;
my.skill1 |= key_pressed(key_for_str("f")); //forward key in bit0
my.skill1 |= key_pressed(key_for_str("v"))<<1; //backward key in bit1
my.skill1 |= key_pressed(key_for_str("c"))<<2; //left key in bit2
my.skill1 |= key_pressed(key_for_str("b"))<<3; //right key in bit3
my.skill1 |= key_pressed(key_for_str("Space"))<<4; //right key in bit4
enet_send_skills(enet_ent_globpointer(my),6,6,SERVER);
if(my.skill1 != oldskill1 && enet_get_connection() != CLIENT_SERVER_MODE)
{enet_send_skills(enet_ent_globpointer(my),1,1,SERVER); oldskill1=my.skill1;} //oldskill1=my.skill1;
camera.pan -= 2*mouse_force.x; //rotates the entity with the mouse
camera.tilt += 2*mouse_force.y; //rotates the entity with the mouse
my.pan=camera.pan;
my.skill[2] = camera.pan; //damages the player
my.skill[10] = camera.tilt; //damages the player
if(save_pan != my.pan) {enet_send_skills(enet_ent_globpointer(my),2,2,-1); save_pan = my.pan;}
enet_send_skills(enet_ent_globpointer(my),10,10,SERVER);
wait(1);
}
}
function move_player()
{
//[UNUSED]var save_pan = 0; //stores the entity.pan (needed to find out if the pan has changed)
VECTOR save_pos; //stores the entity.pos (needed to find out if the position has changed)
var timePassed = 0;
while(enet_ent_globpointer(my) == -1) {wait(1);} //wait until the entity gets a global pointer
//pl_animate(1); // this contains the blended animation states
key_ctrlr(); //controls key inputs
if(enet_ent_creator(enet_ent_globpointer(my)) == enet_get_clientid())
{
//Every client controls his own player
control_player();
control_anim_st(); // this control local animations
}
else
{
control_other_anim_st();
}
if(enet_get_connection() == SERVER_MODE || enet_get_connection() == CLIENT_SERVER_MODE || enet_get_connection() == CLIENT_MODE )
{
//set up the physic stuff
phent_settype(my, PH_RIGID, PH_BOX);//physik entity definieren & kollision = sphere
phent_setmass(my, 75, PH_SPHERE);//masse definieren & rotation = sphere
phent_setdamping(my,100.0, 100.0);//Reibung definieren & drehungsdämpfung nach kollision
// phent_setgroup(player, 2);
var forward_key;
var backward_key;
var left_key;
var right_key;
var space_key;
my.can_jump=0;
while(1)
{
forward_key = my.skill1&0x00000001; //get bit1
backward_key = (my.skill1&0x00000002)>>1; //get bit2
left_key = (my.skill1&0x00000004)>>2; //get bit3
right_key = (my.skill1&0x00000008)>>3; //get bit4
space_key = (my.skill1&0x000000016)>>4; //get bit5
phys_ctrl(forward_key,backward_key,left_key,right_key);
//jump_ctrl(space_key);
if (my.weap_trigger==1)client_shoot();
//sends the position if changed
if(timePassed >= updateRate)
{
vec_set(my.skill[8],my.x);
enet_send_skills(enet_ent_globpointer(my),8,10,-1); //sends the new skill value
}
if(save_pos.x != my.x || save_pos.y != my.y || save_pos.z != my.z) {enet_send_pos(enet_ent_globpointer(my),-1);vec_set(save_pos,my.x);}
//[UNUSED]sends the angles if they changed
//[UNUSED]if(save_pan != my.pan) {enet_send_angle(enet_ent_globpointer(my),-1);save_pan = my.pan;}
timePassed += time_frame;
wait(1);
}
}
else
{
// my.pan=camera.pan;
// my.skill2=my.pan;
// enet_send_skills(enet_ent_globpointer(my),2,2,SERVER);
}
}