Das müsste (!) eigentlich funktionieren, versuche doch aber mal folgendes (habe hier keiner kein Gamestudio, daher ist es nur als Skizze zu verstehen und ohne Formatierung zu lesen):

{
...
dplay_localfunction = 2;
dplay_entrate = 100;
dplay_smooth = 0;
...
}


void train_event() { my.skill1 = 0; }

void update_train() {
while(my.skill1) {
if(my.client_id == dplay_id) {
my.dplay_x = my.x;
}
if(my.skill2 < 0) {
if(my.dplay_x != my.old_dplay_x) {
my.old_dplay_x = my.dplay_x;
send_skill(my.dplay_x,SEND_ALL);
}
my.skill2 = 2; // max. 8 mal pro Sekunde senden
}
else { my.skill2 -= time_step; }
wait(1);
}
}

action act_train() {
while(my.client_id < 0) { wait(1); }
my.emask |= ENABLE_DISCONNECT (heißt das so?);
my.event = train_event;
my.smask |= NOSEND_ORIGIN | NOSEND_ANGLES | NOSEND_...;
update_train();
my.skill1 = 1;
while(my.skill1) {
if(my.client_id == dplay_id) {
my.x += 10*(key_w-key_s)*time_step;
}
else {
my.x += (my.dplay_x-my.x)*0.1*time_step;
}
wait(1);
}
ptr_remove(me);
}

Nun spawnt jeder Klient, der dem Spiel beitritt, eine Entity mit act_train. Es sollte funktionieren. Jedoch wird der Zug zwischen den Positionen unschön beschleunigen und abbremsen, weshalb du die Zeit der empfangenen Updates speichern musst (bspw. im Entity-Event per event_receive) und anhand dessen lokal die Geschwindigkeiten errechnen musst.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends