Сообщение от
Animagus
Как было ранее:
1. Игрок А станит игрока Б
2. Сервер пытается остановить игрока Б по текущим серверным координатам
3. Сервер посылает информацию о том, что игрок Б в стане всем игрокам вокруг, в том числе игроку Б.
4. Все игроки вокруг останавливают игрока Б там, где он отображается у них в текущий момент.
Основная проблема в этой схеме в том, что между 2 и 3 шагом игрок Б может продолжать двигаться, поэтому в шаге 4 положение игрока Б может отображаться по разному, у самого игрока Б и игроков вокруг.
На оффе это выглядит иначе:
1. Игрок А станит игрока Б
2. Сервер отправляет игроку Б информацию о том, что он в стане
3. Игрок Б останавливается и отправляет на сервер координаты, где он остановился
4. Сервер получает данные от игрока Б и отправляет их всем игрокам вокруг
Таким образом все игроки вокруг получают точную информацию о том, где остановился игрок Б.
Таким же образом должны работать другие действия, влияющие на движение игрока (изменение скорости, начало полета и т.д.). Если изменение для обездвиживания будет работать как надо, то это будет применено и для других действий.