Jeżeli serwer w równych odstępach czasu wszystkim mówi pozycje wszystkich graczy tak jak je obecnie zna, to dużo lepsze wyjście niż poprzednie.
Podawanie pozycji zrób na clientside, ale wszelkie inne dane (zdrowie, itd) trzymaj po stronie serwera, koniecznie. Jeżeli martwią Cię speedhacki do których może dojść manipulacją pozycji gracza, to trzymaj informację o odległościach czasowych między update'ami gdzieś w danych serwera (używaj do tego current_time) i sprawdź czy prędkość na sekundę(wektor z ostatniego updateu do obecnego) nie przekracza jakieś absurdalnej wartości, której nie ma prawa przekroczyć(np. 110% standardowej prędkości postaci).
Jeżeli chodzi o buffer_tell - Nie miałem okazji tego używać, z opisu w dokumentacji nie jestem pewien, czy to dobre rozwiązanie, bo pozycja wewnąrz bufera, a faktyczna wielkość, która może się różnić przez nagłówki(czy coś podobnego, czego nie jestem dokładnie świadom) to mogą być dwie różne rzeczy. Jeśli możesz poświęć czas na zmianę w kodzie aby używać buffer_get_size, dla uniknięcia problemów.
teraz na sam koniec: Jeśli chodzi o tylko informacji o naciśnięciu klawisza, jeżeli będzie Ci tak działało, to okej. Osobiście zrobiłbym to inaczej.