XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > StarCraft (только чтение)> Галактическая академия
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
yellyex

offline
Опыт: 4,667
Активность:
Глюки интерфейса в батлнете.
Привет!
При нажатии на экранную кнопку создаётся диалоговое окно с кнопками. При тесте, нажимая на кнопки диалогового окна, всё балгополучно удаляется и создаётся заного (у меня такое меню в интерфейсе) и кнопки и новые диалоговые окна. А вот в батлнете карта лежит не у меня на компе, а где-то там далеко и при нажатии на кнопки происходит задержка удаления и создания новых диалоговых окон и кнопок. При нажатии чуть быстрее на кнопки, старые диалоговые окна просто не исчезают. Даже при нажатии специальной кнопки, которая уничтожает все диалоговые объекты и окна, они остаются. Кто сталкивался с этой проблемой? Кто может мне помочь?
Старый 14.05.2012, 15:24
Zolden

offline
Опыт: 1,588
Активность:
Попробуй добавить в реакцию кнопок условия, которые делали бы задержку неспособной повлиять на результат нажатия.
Например, у меня была кнопка, которая псле нажатия должна исчезнуть. Но из-за задержки, игрок успевал нажать на неё несколько раз, так что функция выполнялась многократно. Я просто поставил счётчик, чтоб функция выполнялась только один раз.

Отредактировано Zolden, 14.05.2012 в 17:12.
Старый 14.05.2012, 17:06
yellyex

offline
Опыт: 4,667
Активность:
Zolden, Какой счётчик? Возможно это мой выход!!! :) Скажи пожалуйста конкретнее, а то я уже ставлю массивы к переменным на случай многократного нажатия, чтобы потом их все удалить :)
Старый 14.05.2012, 17:21
Zolden

offline
Опыт: 1,588
Активность:
ну, не счётчик, просто проверка условия, что кнопка уже один раз была нажата, чтоб в случае повторного нажатия функция не выполнялась
в твоём случае тоже надо проверять условия, а не сражу по нажатии выполнять действие
Старый 14.05.2012, 17:41
yellyex

offline
Опыт: 4,667
Активность:
Просто если сигнал ещё не дошёл... Ну по конкретней какое условие?
Старый 14.05.2012, 17:47
ScorpioT1000
Работаем
online
Опыт: отключен
событие - нажата
действие
  • если (была нажата = да)
    • ничего
  • иначе
    • задать была нажата = да
    • сделать действие
    • подождать 1 сек
    • задать была нажата = нет
простые семафоры =)
Старый 14.05.2012, 18:38
yellyex

offline
Опыт: 4,667
Активность:
Спасибо ScorpioT1000 и Zolden. Проблема заключалась в большой загруженности триггера. Я разделил триггер на две части. Первая часть отвечает за включение триггера с основными данными, которых много. И в первом триггере я поставил проверку из целочисленных, если 1 до НЕТ, если 0, то да. И таких переменных-целочисленных сделано на каждый триггер. Изначально все переменные имеют значение 1. При нажатии на кнопку, "лёгкий", первый триггер быстрее доходит до сервера (я так думаю) и задаёт значение первой переменной 1, и после запускает, "тяжёлый", основной триггер с данными. И теперь сколько бы и как быстро бы я не кликал на кнопку она не нажмётся несколько раз. Спасибо "лёгкому" триггеру за его быстроту. Но если честно, то я ещё до конца не уверен, что дело в скорости передачи данных к серверу. Но мне это уже не важно. Главное я получил нужный результат и закрепил его тестами. Теперь осталось только это хорошо оформить.
Старый 15.05.2012, 07:12
Zolden

offline
Опыт: 1,588
Активность:
Кстати да. Вроде бы на батлнете лимит времени, отводимый для триггеров, меньше локального. Так что однажды я никак не мог понять, почему мой триггер на сервере делал не всё, что делал при локальных тестах. Оказалось, он был слишком вычислительноёмкий, тоже пришлось разбивать.
Старый 15.05.2012, 13:24
ScorpioT1000
Работаем
online
Опыт: отключен
А если он будет бесконечный, периодический, то что? Вон из доджа?
Старый 15.05.2012, 15:48
Zolden

offline
Опыт: 1,588
Активность:
ScorpioT1000:
А если он будет бесконечный, периодический, то что? Вон из доджа?
Если используется wait, то всё ок. Насколько я понимаю, команда wait прекращает выполнения триггера и возобновляет его по событию от таймера. То же самое с периодическими триггерами. Но если триггер непрерывно вычисляетя некоторое время, то его прерывают. В патче 1.5 повысили некоторе лимиты, может и временной повысят.
Старый 15.05.2012, 17:41
Зевс
Адская Зверюга
offline
Опыт: 152,154
Активность:
Как бы очень полезно все разделять на действия, запуская их в персональных ветках (галочку ставим).
Старый 19.05.2012, 23:46

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:54.