|
0 registered members (),
938
guests, and 4
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
locoweeds tutorial
#81029
07/11/06 19:30
07/11/06 19:30
|
Joined: Feb 2006
Posts: 2,185
mpdeveloper_B
OP
Expert
|
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
OP
Expert
|
OP
Expert
Joined: Feb 2006
Posts: 2,185
|
??? would ent_createlocal fix this problem?
- aka Manslayer101
|
|
|
Re: locoweeds tutorial
[Re: Dutchie666]
#81032
07/18/06 14:45
07/18/06 14:45
|
Joined: Feb 2006
Posts: 2,185
mpdeveloper_B
OP
Expert
|
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
OP
Expert
|
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
|
|
|
|