Gamestudio Links
Zorro Links
Newest Posts
loading historical data 1st time
by AndrewAMD. 04/14/23 12:54
Trade at bar open
by juanex. 04/13/23 19:43
Bug in Highpass2 filter
by rki. 04/13/23 09:54
Adding Limit Orders For IB
by scatters. 04/11/23 16:16
FisherN
by rki. 04/11/23 08:38
AUM Magazine
Latest Screens
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Hecknex World
Who's Online Now
0 registered members (), 938 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
rki, FranzIII, indonesiae, The_Judge, storrealba
18919 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
locoweeds tutorial #81029
07/11/06 19:30
07/11/06 19:30
Joined: Feb 2006
Posts: 2,185
mpdeveloper_B Offline OP
Expert
mpdeveloper_B  Offline OP
Expert

Joined: Feb 2006
Posts: 2,185
how can i set the player pointer to handle multiple people? i was using locoweeds tutorial, and it works, except when i load the level the server takes control of both players, i am not using templates, so would this be a problem?

Code:

define MAX_CONNECTIONS, 4; // maximum number of people who can be connected to server
var pos[3] = 0,0,0;
var people_connected = 0; // number of people connected to server
var number_of_players = 0; // # of players in game
var server_says_start = 0; // client holds creating entity until server says go
var temp_loc[3]; // temp vector
var vecFrom[3]; // temp vectors
var vecTo[3];
// display strings
string str_people_connected; // number of people connected to server
string str_temp; // temp string
string mecha01 = <hov_mecha_bones.mdl>;
string create_pos;

include <action.wdl>;



text txt_people_connected
{
pos_x = 0;
pos_y = 65;
layer = 15;
font _a4font;
string str_people_connected;
}

function display_info()

{
while(1)
{
str_cpy(str_people_connected, "People Connected: ");
str_for_num(str_temp, people_connected);
str_cat(str_people_connected, str_temp);
wait(1);
}
}

function server_called()

{
// if new player connected, increment people connected

if ((event_type == event_join) && (people_connected < MAX_CONNECTIONS))
{
ifdef server;
people_connected += 1; // another person connected
send_var(people_connected); // send number of people connected
server_says_start = 1; // send it's ok to go to newest client
send_var(server_says_start); // send start message
endif; // ifdef server
}

// some one disconnected
if (event_type == event_leave)
{
ifdef server;
people_connected -= 1; // one less person connected to server
send_var(people_connected); // send number of people connected
endif;
}
}


function spawn_ent_multi()

{
if (connection == 3)
{
player = ent_create(mecha01,pos,player_serv); //if you are the server, set you up as server
player.heavy_mech = on;
}
if (connection == 2)
{
player = ent_create(mecha01,pos,player_client); //if you are a client, set you up as a client
}
}



also only the server controls someone, the client doesn't do anything...


- aka Manslayer101
Re: locoweeds tutorial [Re: mpdeveloper_B] #81030
07/14/06 14:36
07/14/06 14:36
Joined: Feb 2006
Posts: 2,185
mpdeveloper_B Offline OP
Expert
mpdeveloper_B  Offline OP
Expert

Joined: Feb 2006
Posts: 2,185
???
would ent_createlocal fix this problem?


- aka Manslayer101
Re: locoweeds tutorial [Re: mpdeveloper_B] #81031
07/16/06 07:48
07/16/06 07:48
Joined: Sep 2005
Posts: 159
The Netherlands
D
Dutchie666 Offline
Member
Dutchie666  Offline
Member
D

Joined: Sep 2005
Posts: 159
The Netherlands
are you sure that you get the inputs from the user(client) "external"?
like this:

function create_player(){

player = ent_create(mecha01,pos,player_client); // <== move according to the skills the player has
get_input(); // <== this function gets the input en sends it to the server with send_skill
move_camera(); // <== camera

}

because if you get the inputs in the player action only the server will see that...

Re: locoweeds tutorial [Re: Dutchie666] #81032
07/18/06 14:45
07/18/06 14:45
Joined: Feb 2006
Posts: 2,185
mpdeveloper_B Offline OP
Expert
mpdeveloper_B  Offline OP
Expert

Joined: Feb 2006
Posts: 2,185
Code:

