ARHUI
offline
Опыт:
3,341Активность: |
Ворота глючат.
Ниже приведу много кода, я запарился, не понимаю в чем ошибка, но иногда ворота не работают должным образом.
Описание функций: Код:
как видно при входе и выходе юнита из области вызываются функции: Код:
так много похожих функций из-за того что TriggerAddAction( t, function gate3 ) не берет параметры, а вообще нужна одна вот эта функция: Код:
данная функция считает количество героев в области, чтобы не открывать ворота два раза: Код:
'H024' - это герой на которого ворота должны реагировать, если ворота живы... Чтобы открыть ворота их надо убить но при этом сохранить переменную что их не убивали, и значение их жизни перед открытием... Убитые ворота помечаются триггером: Код:
Также ворота можно починить, и вслучае починки их надо отметить как не убитые: Код:
Проблема в том что в сетевой игре бывают случаи когда ворота начинают работать наоборот, когда никого нет в области то они открыты когда заходят то закрыты, так я и не понял как это возможно, надеюсь на помощь... Я понимаю что вывалил кучу кода, но у меня уже руки опускаются... |
24.04.2011, 11:58 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AiDSeller
За здоровый образ жизни
offline
Опыт:
6,094Активность: |
ARHUI, так что именно надо сделать? А то из кода я, если честно, не вижу. |
24.04.2011, 12:56 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ARHUI
offline
Опыт:
3,341Активность: |
Чтобы ворота не начинали работать наоборот. Тоесть может кто-то увидит последовательность которая приводит к этому... Я вот уже не первый день смотрю и не вижу, однако в игре нет нет да и заглючит воротина(не все обычно одна)...
|
24.04.2011, 12:58 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AiDSeller
За здоровый образ жизни
offline
Опыт:
6,094Активность: |
ARHUI, я посмотрел на код и решил.
Смотри. Ворота начинают реагировать только тогда, когда нужный юнит ближе, чем в радиусе 600. Выход из этой ситуации один:
Всё просто! |
24.04.2011, 13:03 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ARHUI
offline
Опыт:
3,341Активность: |
А я не понял, зачем способность давать? Единственное место в коде где отслеживается дистанция, это при ремонте, чтобы привязать вхождение цикла к конкретным воротам возле которых стоит герой.
|
24.04.2011, 13:11 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AiDSeller
За здоровый образ жизни
offline
Опыт:
6,094Активность: |
ARHUI, ну раз ворота не открываются, то ведь надо же их как-то пройти! Вот тебе и способность "Скачок". Всё просто! |
24.04.2011, 13:14 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ARHUI
offline
Опыт:
3,341Активность: |
Нормально -
герой подошел к воротам - открылись, герой отошел от ворот и возле ворот не других героев - закрылись. герой закончил починку ворот - открылись. Ошибка герой подошел к воротам - закрылись, герой отошел - открылись если герой возле ворот и они закрыты то надо подойти другим героем и первым героем уйти - тогда все снова работает... Я вот не понимаю как эта ошибка возникает из вышеприведенного кода... |
24.04.2011, 13:25 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Gudfree
гуи (V)_( Oo )_(V)
offline
Опыт:
8,233Активность: |
|
24.04.2011, 14:13 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AiDSeller
За здоровый образ жизни
offline
Опыт:
6,094Активность: |
xak12, со "Скачком" мой метод слишком муторный. Можно как сделать: Давать спеллбук, в котором есть "Скачок" и скрывать его с самого начала игры. А при приближении к воротам снова показывать. Всё просто! Хотя... Твой метод тоже ничего! Хотя, стоп. Какова вероятность того, что юнит будет проходить мимо ворот просто так? Нулевая! Если юнит хотел пройти при радиусе 600, он захочет пройти и при радиусе 120, так что твой алгоритм никак мой не упрощает. Так-то! |
24.04.2011, 14:17 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
ARHUI, раздели триггеры открытия и закрытия |
24.04.2011, 16:34 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ARHUI
offline
Опыт:
3,341Активность: |
Может не в тему но чтобы решить вопрос надо - как в jass закончить петлю цикла? аналог next() для for?
|
24.04.2011, 21:29 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
ARHUI, в jass нет такой функции, есть только exitwhen |
24.04.2011, 21:51 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ARHUI
offline
Опыт:
3,341Активность: |
Jass вроде событийно ориентированный язык, тогда почему если в область входят юниты, то события путаются местами? Глюк с открытием закрытием ворот случается когда несколько юнитов выходят из области ворот, первое срабатывание закрывает ворота, второе открывает, при том что при предпоследнем срабатывании один юнит ещё был в области, а значит если ворота закрылись ясс в ту предпоследнюю функцию вернул количество юнитов 0.
ARHUI добавил: а в последнюю 1 ARHUI добавил: Если делать вот так: Код:
порядок функций конечно обратный, но бывают сбои, хотя на гуи: на вход юнита Код:
на выход юнита Код:
если выключить первые функции и оставить два триггера на гуи для 3-их ворот, то все работает, мне так и не удалось заставить их глючить сколько бы героев я в эту область не вводил/выводил. Если оставить только первые функции то для одного героя ничего не глючит да и для двух тоже, но три и более при почти одновременном входе или выходе заставляют функцию работать некорректно. У меня складывается ощущение что jass не по порядку обрабатывает события, а как повезет, и вот когда ему везет почти параллельно обработать события выхода для двух юнитов с приорететом на последнего вышедшего юнита (тоесть сначала он посылает на выполнение функцию для последнего вышедшего юнита, которая вычисляет что в регионе никого нет и ворота закрываются ) потом на предпоследнего (что ещё один юнит в регионе и ворота открываются) и получается что когда никого нет в регионе то ворота открыты... Поправьте если не прав. |
25.04.2011, 17:21 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
ARHUI, дебагами разметь место отвечающее за открытие\закрытие, выведи значения важные на экран, и смотри какие значения недопустимы, ну а далее отслеживай почему эти значения стали таковыми.
|
26.04.2011, 11:15 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
ARHUI, способ реализации лучше заменить на периодический пик |
26.04.2011, 14:01 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ARHUI
offline
Опыт:
3,341Активность: |
Цитата:
Прикол в том что ещё до того как карта стала называться по новому, я так и делал, но потом решил попробовать сделать по событиям входа/выхода, с тех пор мучаюсь... ARHUI добавил: Оставил таймер и включил регионы... |
|
26.04.2011, 17:44 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|