Warcraft III: Frozen Throne
1.26
[GUI]
Редактор: Jass New Gen Pack Rebuild
Скрин 1: prnt.sc/CTUxeNhbV3Yu
Скрин 2: prnt.sc/aBk0QRrHwlnI
Скрин 3: prnt.sc/f3FsxBbPH9Ml
UPD0: Без цикла та же история.
Доброго времени суток.
Собственно, такая проблема, при запуске карты, вот эти два тригера(см.скрин 1 и 2) каким-то мистическим для меня образом делают две вещи.
  1. Не дают запустить карту, и при запуске меня выкидывает попросту в меню варкрафта.
  2. Если один из них отключен - крашат игру с ошибкой(см.скрин 3).
Собственно, если отключить их оба - игра запускается. А так же, если выключить и включить редактор, и сразу, ничего не трогая, запустить проверку, то карта запускается и работает всё, в том числе эти тригеры.
Мой вопрос заключается в том, что собственно не так? Потому что я откровенно говоря не понимаю. Сперва грешил на переменные. Менял их - ноль реакции. Каждое действие тригера менял, переделывал. Каждое условие, каждое событие. И до сих пор не понимаю.
Есть ли какая-то возможность, отследить что конкретно даёт ошибку? В логах дето?
Доступ у редактора админский. Антивирусы всякие вырублены.

Методом "тыка", понял что ОШИБКУ, вызывает НЕ это( prnt.sc/PnDmRw7Um01B ) условие. А взаимодействие ЭТОГО условия, и ВОТ этого:
prnt.sc/PnDmRw7Um01B
prnt.sc/LkOUvuerzeFv
И вот совпадение, ОБА условия, обращаются к ОДНОЙ способности. И если любое из них есть(по отдельности и вместе) в тригере - игра крашится, или карта не запускается.

Пока что не понимаю, каким образом эта способность ломает игру, она геройская, но сделана на основе каменного доспеха тини.
Но теперь понятно, почему на этапе инициализации выкидывает. Игра прогружает способность. Хотя сама способность работает, но обращение к ней с помощью тригера, ломает игру. Даже если сам тригер никто не активировал. Это видимо какой-то баг редактора. Или способности.

Остаётся узнать - ПОЧЕМУ? Почему способность сама по себе работает, а обращение к ней тригера, даже если сам тригер не активируется, ломает игру?

ПОЧЕМУ? Почему способность сама по себе работает(ОНА ПАССИВНАЯ, и она работает), а обращение к ней тригера(ПРОВЕРКА того что, способность у героя есть), даже если сам тригер не активируется(СОБЫТИЕ, ещё ни разу не произошло, или галочка "изначально включен" убрана), ломает игру?

В том и дело что ОТВЕТА - НЕТ. Способность я НЕ кастую. Я проверяю - есть ли она у героя, и какого она уровня. Мне нужна ПАССИВНАЯ, способность. В данном случае моя способность блокирует часть урона, в зависимости от уровня, она не является пустышкой. Всё. Теперь я в тригере делаю проверку - что способность у героя есть. И если она есть, то на каждом 20-м ударе по герою, будет добавлятся способность - защита +10, или больше, взависимости от уровня способности, и затем через 30 секунд удалятся.
Я не спрашивал как кастовать скилл, и как с ним работать.
Я спросил другое:

ПОЧЕМУ? Почему способность сама по себе работает(ОНА ПАССИВНАЯ, и она работает), а обращение к ней тригера(ПРОВЕРКА того что, способность у героя есть), даже если сам тригер не активируется(СОБЫТИЕ, ещё ни разу не произошло, или галочка "изначально включен" убрана), ломает игру?

Прочитай внимательно всё что я писал пожалуйста, у меня просто ощущение что ты не всё прочитал, и не всё скрины посмотрел.

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
я тебе в 10 раз говорю НИКОГДА не используй вейты в Циклах
Ну не знаю, я использовал на практике специальную функцию, где есть таймер и цикл, а в цикле вейт(!) на 1 сек, цикл работает, пока не истекает таймер. Так вот, с ней никогда никаких ошибок и крашей не было, всё стабильно. Даже на паузе. Версия 1.26а
4
Методом "тыка", понял что ОШИБКУ, вызывает НЕ это условие. А взаимодействие ЭТОГО условия, и ВОТ этого:
prnt.sc/PnDmRw7Um01B
prnt.sc/LkOUvuerzeFv
И вот совпадение, ОБА условия, обращаются к ОДНОЙ способности. И если любое из них есть(по отдельности и вместе) в тригере - игра крашится, или не запускается.
Пока что не понимаю, каким образом эта способность ломает игру, она геройская, но сделана на основе каменного доспеха тини.

