////////////////////////////////////////////////////////////////////////////
// simple lite-C LAN game
////////////////////////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>
action player_move() // control the player on the client, move it on the server
{
var walk_percentage = 0;
while (1)
{
if (my.client_id == dplay_id) { // the following code runs on the player's client only
my.skill1 = key_w - key_s; // forward/backward
my.skill2 = key_a - key_d; // rotation
send_skill(my.skill1,0); // send skill1-2 to the server
send_skill(my.skill2,0);
}
if (connection & CONNECT_SERVER) { // the following code runs on the server only
my.pan += my.skill2*5*time_step; // rotate the entity using its skill2
var distance = my.skill1*5*time_step;
c_move(me, vector(distance,0,0), NULL, GLIDE); // move it using its skill1
walk_percentage += distance;
ent_animate(me,"walk",walk_percentage,ANM_CYCLE); // animate the entity
}
wait (1);
}
}
function main()
{
if (!connection)
error("Start as server or client!");
else
while (dplay_status < 2) wait(1); // wait until the session is opened or joined
dplay_localfunction = 2; // run actions both on server and client
level_load ("multiplayer6.wmb");
vec_set(camera.x, vector (-600, 0, 100)); // set a proper camera position
if (connection & CONNECT_SERVER) // this instance of the game runs on the server
ent_create ("redguard.mdl", vector (100, 50, 40), player_move); // then create the red guard!
else // otherwise, it runs on a connected client
ent_create ("blueguard.mdl", vector (-100,-50, 40),player_move); // create the blue guard
}