Там где ты уничтожаешь таймер в Flyin - можно заного запустить таймер и уже юзать Flyout
И ещё ты во Flyin используешь "location endfly" которая там просто висит, наверное ты забыл поменять на endfly_x/y
Вместо многократного использования GetHandleId(t) - занеси всё в одну integer и используй её
Обнулять нужно только указатели на игровой объект, обнулять real/integer/boolean/string не нужно.
Есть исключения, если игровой объект в игре будет всю игру (к примеру игрок) - то указатель на него не обязательно обнулять
Это достаточно неправильный код, везде BJ функции, location и т.д.
Сначала потренируйся просто переместить любого юнита в нужные тебе координаты.
Вместо location используй координаты "x" и "y"
К примеру:
Вычисление угла между координатами (в радианах)
a = Atan2(m.y - GetUnitY(u), m.x - GetUnitX(u))
//m.x и m.y это "конечная" точка, в которую юнит должен переместиться
Чтобы вычислить "x" смещение от места где стоит юнит с нужными тебе углом (угол "a" в радианах):
x = GetUnitX(u) + 2000. * Cos(a)
//Там где 2000. - это нужное тебе расстояние, можно записать как 2000.00 (без разницы)
Чтобы вычислить "y" смещение от места где стоит юнит с нужными тебе углом (угол "a" в радианах):
y = GetUnitY(u) + 2000. * Sin(a)
//Там где 2000. - это нужное тебе расстояние, можно записать как 2000.00 (без разницы)
Ну а потом
SetUnitX(u, x)
SetUnitY(u, y)
Далее уже можешь передвигать юнита каждые 0.03 секунды по 5 точек.
К примеру тот же код что выше - заранее вычисляешь им координаты где должен в итоге оказаться твой юнит Или если у тебя уже есть готовые координаты, к примеру если юнит летит в точку кастования способности
И этим же кодом выше передвигаешь юнита по 5 точек каждые 0.03 секунды
А чтобы поймать окончание "передвижения" просто каждый раз сравнивай дистанцию, если она будет меньше 10, то уничтожай таймер и т.д Там где 10 я имел ввиду кол-во точек на которое передвигается юнит + 5
Вычисление дистанции между координатами
local real dx = m.x - x
local real dy = m.y - y
local real d = SquareRoot(dx * dx + dy * dy)
//Там где m.x и m.y - это конечные координаты
//А "x" и "y" - это текущие координаты юнита
п.с. комментаторов выше можешь игнорировать, они ударились об что то твердое и очень сильно
ну уж извини, в материале про хештаблицу это и многое другое не упоминается.
Был бы полноценный материал - не было бы таких ошибок.
Постоянно называете "отсталым/и", вместо того чтобы поправить
Независимо от того SaveReal там или SaveUnitHandle, ты записываешь значения в одну и ту же таблицу.
Ты просто SaveReal(h, id, 0, x_c) перезаписываешь этим - SaveUnitHandle(h, id, 0, u_c) и этим - SaveEffectHandle(h, id, 0, e)
Локальные переменные нельзя использовать в GUI'шных "if then else", карта просто не запустится Т.к если GUI'шные "if then else" перевести в jass, то будет функция с действиями триггера, а чуть выше функция с условиями этого же "if then else". А в этом и прикол локальных переменных, их можно использовать только в пределах функции в которой они были вызваны (созданы).
И лучше начни писать на jass, он легкий, хоть и кажется сложным после GUI
К примеру такие задачи на GUI которые буквально голову ломают - на jass делаются достаточно легко и быстро
дабы избежать конфликтов с многократными использованием
это будет проблематично на GUI
Поэтому лучше не парить голову этим, а почитать эти материалы:
Jack-of-shadow
объект сам по себе не удалится
DestroyEffect снесет любой спецэффект без исключений, будь он с путем null или "" в данном случае как я говорил выше - это почти одно и тоже
Скорее всего это была версия 5.62 +/- , ибо дальше они стали протектить карту
без разницы какая версия)
Везде можно по равкоду предмета или абилки которую он юзает найти весь нужный код
Но до этого нужно будет сделать деобфускацию кода с помощью RMPQex
Ну а после того как вытащил код, сделать по быстрому ручную деобфускацию
Думаю не нужно рассказывать как вытащить предмет из редактора объектов)
Может быть вместо декораций - спецэффекты с блокираторами пути?
К примеру блокираторы пути поставить только в нужных местах, но не по всей площади спецэффекта
x-deprotect не обеспечивает адекватного восстановления карты, она годится лишь для изучения.
x-deprotect не умеет работать с нормально оптимизированными картами (это я про SLK)
не используй x-deprotect
x-deprotect - потому что он единственный не умеет конвертить SLK SLK - потому что "нестандартных объектов 0" и некоторые абилки при SLK оптимизации сохраняются в виде w3a
UrsaBoss, Ну рано или поздно придется перейти, а сейчас ты просто не на той стороне лагеря
я ни на чьей стороне, на лагери вы начали делить.
Я говорил о бессмысленности новых патчей, т.к они ломают почти всё на чем держался и выживал варкрафт
"Рано или поздно" я уже забью на варкрафт, это не та игра у которой есть будущее
Кому то хочется нового, а кому то и на старом удобно.
Мне вообще на 1.26 удобно, пришел домой после тяжелого дня, зашел поиграл в 2-3 карты и т.д
Мало что ли на 1.26 хостов и карт? Разве с новыми патчами что то изменится для тех кто считал что 1.26 сдох?
Ведь близзарды начали делать патчи из за просьб игроков, т.к вряд ли бы они стали делать что то просто так
Я думаю почти у всех нету желания переходить на новые патчи.
Лучше бы близзарды оставили всё как есть, нет ***** надо выжать весь сок из древней игры. В данном случае можно назвать игру 2010 года древней, НО ЭТО ЖЕ 2003 ГОДА ИГРА!!!
Ред. Hodor
» WarCraft 3 / Помощь в избавлении от BJ
И ещё ты во Flyin используешь "location endfly" которая там просто висит, наверное ты забыл поменять на endfly_x/y
Вместо многократного использования GetHandleId(t) - занеси всё в одну integer и используй её
Обнулять нужно только указатели на игровой объект, обнулять real/integer/boolean/string не нужно.
Есть исключения, если игровой объект в игре будет всю игру (к примеру игрок) - то указатель на него не обязательно обнулять
» WarCraft 3 / Помощь с настройкой таймера и хэш-таблицы
Насчет таймера - Borodach дал ответ
» WarCraft 3 / Помощь с настройкой таймера и хэш-таблицы
Ред. Hodor
» WarCraft 3 / Помощь с настройкой таймера и хэш-таблицы
К примеру тот же код что выше - заранее вычисляешь им координаты где должен в итоге оказаться твой юнит
Или если у тебя уже есть готовые координаты, к примеру если юнит летит в точку кастования способности
И этим же кодом выше передвигаешь юнита по 5 точек каждые 0.03 секунды
А чтобы поймать окончание "передвижения" просто каждый раз сравнивай дистанцию, если она будет меньше 10, то уничтожай таймер и т.д
Там где 10 я имел ввиду кол-во точек на которое передвигается юнит + 5
Ред. Hodor
» WarCraft 3 / Хеш-таблица или куча массивных переменных
Хештаблица незаменима для некоторых задач, к примеру если нужно прикрепить к равкоду какие то значения
» WarCraft 3 / Круг выбора
Ред. Hodor
» WarCraft 3 / LoadUnitHandle не возвращает значение функции
Был бы полноценный материал - не было бы таких ошибок.
Постоянно называете "отсталым/и", вместо того чтобы поправить
» WarCraft 3 / Хеш-таблица или куча массивных переменных
Ред. Hodor
» WarCraft 3 / LoadUnitHandle не возвращает значение функции
Ты просто SaveReal(h, id, 0, x_c) перезаписываешь этим - SaveUnitHandle(h, id, 0, u_c) и этим - SaveEffectHandle(h, id, 0, e)
Ред. Hodor
» WarCraft 3 / Помощь с локальными переменными
Т.к если GUI'шные "if then else" перевести в jass, то будет функция с действиями триггера, а чуть выше функция с условиями этого же "if then else".
А в этом и прикол локальных переменных, их можно использовать только в пределах функции в которой они были вызваны (созданы).
И лучше начни писать на jass, он легкий, хоть и кажется сложным после GUI
К примеру такие задачи на GUI которые буквально голову ломают - на jass делаются достаточно легко и быстро
https://www.xgm.guru/p/wc3/ex_jass
» WarCraft 3 / SetUnitAnimation и SetUnitAnimationByIndex
я говорил про гнома хуманов (мк)
у него же есть walk анимация
» WarCraft 3 / Удаление спецэффекта с null'евым путем к моделе
объект сам по себе не удалится
DestroyEffect снесет любой спецэффект без исключений, будь он с путем null или "" в данном случае как я говорил выше - это почти одно и тоже
» WarCraft 3 / Где можно найти хорошие предметы?
Везде можно по равкоду предмета или абилки которую он юзает найти весь нужный код
Но до этого нужно будет сделать деобфускацию кода с помощью RMPQex
Ну а после того как вытащил код, сделать по быстрому ручную деобфускацию
Думаю не нужно рассказывать как вытащить предмет из редактора объектов)
» WarCraft 3 / Где можно найти хорошие предметы?
Ред. Hodor
» WarCraft 3 / Удаление спецэффекта с null'евым путем к моделе
по сути, но не на практике
» WarCraft 3 / Удаление спецэффекта с null'евым путем к моделе
Просто будет спецэффект как объект, но он не найдет путь к модели и будет без модели
Вспомни локальные спецэффекты
Ред. Hodor
» WarCraft 3 / Оптимизация карты при большом количестве декораций
К примеру блокираторы пути поставить только в нужных местах, но не по всей площади спецэффекта
» WarCraft 3 / Как воспроизводить звук на скилле?
"Начинает направлять способность"
» WarCraft 3 / Снижается скорость атаки
Там и скорость атаки (со счетчиком ударов) есть и алгоритм добавления зеленого урона
» WarCraft 3 / Кто знает, что это за защита?
Ред. Hodor
» WarCraft 3 / Кто знает, что это за защита?
SLK - потому что "нестандартных объектов 0" и некоторые абилки при SLK оптимизации сохраняются в виде w3a
» Мир безумного / WarCraft 3 - 1.30 (все патчи PTR)
Ред. Hodor
» Мир безумного / WarCraft 3 - 1.30 (все патчи PTR)
Я говорил о бессмысленности новых патчей, т.к они ломают почти всё на чем держался и выживал варкрафт
"Рано или поздно" я уже забью на варкрафт, это не та игра у которой есть будущее
Ред. Hodor
» Мир безумного / WarCraft 3 - 1.30 (все патчи PTR)
Что в новых патчах такого что заставило бы меня перейти на них?
Тем более покупать варкрафт за 1к - бред)
Ред. Hodor
» Мир безумного / WarCraft 3 - 1.30 (все патчи PTR)
Мне вообще на 1.26 удобно, пришел домой после тяжелого дня, зашел поиграл в 2-3 карты и т.д
Мало что ли на 1.26 хостов и карт? Разве с новыми патчами что то изменится для тех кто считал что 1.26 сдох?
Ведь близзарды начали делать патчи из за просьб игроков, т.к вряд ли бы они стали делать что то просто так
Я думаю почти у всех нету желания переходить на новые патчи.
Лучше бы близзарды оставили всё как есть, нет ***** надо выжать весь сок из древней игры.
В данном случае можно назвать игру 2010 года древней, НО ЭТО ЖЕ 2003 ГОДА ИГРА!!!