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

Принятый ответ

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
4
3 года назад
Отредактирован PraetorianSM
0
Proshel_Doty:
Спасибо большое! Не знал, что красный игрок нулевой. Однако проблема все равно не в этом. Как видно в примере, там используется функция одного и того же игрока. Однако, срабатывает только половина триггера. Т.е. проблема, видимо, не в том, что он не может найти на кого применять действия, а в том, что триггер для кого-то срабатывает не так, неправильно или неполностью.
Upd. Причем, для красного игрока (не важно какой номер, ибо сами по себе я цифры в массивах не использую) все срабатывает нормально.
1
26
3 года назад
1
Попробуй все действия выполнить сразу в одном переборе. А то у тебя лишний перебор идет всех юнитов.
Выбрать всех:
  • Убрать способность
  • Добавить способность
1
22
3 года назад
Отредактирован PROSHELDOTU
1
попробуй не TriggerPlayer юзать, а Игрока-владельца юнита, который завершает исследование
Ибо событие на юнита, а не на игрока
0
4
3 года назад
0
Lord_Teo:
Делал уже, для верности попробовал еще раз. Пробовал еще вынести в другой триггер, вдруг, ему просто лень дочитывать этот до конца.
Proshel_Doty:
Попробовал. Однако завершение исследование относится к игроку в том числе, например, ссылаясь на число "НынешнийУровеньИсследования" мы ссылаемся на "Игрок". Да и даже если бы он не ссылался на триггернувшегося игрока, почему другие действия срабатывают?
Там вот еще какой прикол. Если сделать это исследование, способности с заводов игрока (опять же, если он не первый) пропадают абилки. Но если построить новый завод, то все способности у завода на месте. Т.е. срабатывает тот триггер, который при завершении строительства завода спрашивает, какой уровень улучшения, и удаляет ненужный набор способностей. Хотя, по логике этого (можно так его назвать?) глюка работать не должен.

Вот, сделал скриншоты. Хоть и без динамики, но думаю, всяко понятней будет.
Загруженные файлы
1
13
3 года назад
1
А что мешает сделать через РО? Задать способностям или что ты используеш, в характеристиках - требования, нужный тебе апгрейд
0
4
3 года назад
0
Borodach:
А что мешает сделать через РО? Задать способностям или что ты используеш, в характеристиках - требования, нужный тебе апгрейд
Дело в том, что это, можно сказать, двухуровневые способности. я пробовал когда-то через улучшения "Жизнь скелетов" повышать уровень способности у юнита, но оно не срабатывало. Так или иначе, это в лучшей мере реализовано через триггеры. Опять же, для первого игрока все работает идеально. Вопрос, почему также не работает для остальных? Почему одна и та же система при подставлении вместо нуля единицы (вместо первого игрока второй) начинает работать неправильно?
1
26
3 года назад
Отредактирован Lord_Teo
1
А как ты тестируешь заводы? Сетевая игра для двух игроков?
0
4
3 года назад
Отредактирован PraetorianSM
0
Lord_Teo:
А как ты тестируешь заводы? Сетевая игра для двух игроков?
Изначально этот баг обнаружился в сетевой игре с товарищем, когда тестировали карту. Сейчас при редактировании я использую компьютерного союзника с полностью общими войсками. Еще я использовал такую штуку, что пишу команду в чат и компьютерный игрок сам использовует способность, дабы (если вдруг что) за GetTriggerPlayer сошел не я, а сам компьютерный игрок.
Так же в триггерах нету разницы между человеческим и компьютерным игроком, поэтому в этом тоже проблемы нет.
1
26
3 года назад
Отредактирован Lord_Teo
1
Попробуй в качестве теста сделать переменную константу (тип перменной: Игрок). И заменить в твоем триггере Trigger Player на эту константу. И конкретно задавай игрока перед выполнением этого триггера.
0
4
3 года назад
0
Lord_Teo:
Попробуй в качестве теста сделать переменную константу (тип перменной: Игрок). И заменить в твоем триггере Trigger Player на эту константу. И конкретно задавай игрока перед выполнением этого триггера.
Не-а, не сработало. Видимо, он за момент действия триггера не забывает с каким игроком работает, а просто отказывается выполнять действия дальше. С красным игроком все снова сработало.
1
13
3 года назад
1
Выводи на екран триггер игрока, а в отряде пикнутого.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.