Не впервые сталкиваюсь с подобного рода проблемой, однако эта меня удивила.
После недавнего создания бекапа карты я обнаружил, что на следующий день карта просто перестала запускаться (саму карту я скачал с удалённого сервера). То есть триггеры, я уверен, рабочие, поскольку ещё недавно карта с ними запускалась, но сейчас оно просто не инициализируется.
Я попробовал такие вещи:
  • Залить триггеры с копии карты по одной штуке. - Карта не запускалась даже из-за самых простых триггеров (см. 1 скрин)
  • Импортировать старые версии сборок триггеров - Результат такой же
  • Откатить версию карты на более старую, как я уверен, рабочую (так же скачал с сервера) - результат абсолютно такой же
И я в растерянности, поскольку, объективно, как таковых ошибок нет, однако карта не работает.
Прикрепил последнюю сборку триггеров. Правда, там все триггеры не на своих местах, ибо пока я пытался всё исправить, раскидал их по разным папкам

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

Вроде работает, но не знаю, так ли у тебя работало ранее. Проверь. Касательно проблем с триггерами не уверен, но вроде бы видел триггеры с одинаковым названием на русском. На всякий случай изменил все названия триггеров с кириллицей на латиницу, так как проблемы с этим уже упоминали. В триггере инициализации было два события, что в итоге приводило бы к двойному срабатыванию, одно из них удалил. Также удалил несколько ретурнов, чтобы с одной стороны увидеть работоспособность триггеров, так удалил ретурн перед постановкой заданий в инициализации, с другой сомневался, что они корректно работают, а проверять было некогда, например, в цикле от 1 до 350 ретурн мог не пустить выполнение цикла дальше первого элемента. Но главное в том, что ты вводишь лишнии глобальные переменные вместо указателей (Triggering unit) или (Item being manipulated), причём их порой даже не используешь, просто устанавливаешь сначала, а в конце обнуляешь. Так не надо делать, пользуйся стандартными указателями на юнитов, типа (Triggering unit) или (Attacking unit), не удаляя или обнуляя их, а то только лишнюю нагрузку создаёшь для памяти, процессора и очереди операций. Обычно (Triggering player) по умолчанию является владельцем (Triggering unit), тоже используй сразу, а не плоди переменные. После удаления точки, не обнуляй её. А ещё попробуйте использовать какие-то оптимизаторы для карты, потому что её загрузка просто жесть - более 50 тысяч переменных для объектов редактор показывал) Только после оптимизации карта будет годна лишь для игры, а в редакторе не будет открываться.

Печатал уточнение и заснул)
Не указал, что вроде бы видел два триггера Безымянный триггер 002 или Безымянный триггер 005, одинаковые имена как раз могли быть причиной проблемы.

Самым лучшим комментарием считаю 17 от Hate.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
26
4 года назад
2
если триггеров очень много, то вполне вы напоролись на лимит)
2
3
4 года назад
2
Hate:
если триггеров очень много, то вполне вы напоролись на лимит)
Триггеров очень мало. Всего штук 30-50. Я старался минимизировать свой поток идей, предполагая что в будущем с триггерами может приключиться такая ситуация.
В прошлом у меня случались такие проблемы, что триггеры не импортировались в готовую мапу. Но тогда я просто импортировал их второй раз или скачивал другую версию карты, таким образом всё исправлялось

AllChosen:
Hate:
если триггеров очень много, то вполне вы напоролись на лимит)
Триггеров очень мало. Всего штук 30-50. Я старался минимизировать свой поток идей, предполагая что в будущем с триггерами может приключиться такая ситуация.
В прошлом у меня случались такие проблемы, что триггеры не импортировались в готовую мапу. Но тогда я просто импортировал их второй раз или скачивал другую версию карты, таким образом всё исправлялось
А мейби 60-80. Я тут немного пересмотрел их
2
26
4 года назад
2
как карта называется? сам файл
так же какой путь до карты? до редактора?
2
3
4 года назад
2
Hate:
как карта называется? сам файл
так же какой путь до карты? до редактора?
Название файла - TempVersion_1_1_3
Путь до карты - C:\Instruments For War3\Maps
Путь до редактора - C:\Program Files (x86)\Jass New Gen Pack Rebuild
2
26
4 года назад
2
AllChosen, в менеджере объектов посмотри, там указано, что их 187. И они некрасиво сделаны, считаю. Закончу, проверю и оставлю комментарий, что не так с ними.
2
3
4 года назад
2
8gabriel8:
AllChosen, в менеджере объектов посмотри, там указано, что их 187. И они некрасиво сделаны, считаю. Закончу, проверю и оставлю комментарий, что не так с ними.
Был бы очень признателен)
2
26
4 года назад
2
2
3
4 года назад
2
8gabriel8:
Но где же я так сильно накосячил? Оо И как вы заставили это работать? Оо Я шокирован оО
2
28
4 года назад
Отредактирован PT153
2
некоторые скрипты сверх-чувствительны к версии pjass.exe
Нет, pjass.exe проверяет чистый JASS. Последняя версия не реагирует на некоторые синтаксические ошибки, потому что это не ошибки вовсе, но выдаёт некоторые семантические ошибки, что хорошо.

синтаксическая ошибка
Новый pjass.exe ошибку не выдаст, старый да, хотя ошибки нет: передаваемые в Filter и Condition функции могут иметь любой возвращаемый тип.
function Func takes nothing returns nothing
    // some code