Но теперь понятно, почему на этапе инициализации выкидывает. Игра прогружает способность. Хотя сама способность работает, но обращение к ней с помощью тригера, ломает игру. Даже если сам тригер никто не активировал. Это видимо какой-то баг редактора. Или способности.

Остаётся узнать - ПОЧЕМУ? Почему способность сама по себе работает, а обращение к ней тригера, даже если сам тригер не активируется, ломает игру?
18
я тебе в 10 раз говорю НИКОГДА не используй вейты в Циклах
Ну не знаю, я использовал на практике специальную функцию, где есть таймер и цикл, а в цикле вейт(!) на 1 сек, цикл работает, пока не истекает таймер. Так вот, с ней никогда никаких ошибок и крашей не было, всё стабильно. Даже на паузе. Версия 1.26а
в мултиплеере она себя проявит. это только надо поиграть на 2 машинах которые не находятся в одной локалке

Остаётся узнать - ПОЧЕМУ? Почему способность сама по себе работает, а обращение к ней тригера, даже если сам тригер не активируется, ломает игру?
потому что нельзя кастовать пассивную способность.

function BackEnd takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit c=LoadUnitHandle(udg_HT,id,0)
call UnitRemoveAbility(c,'A06I') // здесь убираем абилку и очищаем следы
call DestroyTimer(t)
call FlushChildHashtable(udg_HT,id)
set t=null
set c=null
endfunction
function Back takes nothing returns nothing
local unit u=GetSpellAbilityUnit()
local timer t=CreateTimer()
call SaveUnitHandle(udg_HT,GetHandleId(t),0,u)
call UnitAddAbility(u,'A06I') // это пассивная абилка
call TimerStart(t,0.5,false,function BackEnd) //запускаем таймер чтобы делать чтото
set u=null
set t=null
endfunction

ответ дал. как надо кастовать скил и как с ним работать

Я в коде полный 0. Скилл сейчас переделаю, поменяю по-разному, посмотрю.
тогда иди читай гайды как создать первоклассный скил
4
В том и дело что ОТВЕТА - НЕТ. Способность я НЕ кастую. Я проверяю - есть ли она у героя, и какого она уровня. Мне нужна ПАССИВНАЯ, способность. В данном случае моя способность блокирует часть урона, в зависимости от уровня, она не является пустышкой. Всё. Теперь я в тригере делаю проверку - что способность у героя есть. И если она есть, то на каждом 20-м ударе по герою, будет добавлятся способность - защита +10, или больше, взависимости от уровня способности, и затем через 30 секунд удалятся.
Я не спрашивал как кастовать скилл, и как с ним работать.
Я спросил другое:

ПОЧЕМУ? Почему способность сама по себе работает(ОНА ПАССИВНАЯ, и она работает), а обращение к ней тригера(ПРОВЕРКА того что, способность у героя есть), даже если сам тригер не активируется(СОБЫТИЕ, ещё ни разу не произошло, или галочка "изначально включен" убрана), ломает игру?

Прочитай внимательно всё что я писал пожалуйста, у меня просто ощущение что ты не всё прочитал, и не всё скрины посмотрел.

В общем и целом. Подвожу итоги:
Проблема оказалась конкретно в способности. Я так посмотрел, она видимо каким-то образом забаговалась.
Она была сделана на основе способности "каменные доспехи", но конкретно у этой способности почему-то изначальная раса была "наги". Т.е. это уже странно, потому что эта способность изначально от "ночных эльфов". Кроме этого, я отличий от стандарта в ней никаких не видел.
Я ее удалил, создал абсолютно такую же способность, и она работает, всё запускается. Скилл(тригерный) я сделал ровно так как и хотел, никакой ошибки в нём нет и не было в помине, о чем я в принципе подозревал с самого начала. Не знаю с чем связать этот баг, поэтому в принципе вопрос закрываю.
Ответ на него я нашёл сам: это баг редактора.
Других вариантов я не вижу.
Принятый ответ
18
смотри я тебе дал готовый пример как должно все работать, он будет крашится если не соблюдать правила
даю тебе карту где наглядно есть подобный механизм от него и отталкивайся
Загруженные файлы
4
смотри я тебе дал готовый пример как должно все работать, он будет крашится если не соблюдать правила
даю тебе карту где наглядно есть подобный механизм от него и отталкивайся
Прочитай выше. Ответ я нашёл сам.
Upd: код ваще не понимаю, так что пример я тоже не понял.
23
Centyrion, Имеется ввиду мультиплеер по Ирина боту или что?
А что должно произойти? Десинк?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.