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 секунд удалятся.
Я не спрашивал как кастовать скилл, и как с ним работать.
Я спросил другое:

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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
18
конечно русская локализация радует глаз но с первым триггером Скрин 1 все нормально а со 2 Скрином, бред, юзай таймеры вместо вейтов, они утечные и не универсальные, и фатал вызывает что в цикле от 1 до 30 ты стопоришь поток, конечно он выкинет игрока который кастовал способность
4
конечно русская локализация радует глаз но с первым триггером Скрин 1 все нормально а со 2 Скрином, бред, юзай таймеры вместо вейтов, они утечные и не универсальные, и фатал вызывает что в цикле от 1 до 30 ты стопоришь поток, конечно он выкинет игрока который кастовал способность
Если бы. Цикл я добавил позже, и знаю, что он скорее всего нерабочий. Оно и без цикла крашит или не даёт запустить карту. =(
UPD0: Сейчас даже удалил цикл, на всякий, как и говорил - та же история. Карту не запускает, сразу в меню варика выкидывает.
UPD1: Если удалить(отключить) первый тригер, то игра крашается. Если его не удалять, то не крашается, но не запускается. =/
UPD2: Та же история, если удалить(отключить) второй тригер.
18
WorldEdition:
приведу пример как это должно работать

конечно русская локализация радует глаз но с первым триггером Скрин 1 все нормально а со 2 Скрином, бред, юзай таймеры вместо вейтов, они утечные и не универсальные, и фатал вызывает что в цикле от 1 до 30 ты стопоришь поток, конечно он выкинет игрока который кастовал способность
Если бы. Цикл я добавил позже, и знаю что он скорее всего нерабочий. Оно и без цикла крашит или не даёт запустить карту. =(
UPD: Сейчас даже удалил цикл, на всякий, как и говорил - та же история. Карту не запускает, сразу в меню варика выкидывает.
UPD1: Если удалить первый тригер, то игра крашается. Если его не удалять, то не крашается, но не запускается. =/
тогда карту в студию
Загруженные файлы
4
WorldEdition:
приведу пример как это должно работать

конечно русская локализация радует глаз но с первым триггером Скрин 1 все нормально а со 2 Скрином, бред, юзай таймеры вместо вейтов, они утечные и не универсальные, и фатал вызывает что в цикле от 1 до 30 ты стопоришь поток, конечно он выкинет игрока который кастовал способность
Если бы. Цикл я добавил позже, и знаю что он скорее всего нерабочий. Оно и без цикла крашит или не даёт запустить карту. =(
UPD: Сейчас даже удалил цикл, на всякий, как и говорил - та же история. Карту не запускает, сразу в меню варика выкидывает.
UPD1: Если удалить первый тригер, то игра крашается. Если его не удалять, то не крашается, но не запускается. =/
тогда карту в студию
Всё переменные и способности, конкретно для этих двух тригеров я создал с нуля. Ни одно событие/условие/действие никак не затрагивает другие тригеры в карте. Поэтому, я не думаю что проблема в карте, и хотелось бы по возможности, решить проблему без ее отправки.
UPD0: Спасибо за пример, но у меня пассивная способность, которая будет добавлять е-ное количество защиты на е-ный промежуток времени, а затем с каким-то количеством времени отката.
UPD1: А есть какой-то метод отслеживания ошибок? Где-то логи можно посмотреть?
18
WorldEdition:
UPD1: А есть какой-то метод отслеживания ошибок? Где-то логи можно посмотреть?
для этого есть замечательная функция BJDebugMsg, вставляешь и смотришь где она стопорится
18
Centyrion, Может способность не для героя, либо юнит не герой. Краш бывает, если проводить манипуляции с характеристиками на простых юнитах
4
WorldEdition:
UPD1: А есть какой-то метод отслеживания ошибок? Где-то логи можно посмотреть?
для этого есть замечательная функция BJDebugMsg, вставляешь и смотришь где она стопорится
Спасибо!)

Centyrion, Может способность не для героя, либо юнит не герой. Краш бывает, если проводить манипуляции с характеристиками на простых юнитах
Юнит герой. А вот способность... Скрин: prnt.sc/NMCQ86mZp-Iv
Но она работает на юнита. Когда редактор выключаю, и сразу включив, проверку, карта запускается. Вот там способность работает адекватно без ошибок.
18
Centyrion, Может способность не для героя, либо юнит не герой. Краш бывает, если проводить манипуляции с характеристиками на простых юнитах
может быть, я даю способность вампиризм когда юнит выучил способность, триггер проверяет уровень способности и если уровень абилки больше 0 то даю герою пасивку на основе вампиризма, у него тут рекурсивная абилка в 2 Скрине которая стопорит поток, в цикле никогда не надо использовать Wait, дал все что нужно герою и запустил таймер далее достаешь значения из переменных и работаешь с ними.

тогда убирай циклы переменные и вейты и юзай таймеры.

перестроить скил надо

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
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.