Есть тема с клокой, вроде никто не писал.
Не знаю как одним предложением, попробую по пунктам.
Есть тик сервера и пинг.
Эффект - нажатие на модуль некоторое время не приводит к отображению его работы, а потом отображается как например уже прошло 1/3 цикла (зависит от положения в очереди событий в тике). Иногда отлично видно на старте/завершении АБ или МВД.
Т.е. несовпадение визуализации работы модуля с его реальной активность.
Ситуация.
Я вышел из гейта. Нажимаю "апрочь" и "клока". Если нажать по очереди но быстро - вылазит табличка "нельзя заклочится в послегейтовой клоке". Нажимаю еще раз. табличка висит, реакции нет. Нажимаю еще раз (2-3 раза) - табличка пропала, визуализирутся отмена клоки, так как она сработала без визуализации на второй (трертий, точнее предыдущий) раз, и очередное нажатие нажатие на визуально не работающий модуль его отключило, и вывело корабль из клоки. Фейл.
Как я понимаю, технически дело в том, что событие выхода из послегейтовой клоки смещается сервером в конец очереди событий тика. При этом событие активации модуля остается не месте, и как следствие из за изменения очерёдности сервером, выдает ошибку.
Сейчас получается лотерея: надо угадать момент окончания тика сервера с учетом пинга чтобы с учетом смещения событий в очереди, выход из послегейтовой клоки и заклочиванием не пришлись на один тик.
Решение: при активации клоки, она не деактивирутся повторным нажатием хотя бы 1-2 секунды что бы игрок как минимум увидел включилась клока или нет.
Т.е. сделать паузу на выход из клоки на 1-2 секунду 1-2 тика. что будет достаточно для запуск анаимации) после ее первоначального запуска аналогично тому, как есть реактивация на повторное заклочивание.
Изменить приоритет события выхода из псолегейтовой клоки, а тем более отправлять заколачивание в конец очереди, чтобы соблюдалась очередность команд, совсем не вариант.
Сообщение отредактировал PIoneer.by: 01 August 2013 - 11:15