Jop, hab ich durchgelesen, ich hab daraus sogar Code für den Anfang kopiert -.- *schähm* ^^
über die while-Schleifen oder das mit dem Pan-Winkel bei der Bewegung bitte darüber weg sehn, ich schreib das meist etwas kompliziert hin und wenn es vom Prinzip funktioniert, optimiere ich das dann noch ^^
Okay, dann hier etwas Code:
Die mainfunktion steht im ersten Code-Block zu unterst. Syntaxfehler(sowas wie Semikolon vergessen oder so), die eigentlich Fehlermeldungen produzieren würden, sind mir dann beim hier hereinkopieren passiert, die Engine läuft das bei mir problemlos durch.
Code:
function create_player()
{
	enet_ent_create("spieler01_unten.mdl",vector(random(100), 0, 0),"move_player");
	wait(1);
}

string playername_str = "#50"; 
//client event beim einklinken
function connected_with_server(sender, msg)
{
	inkey(playername_str); //Lässt den Spieler einen Spielernamen eingeben 
	enet_set_playername(playername_str); //Speichert den Spielernamen 
	if(enet_get_connection() == CLIENT_MODE) //if started as client
	{
		error("neuer client");
		//level_load(msg); //loads the level which is loaded on the server
		level_load("level_001__test.wmb"); //loads the level which is loaded on the server
		wait(3); //wait until the level is loaded
		enet_ent_synchronize(); //sends a synchronizing request
	}
	else //started as server or server/client
	{
		error("neuer server");
		create_player(); //creates the correct character
	}
}

function synchronizing_complete(sender, msg)
{
	create_player(); //creates the correct character
}

function start_client(ip)
{l
	enet_init_client(ip,used_port,""); //initializes a client
}

function start_server()
{
	while(key_F1){wait(1);} // zum schnell testen mit F1 server
	level_load("level_001__test.wmb"); //Loads the first Level
	wait(3); //wait until the level is loaded
	while((enet_init_server(used_port,max_players,""))==ANET_ERROR)	{wait(1);}
	enet_set_level("level_001__test.wmb"); //sets the level
	wait(4);
	//start_client("localhost"); // server spielt auch mit
	start_client("255.255.255.255");
}

function test_start_client() //zum testen den Client dazu
{
	while(1)
	{
		if(KEY_F2)
		{
			//start_client("localhost");
			start_client("255.255.255.255");
			break;
		}
		wait(1);
	}
}

function main()
{
	fps_max = 60;
	wait(1); //wait for the plugin to get loaded
	if((enet_init())==ANET_ERROR){exit;}
	anet_set_compatibility(1);
//enet_svset_event(EVENT_DISCONNECTED,"client_disconnected");
	enet_clset_event(EVENT_CONNECTED,"connected_with_server");
	//enet_clset_event(EVENT_DISCONNECTED,"disconnected_from_server");
	enet_clset_event(EVENT_SYNCHRONIZED,"synchronizing_complete");
	//enet_clset_event(EVENT_LEVEL,"change_level_event");
	//sets userevents:
	//enet_svset_event(16,"kick_client");
	//enet_svset_event(17,"receive_chatmsg");
	//enet_clset_event(17,"receive_chatmsg");
	level_load(""); //loads an empty level
	wait(3); //wait until the level is loaded
	//shows the mouse
	mouse_mode = 1;
	mouse_map = arrow_bmap;
	test_start_client(); //temp
	while(1)
	{
		//gets some info vars:
		enet_connection = enet_get_connection();
		enet_clientid = enet_get_clientid();
		enet_clients = enet_connected_clients();
		ping = enet_get_ping();
		//controls the mouse:
		MOUSE_POS.X = POINTER.X;
		MOUSE_POS.Y = POINTER.Y;
		wait(1);
	}
}
ON_F1 = start_server(); //test