function hov_mecha_fire()
{
var missle_1_fired;
fire_time += 0.1 *time;
while (my != null)
{
if (weapon_num == 0)
{
my.ammo = 1000;
if (fire_key && my.ammo > 0)
{
if (fire_time > .2)
{
spawn_bullet_chaingun();
my.ammo -= 1;
fire_time = 0;
}
}
}

if (weapon_num == 1)
{
my.ammo = 12;
if (fire_key && my.ammo > 0)
{
if (fire_time > 1)
{
spawn_laser();
my.ammo -= 1;
fire_time = 0;
}
}
}

if (weapon_num == 2)
{
my.ammo = 24;
if (fire_key && my.ammo > 0)
{
var temp2;
temp = 2000;
vec_set (temp2.x, camera.x);
vec_set (temp2.pan, camera.pan);
vec_set (temp2.tilt, camera.tilt);
vec_rotate (temp2.pan, player.pan);
trace_mode = ignore_me + ignore_maps + ignore_passable;
trace (temp2, temp); //scan 2000 quants for object
if (target < 2000)
{
wait(50);
locked_on = 1;
}
else
{
locked_on = 0;
}
if (fire_time > 0.7 && missle_1_fired < 1)
{
spawn_missle_1();
spawn_missle_2();
my.ammo -= 2;
fire_time = 0;
}
}
if (alt_fire_key && my.ammo > 0)
{
if (fire_time > 2)
{
//spawn_3miss_right();
//spawn_3miss_left();
my.ammo -= 6;
fire_time = 0;
}
}
}
wait(1);
}
}

function movement_func()
{
while (player != null)
{
ent_cycle ("idle", my.idle_percent);
move_mode = ignore_passents;

if (evade_fwd == off || evade_back == off || evade_left == off || evade_right == off)
{
cut_off_evade = 0;
}
if (walk_key == on) //walk forward
{
ent_cycle ("walk", my.walk_percent);
my.walk_percent += 3 *time;
ent_move (vector (my.walk_speed *time,0,0),nullvector);
}

if (evade_fwd) //if it's double tapped, evade
{
use_energy = 1;
while (cut_off_evade < 6 && energy > 0)
{
cut_off_evade += 1 *time;
energy -= 8 *time;
ent_move (vector (my.evade_speed *time,0,0),nullvector);
wait(1);
}
}

if (backpedal_key == on) //walk backward
{
ent_move (vector (- my.back_speed *time,0,0),nullvector);
}

if (evade_back == on) //if it's double tapped, evade
{
use_energy = 1;
while (cut_off_evade < 6 && energy > 0)
{
cut_off_evade += 1 *time;
energy -= 8 *time;
ent_move (vector (- my.evade_speed *time,0,0),nullvector);
wait(1);
}
}


if (lstrafe_key == on) //strafe left
{
ent_move (vector (0,my.strafe_speed *time,0),nullvector);
/*my.strafe_percent += 3 *time;
ent_animate (my, "s_left" , my.strafe_percent, 0);*/
}


if (evade_left == on) //if it's double tapped, evade
{
use_energy = 1;
while (cut_off_evade < 6 && energy > 0)
{
cut_off_evade += 1 *time;
energy -= 8 *time;
ent_move (vector (0,my.evade_speed *time,0),nullvector);
wait(1);
}
}


if (rstrafe_key == on) //strafe right
{
move_mode = ignore_passents;
ent_move (vector (0,- my.strafe_speed *time,0),nullvector);
/*my.strafe_percent += 3 *time;
ent_animate (my, "s_right" , my.strafe_percent, 0);*/
}


if (evade_right == on) //if it's double tapped, evade
{
use_energy = 1;
while (cut_off_evade < 6 && energy > 0)
{
cut_off_evade += 1 *time;
energy -= 8 *time;
ent_move (vector (0,- my.evade_speed *time,0),nullvector);
wait(1);
}
}

else
{
my.tilt = 0;
my.roll = 0;
}

if (jump_key == on) //boost and drain energy
{
if (energy > 0)
{
use_energy = 1;
energy -= 5 *time;
c_move (my, vector (0,0, my.boost_speed *time), nullvector, glide + ignore_passable);
}
}

else
{
use_energy = 0;
}

ent_move (vector (0,0, -my.fall_speed *time), nullvector);
c_trace(my.x, vector(my.x, my.y, my.z -500),ignore_me|ignore_passable|ignore_sprites);
if((normal.x != 0) || (normal.y != 0))
{
temp.tilt = 0;
temp.roll = 0;
temp.pan = -my.pan;
vec_rotate(normal, temp);
temp.tilt = -asin(normal.x);
temp.roll = -asin(normal.y);
my.tilt += 0.2*ang(temp.tilt - my.tilt);
my.roll += 0.2*ang(temp.roll - my.roll);
}
//if i am inside a block
if(c_content(vector(my.x,my.y,my.z + my.min_z),0) == CONTENT_SOLID)
{
// Then move me a little upwards
ent_move (vector (0, 0, 3 *time), nullvector);
}
wait(1);
}
}

