Hi,

I have tried to write a multiplayer movement base on the Locoweed tutorial with some minor changes.
But I am missing something, as the player does not move at all..
When I rearrange the function the player moves, but client movement is not shown on server. this is the current script.
Any tips on what I am missing ?
Quote:

#include <acknex.h>
#include <default.c>

#define PRAGMA_PATH ".\\levels";
#define PRAGMA_PATH ".\\models";

#define MAX_CONNECTIONS 100;
#define force_x skill1
#define force_y skill2
#define force_z skill3
#define player_number skill4
#define role skill5

STRING* messages_str = "#100";
STRING* roller_str = "roller.wmb";
STRING* woman_str = "cbabe.mdl";
STRING* worker_str = "inmate.mdl";

var number_of_players;
var force[3];

FONT* Arial_font = "Arial#14";

TEXT* messages_txt =
{
pos_x = 300;
pos_y = 1;
layer = 10;
font(Arial_font);
string (messages_str);
flags = visible;
}

function spawn_player();
function move_player();
function move_camera();

action move_someone();
{
move_player();
}

function input_scan()
{
// only send changed skill values, so we need variable to store old values
var force_x_old;
var force_y_old;
while (1)
{
// if player has been created get inputs for him
if (player)
{
force_x_old = player.force_x; //store old force values
force_y_old = player.force_y;
player.force_x = 0; // set force to 0 until we get key input
player.force_y = 0;
player.force_x = (key_cuu - key_cud) * time_step ;
player.force_y = (key_cul - key_cur) * time_step ;
// if any forces have changed, send new forces to server
if(player.force_x != force_x_old || player.force_y != force_y_old)
{
// if client, send forces to server, if we are single/host/server values need not
// be sent
if(connection == 2)
{
send_skill(player.force_x,SEND_VEC); // send force vec to server
}
}
}
wait(1);
}
}

function main()
{
video_mode = 6;
fps_max = 100; // limit the number of data packets that are sent each second to 60
level_load(roller_str);
wait(2);
spawn_player();
while(1)
{
input_scan();
move_camera();
wait(1);
}
}

function spawn_player()
{
wait(-1);
if (connection == 3)
{
player = ent_create("inmate.mdl",vector(-250,200,1),move_someone);
}
else
{
player = ent_create("cbabe.mdl",vector(-275,250,1),move_someone);
}
}

function move_player()
{
number_of_players += 1; // now that new player's entity has been &
// increment number_of_players
send_var(number_of_players); // send new number_of_players to all clients
my.player_number = number_of_players; // set the player_number skill
send_skill(my.player_number, SEND_ALL); // send player_number skill to all clients
// this code is to solve high latency creation problem
wait(-.3); // this can be left at .3 no matter what
ent_sendnow(my);
wait(-.3); // sleep(3); // high latency solution for now
force[0] = my.force_x * time_step;
force[1] = my.force_y * time_step;
force[2] = 0;
move_mode = GLIDE|IGNORE_PASSABLE|IGNORE_PASSENTS|IGNORE_YOU;
c_move(my, force, nullvector,move_mode);
}

function move_camera()
{
while (!player)
{
wait(1);
}
camera.x = player.x + 100;
camera.y = player.y;
camera.z = 10;
camera.tilt = 0;
camera.pan = 180;
}