Здравствуйте, товарищи!
Надеюсь, мой вопрос не покажется сильно глупым, а ситуация недостойной внимания.
Такое дело, я делаю карту, используя GUI, но с небольшим использованием триггеров на JASS'е в тех случаях, когда GUI со своей задачей справиться не может.
я использую массивы для обозначения игроков. Вроде, если этот юнит принадлежит игроку Х, то добавить этого юнита в "ГруппаЮнитов" [Номер владельца юнита]. И многие триггеры работают хорошо, проблем не возникает.
Однако есть пара триггеров (больше пока не удалось обнаружить), которые правильно работать отказываются. Причем, они работают идеально для первого игрока (т.е. код соответствует моей хотелке и этот код срабатывает), но не для остальных. Прилагаю скриншот с примером.
После улучшения триггер берет все заводы данного игрока, удаляет у них первый набор способностей и добавляет его же, только улучшенный. Также блокирует/разблокирует их соответственно. Однако у второго игрока со всех заводов удаляются способности, но новые не добавляются (блокировка/разблокировка работает).
Не знаю, насколько честно, но я постарался перепробовать все и перечитать все, что мог найти и сделать. Теперь обращаюсь к вам, подскажите что-нибудь?
На JASS'e работаю не очень, в основном подглядываю или перевожу GUI триггеры, а потом их исправляю. Хеш-таблицы также не понимаю. Если решений без хеш-таблиц не будет, буду учить тогда.
Спасибо!

я забыл выставить максимальное количество массивов для группы юнитов...
тоже ща об этом хотел сказать и вспомнил как у меня была похожая проблема с группами, когда ещё на 1.26 сидел

И выяснилось, что первый игрок это все-таки 1, второй игрок это 2.
ну в твоём случае с ГУИ - да. Я ж объяснил как это работает
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
Lord_Teo:
Попробуй в качестве теста сделать переменную константу (тип перменной: Игрок). И заменить в твоем триггере Trigger Player на эту константу. И конкретно задавай игрока перед выполнением этого триггера.
Не-а, не сработало. Видимо, он за момент действия триггера не забывает с каким игроком работает, а просто отказывается выполнять действия дальше. С красным игроком все снова сработало.
18
Выводи на екран триггер игрока, а в отряде пикнутого.
27
Сделал триггеры для проверки твоей ситуации с выводом информации. Специально раздробил на 3 триггера, чтобы проследить работу на каждом этапе. Вроде как всё работает!
Загруженные файлы
21
Попробовал. Однако завершение исследование относится к игроку в том числе, например, ссылаясь на число "НынешнийУровеньИсследования" мы ссылаемся на "Игрок". Да и даже если бы он не ссылался на триггернувшегося игрока, почему другие действия срабатывают?
Так и что не помогло? Это же варкрафт, тем более я так понимаю 1.26. Возможно TriggerPlayer каким-то образом получает значение как раз красного игрока, поэтому и не работает как надо
Дело в том, что Trigger Player нужно юзать в триггере, который срабатывает на событие игрока, например, игрок написал в чат что-нибудь. А у тебя событие на юнита.
Так что ещё раз: Нужно юзать владелец юнита в этом триггере
Я попробовал всё добавляется
3
Borodach:
Выводи на екран триггер игрока, а в отряде пикнутого.
Попробовал, и вправду. Происходит что-то странное. Пишет, что владелец юнита, который завершил исследование — Игрок 2, а количество юнитов в отряде его юнитов — 0. Что? Почему? Зачем? Кто знает... И не понятно. Если число заводов 0, то почему с заводами вообще хоть что-то происходит? Час от часу не легче.
Lord_Teo:
Сделал триггеры для проверки твоей ситуации с выводом информации. Специально раздробил на 3 триггера, чтобы проследить работу на каждом этапе. Вроде как всё работает!
Так вот с этим и проблема. Вроде как все должно работать, для первого игрока все срабатывает без изъянов...
Proshel_Doty:
Попробовал. Однако завершение исследование относится к игроку в том числе, например, ссылаясь на число "НынешнийУровеньИсследования" мы ссылаемся на "Игрок". Да и даже если бы он не ссылался на триггернувшегося игрока, почему другие действия срабатывают?
Так и что не помогло? Это же варкрафт, тем более я так понимаю 1.26. Возможно TriggerPlayer каким-то образом получает значение как раз красного игрока, поэтому и не работает как надо
Дело в том, что Trigger Player нужно юзать в триггере, который срабатывает на событие игрока, например, игрок написал в чат что-нибудь. А у тебя событие на юнита.
Так что ещё раз: Нужно юзать владелец юнита в этом триггере
Я попробовал всё добавляется
Да, не сработало. Для верности записал владельца юнита в переменную. Не догадался использовать ResearchingUnit, на этот раз поставил его. И все равно не сработало!
Что ж, отчет дальше: Бородач дал хороший совет. я так же решил попробовать проверять сколько юнитов находится в группе заводов игрока, номер которого я ввел. И выяснилось, что первый игрок это все-таки 1, второй игрок это 2. И когда второй игрок строит завод, этот завод в его группу не попадает. Почему? Прикрепляю этот триггер, вдруг я душевно больной и не могу добавить юнита в отряд...

Товарищи! я сейчас сижу и чуть ли не плачу наверное... Так стыдно...
я забыл выставить максимальное количество массивов для группы юнитов...
Простите меня, пожалуйста за мою бестолковость.
Сейчас все работает просто замечательно.
Вывод из этой ветки можно сделать такой: при работе с массивом нельзя забывать выставлять максимальное количество ячеек этого массива.
Спасибо большое за вашу помощь, друзья! Без нее я бы очень долго втыкал.
Загруженные файлы
21
я забыл выставить максимальное количество массивов для группы юнитов...
тоже ща об этом хотел сказать и вспомнил как у меня была похожая проблема с группами, когда ещё на 1.26 сидел

И выяснилось, что первый игрок это все-таки 1, второй игрок это 2.
ну в твоём случае с ГУИ - да. Я ж объяснил как это работает
Принятый ответ
3
Proshel_Doty:
я забыл выставить максимальное количество массивов для группы юнитов...
тоже ща об этом хотел сказать и вспомнил как у меня была похожая проблема с группами, когда ещё на 1.26 сидел

И выяснилось, что первый игрок это все-таки 1, второй игрок это 2.
ну в твоём случае с ГУИ - да. Я ж объяснил как это работает
А, я что-то не понял, что она сама по себе используется. я подумал, ты мне ее дал, чтобы я ее сам использовал, хех. Спасибо еще раз! И всем остальным тоже! Этот вопрос теперь закрыт.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.