action player_serv
{
player = me;
my.scale_x = .5;
my.scale_y = .5;
my.scale_z = .5;
my.enable_scan = on;
my.event = miss_track_event;
energy_recharge();
double_tap_key();
my.fat = on;
movement_func();
my.polygon = on;
while (my != null)
{
if (my.fast_mech == on)
{
my.health = 500;//health for heavy mech
my.walk_speed = 35; //walk speed for heavy mech
my.back_speed = 30; //backpedal speed for heavy mech
my.strafe_speed = 30; //strafing speed for heavy mech
my.evade_speed = 100; //evade speed for heavy mech
my.boost_speed = 90; //boosting speed for heavy mech
my.fall_speed = 25; //fall speed for heavy mech

}
if (my.balanced_mech == on)
{
my.health = 700; //health for balanced mech
my.walk_speed = 25; //walk speed for balanced mech
my.back_speed = 20; //backpedal speed for balanced mech
my.strafe_speed = 20; //strafing speed for balanced mech
my.evade_speed = 85; //evade speed for balanced mech
my.boost_speed = 75; //boosting speed for balanced mech
my.fall_speed = 35; //fall speed for balanced mech
midsaber_func();

}
if (my.heavy_mech == on)
{
my.health = 900; //health for heavy mech
my.walk_speed = 15; //walk speed for heavy mech
my.back_speed = 15; //backpedal speed for heavy mech
my.strafe_speed = 15; //strafing speed for heavy mech
my.evade_speed = 70; //evade speed for heavy mech
my.boost_speed = 60; //boosting speed for heavy mech
my.fall_speed = 45; //fall speed for heavy mech

hov_mecha_fire(); //include the heavy mech firing function
}
wait(1);
}
ent_create ("block.mdl", vector(my.x + 100, my.y, my.z + 100), dyn_light);
}

action player_client
{
player = me;
my.scale_x = .5;
my.scale_y = .5;
my.scale_z = .5;
my.enable_scan = on;
my.event = miss_track_event;
energy_recharge();
double_tap_key();
my.fat = on;
movement_func();
my.polygon = on;
while (my != null)
{
if (my.fast_mech == on)
{
my.health = 500;//health for heavy mech
my.walk_speed = 35; //walk speed for heavy mech
my.back_speed = 30; //backpedal speed for heavy mech
my.strafe_speed = 30; //strafing speed for heavy mech
my.evade_speed = 100; //evade speed for heavy mech
my.boost_speed = 90; //boosting speed for heavy mech
my.fall_speed = 25; //fall speed for heavy mech

}
if (my.balanced_mech == on)
{
my.health = 700; //health for balanced mech
my.walk_speed = 25; //walk speed for balanced mech
my.back_speed = 20; //backpedal speed for balanced mech
my.strafe_speed = 20; //strafing speed for balanced mech
my.evade_speed = 85; //evade speed for balanced mech
my.boost_speed = 75; //boosting speed for balanced mech
my.fall_speed = 35; //fall speed for balanced mech
midsaber_func();

}
if (my.heavy_mech == on)
{
my.health = 900; //health for heavy mech
my.walk_speed = 15; //walk speed for heavy mech
my.back_speed = 15; //backpedal speed for heavy mech
my.strafe_speed = 15; //strafing speed for heavy mech
my.evade_speed = 70; //evade speed for heavy mech
my.boost_speed = 60; //boosting speed for heavy mech
my.fall_speed = 45; //fall speed for heavy mech

hov_mecha_fire(); //include the heavy mech firing function
}
wait(1);
}
ent_create ("block.mdl", vector(my.x + 100, my.y, my.z + 100), dyn_light);
}



this is my action codes for the client and server, how can i change this?


- aka Manslayer101
Re: locoweeds tutorial [Re: mpdeveloper_B] #81033
07/24/06 22:50
07/24/06 22:50
Joined: Feb 2006
Posts: 2,185
mpdeveloper_B Offline OP
Expert
mpdeveloper_B  Offline OP
Expert

Joined: Feb 2006
Posts: 2,185
i'm not asking for a re-write of code. How can i send the functions in the above code to each individual player?


- aka Manslayer101
Re: locoweeds tutorial [Re: mpdeveloper_B] #81034
07/25/06 07:35
07/25/06 07:35
Joined: Sep 2005
Posts: 159
The Netherlands
D
Dutchie666 Offline
Member
Dutchie666  Offline
Member
D

Joined: Sep 2005
Posts: 159
The Netherlands
maybe you are searching for
proc_local
??


Moderated by  HeelX, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1