das ist die Mainfunktion und was den Server+Client initialisiert.
Die Spielerfunktion ist hier:
Code:
function oberes_teil()
{
	while(enet_ent_globpointer(my) == ANET_ERROR) {wait(1);}
	my.passable = on;
	while(1)
	{
		you = enet_ent_locpointer(my.entity_handle);
		vec_set(my.x,you.x);
		vec_set(temp.x,vector(mouse_pos.x,mouse_pos.y,camera_dist));
		vec_for_screen(temp,camera);
		temp.z = 0;
		vec_sub (temp.x, you.x);
		vec_to_angle (my.pan, temp); // rotate it towards the target
		wait(1);
	}
}
function move_player() 
{
	my.leben = 100;
	my.max_leben = 100;
	my.mana = 100;
	my.max_mana = 100;
	var dist_move[3];
	var moved_dist; //die Distanz, die zurückgelegt wurde (damit wird überprüft, ob Spieler bewegt wurde, wenn ja -> broadcast)
	var moved_pan; //die Drehung, die zurückgelegt wurde (damit wird überprüft, ob Spieler bewegt wurde, wenn ja -> broadcast)
	while(enet_ent_globpointer(my) == ANET_ERROR) {wait(1);}
	you = enet_ent_create("spieler01_oben.mdl",vector(my.x,my.y,my.z),"oberes_teil");
	while(enet_ent_globpointer(you) == ANET_ERROR) {wait(1);}
	you.entity_handle = enet_ent_globpointer(my);
//	updates();	//updates für Charakter-Wert-Balken u.ä.
	while(1)
	{
		if(enet_ent_creator(enet_ent_globpointer(my)) == enet_get_clientid()) 
		{
			while(my.leben>0) 
			{
				if(key_A+key_W+key_D+key_S>0)	{dist_move.x = 25*time;} else {dist_move.x = 0;}


				moved_dist = c_move(my,dist_move,nullvector,IGNORE_PASSABLE|GLIDE|IGNORE_PUSH); 
				if(abs(moved_dist) > 0) //Wenn sich die Entity bewegt hat 
				{ 
					enet_set_unreliable(1); //damit die Position unreliable gesendet wird 
					//sendet die neue Position an alle: 
					enet_send_pos(enet_ent_globpointer(my),BROADCAST,0); 
					enet_set_unreliable(0); //schaltet unreliable wieder aus 
					//damit andere Sendfunktionen nicht beeinflusst werden 
				}
				if(key_W)	{moved_pan =  90;}
				if(key_A)	{moved_pan = 180;}
				if(key_S)	{moved_pan = 270;}
				if(key_D)	{moved_pan =   0;}
				if(key_W && key_D)	{moved_pan =  45;}
				if(key_S && key_D)	{moved_pan = 315;}
				if(key_S && key_A)	{moved_pan = 225;}
				if(key_W && key_A)	{moved_pan = 135;}
				if(moved_pan != my.pan) //wenn der Player gedreht wurde 
				{
					my.pan = moved_pan;
					enet_set_unreliable(1); 
					//sendet die neuen Winkel an alle: 
					enet_send_angle(enet_ent_globpointer(my),BROADCAST,ONLYSEND_PAN);
					enet_set_unreliable(0); 
				}
				kamera_bewegung();  //if(key_F){erster_slot+=1;} enet_send_skill(enet_ent_globpointer(my),1,1,BROADCAST);
				wait(1);
			}
		}
		wait(1);
	}
}


Ich hab das aus dem 3D-Chat-workshop(der echt toll ist!).
Der Server wird erstellt.
Er clinkt sich dabei selbst als Client ein und erstellt ne Spielfigur.
Clients joinen und per enet_clset_event->EVENT_CONNECTED wird synchronisiert.
Durch das ausgelöste enet_clset_event->EVENT_SYNCHRONIZED wird eine Spielfigur für den Clienten erstellt.
Doch wenn ich das ausführe, passiert das, was ich vorhin beschrieben habe -
1. Servervlient: 2 entities (ober- und unterkörper)
weiterer client: 6 entities
dritter client: 12 entities
jeder kann sich bewegen, es ist alles "normal" - mir ist das erst garnicht aufgefallen, nur durch die Anzahl der Entities später.
Die, die zusätzlich "nicht da sein dürften" "kleben" an der Serverclient-Entity.