endfunction

function main takes nothing returns nothing
    local boolexpr b = Filter(function Func)
    // some code
endfunction
семантическая ошибка
Новый pjass.exe выдаст ошибку об использовании локальной переменной без значения, старый нет. Подобного рода ошибка обрывает поток.
function main takes nothing returns nothing
    local unit u
    call UnitAddAbility(u, 'Ainv')
    // some code
endfunction
2
26
4 года назад
2
Вроде работает, но не знаю, так ли у тебя работало ранее. Проверь. Касательно проблем с триггерами не уверен, но вроде бы видел триггеры с одинаковым названием на русском. На всякий случай изменил все названия триггеров с кириллицей на латиницу, так как проблемы с этим уже упоминали. В триггере инициализации было два события, что в итоге приводило бы к двойному срабатыванию, одно из них удалил. Также удалил несколько ретурнов, чтобы с одной стороны увидеть работоспособность триггеров, так удалил ретурн перед постановкой заданий в инициализации, с другой сомневался, что они корректно работают, а проверять было некогда, например, в цикле от 1 до 350 ретурн мог не пустить выполнение цикла дальше первого элемента. Но главное в том, что ты вводишь лишнии глобальные переменные вместо указателей (Triggering unit) или (Item being manipulated), причём их порой даже не используешь, просто устанавливаешь сначала, а в конце обнуляешь. Так не надо делать, пользуйся стандартными указателями на юнитов, типа (Triggering unit) или (Attacking unit), не удаляя или обнуляя их, а то только лишнюю нагрузку создаёшь для памяти, процессора и очереди операций. Обычно (Triggering player) по умолчанию является владельцем (Triggering unit), тоже используй сразу, а не плоди переменные. После удаления точки, не обнуляй её. А ещё попробуйте использовать какие-то оптимизаторы для карты, потому что её загрузка просто жесть - более 50 тысяч переменных для объектов редактор показывал) Только после оптимизации карта будет годна лишь для игры, а в редакторе не будет открываться.

Печатал уточнение и заснул)
Не указал, что вроде бы видел два триггера Безымянный триггер 002 или Безымянный триггер 005, одинаковые имена как раз могли быть причиной проблемы.

Самым лучшим комментарием считаю 17 от Hate.
Принятый ответ
2
28
4 года назад
Отредактирован PT153
2
Триггеру можно добавить хоть 100500 событий "Инициализация карты", всё равно он будет запущен 1 раз.

Обычно (Triggering player) по умолчанию является владельцем (Triggering unit)
Только для событий playerunitevent.

более 50 тысяч переменных для объектов редактор показывал
Это разве что страшно для самого редактора, игре пофиг.
2
26
4 года назад
2
Там много триггеров с таким событием) Имел ввиду, что есть в карте категория инициализации с разными триггерами, один из них содержал два события, что юнит входит в область.

А события playerunitevent какие? Сейчас проверил в категории Боевая единица, только с событиями на вход и выход из области или приближение к радиусу не работает.

Скорее удивило то, что не увидел столько объектов на карте, сколько переменных для них есть.
2
28
4 года назад
2
А события playerunitevent какие?
Player Unit Event и Any Unit Event в гуи, но в общем всё это playerunitevent.
2
3
4 года назад
2
Спасибо всем кто откликнулся на мою проблему. Спасибо за ваши советы и предложения, вы рассказали очень много новых и интересных для меня вещей)

8gabriel8:
Вроде работает, но не знаю, так ли у тебя работало ранее. Проверь. Касательно проблем с триггерами не уверен, но вроде бы видел триггеры с одинаковым названием на русском. На всякий случай изменил все названия триггеров с кириллицей на латиницу, так как проблемы с этим уже упоминали. В триггере инициализации было два события, что в итоге приводило бы к двойному срабатыванию, одно из них удалил. Также удалил несколько ретурнов, чтобы с одной стороны увидеть работоспособность триггеров, так удалил ретурн перед постановкой заданий в инициализации, с другой сомневался, что они корректно работают, а проверять было некогда, например, в цикле от 1 до 350 ретурн мог не пустить выполнение цикла дальше первого элемента. Но главное в том, что ты вводишь лишнии глобальные переменные вместо указателей (Triggering unit) или (Item being manipulated), причём их порой даже не используешь, просто устанавливаешь сначала, а в конце обнуляешь. Так не надо делать, пользуйся стандартными указателями на юнитов, типа (Triggering unit) или (Attacking unit), не удаляя или обнуляя их, а то только лишнюю нагрузку создаёшь для памяти, процессора и очереди операций. Обычно (Triggering player) по умолчанию является владельцем (Triggering unit), тоже используй сразу, а не плоди переменные. После удаления точки, не обнуляй её. А ещё попробуйте использовать какие-то оптимизаторы для карты, потому что её загрузка просто жесть - более 50 тысяч переменных для объектов редактор показывал) Только после оптимизации карта будет годна лишь для игры, а в редакторе не будет открываться.

Печатал уточнение и заснул)
Не указал, что вроде бы видел два триггера Безымянный триггер 002 или Безымянный триггер 005, одинаковые имена как раз могли быть причиной проблемы.

Самым лучшим комментарием считаю 17 от Hate.
Спасибо что объяснили возможные причины неполадки. Впредь буду стараться не косячить с этим. Спасибо огромное за помощь)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.