Эльрат, еще кстати обнаружил проблему одну, анимация Decay Bone после смерти не совсем корректна: появляются останки разбойника, после чего спустя секунду появляется и сам юнит, который стоит на своих останках.
rsfghd, нет, ты не понял меня. Я инвертировал условие, это так, но после того, как ты заметил, что там должно быть сравнение на равенство наоборот. А условие это с остальным кодом я же как раз взял у тебя, переписывая на чистый jass. Вот и получается такая петрушка, если там будет !=, то таргет не тот, бьет герой рыцаря к примеру, а дамажит большим основным уроном стоящего рядом пехотинца, а если == то все как полагается, цель та, тобишь рыцарь, однако не получают урон рядом стоящие небольшой... Ну это ладно, мелочи жизни, уже все работает так или иначе. Спасибо тебе! Вопрос можно закрыть, если у меня возникнут какие то вопросы, касательно хэш-таблиц, я потревожу тебя в личных сообщениях, если ты не против конечно, дружище.
rsfghd, просветился по твоим ссылкам, благодарю! Очень интересно на самом деле, буду знать, что не стоит бояться хэш-таблиц. Я перепроверил твою карту еще раз, нет же, у меня не дамажит соседних, если поправить в условии != на ==. Ты же инвертировал условие тоже и попробовал?
Что касается героя - нет, несколько способностей основанных на яде я не планирую, однако будет несколько героев, каждый с одной способностью с ядом. Буду проверять и тестить. Я не стремлюсь слишком уж злоупотреблять этим, хочу придумать разнообразные способности.
rsfghd, ну условие взял же у тебя в коде из твоей карты примера. Гляди:
Если инвертировать условие, то цель та, но тогда рядом стоящие юниты не получают урон. А у тебя на карте не могу проверить, потому что если что-то поменять и пытаться стартануть карту, то редактор сразу выбрасывать кучи ошибок, а жаль, хотелось бы проверить. Ну сейчас отрою xgm'cкий редактор, попробую им.
Блин, слушай, и верно, у тебя тоже тогда рядом стоящие не дамажатся, как от сферы огня, а было бы круто, ну это ничего, достаточно добавить будет после этой строки
if (abilityLevel > 0) then
// Горение
call GroupEnumUnitsInRange(udg_TempGroup, GetUnitX(target), GetUnitY(target), 150.00, null)
только кастера по моему или атакера по твоему, придется все же вынести в глобалку, потому что GetTriggerUnit() мне тут совсем не нравится.
Осталось на вечер самое трудное, добавить еще мощные удары и заставить это сообща работать, по всей видимости будет перебиваться яд. Раз ты сказал, что потребуются разные хэш-таблицы, то нужно будет осознать и сделать работу с двумя таблицами. Хотя хотелось бы конечно через одну, потому как читал в статьях тут, что создание хэш-таблицы дорогое и лучше создавать одну на всю игру в карте.
rsfghd, пока что переписываю без некоторых эффектов для простоты и без мощных ударов. Яд не добавяю в способности в РО, а триггерно добавляю своей той функцией, что скидывал в карте. В общем оно заработало даже, но работает определенно криво, хотя бы потому что, я вывожу при ударах цель и игра выводит не того юнита, которого бьет в данный момент герой, а соседнего. Карту приложил, увидишь. Завтра попробую разобраться, в чем я накосячил и добавить мощные удары. Но все равно, даже так, я уже в восторге от того, что задумка притворяется в жизнь и очень тебе благодарен!
Есть у меня предположение, что триггер NegateDamage, отменяет урон с руки, для того, чтобы потом триггерно продамажить от удара... Это безумие какое то =D
rsfghd, благодарю за пояснения. Так, завтра продолжу, доброй тебе ночи, дружище!
Что за способность 'Bssd', на которую ты проверяешь вначале?
Я не вижу, чтобы где то инициализировалось значение EffectStructKey. Чем я могу это заменить?
Не понимаю назначения начинки триггера NegateDamage.
Переменная r в poisonDamage - это, так сказать, период действия яда, верно? Типо урон от яда может быть нанес 5 раз после удара. Получается, в течении 5-ти секунд еще дамажит.
Пока пора укладываться спать, я более-менее осознал остальной код, пока не заглядывал в 2 нижних триггера, ну так, мельком только, там я так понял красота просто с анимациями и эффектами. Завтра буду пытаться адаптировать под себя и думать, как скрестить со своей способностью.
rsfghd, ну вот, а я думал у тебя объявлена хэш-таблица в глобалках в константах, это как на обычном джассе просто в глобалках создать хэш-таблицу и усе. Понял, значит все сложнее... Попытаюсь понять тогда где какая используется, если не дойду сам, спрошу.
rsfghd, сейчас только добрался снова до кода карты с твоими спеллами для демона. Я начал переписывать твой код на чистый jass, потому как пишу на нем, без всяких дополнительных наворотов. Сложновато конечно, особенно фокусы с получением хэндлов юнитов и сохранение их в хэш-таблицу, до этого во всех примерах я видел только работу с хэндлами таймеров и по ним и велось сохранение и это было просто и понятно. Сейчас гляну твой код, что ты скинул, огромное тебе спасибо, не факт конечно, что за этот час до сна, что решил сесть пораскуривать, разберусь, но если что, еще завтра попробую добить.
Кстати удары громовые, что ты сделал, выглядят впечатляюще. Тоже пригодятся. Благодарю.
rsfghd, благодарю, завтра вечером посижу поразбираюсь, возможно даже пригодится для моей задумки, за реализацию которой я пока боюсь браться, сделать виды стихийных атак и соответственно дамажить кого надо, потому как я переделал способность благословение элуны и у меня маги могут атаковать юнитов с иммунитетом к магии, но при этом наносят 0 урона(всегда бесило, что в варкрафте они просто запретили атаковать и все, в реальной жизни же никто не мешает нам в танк с пистолета стрелять или швыряться горохом в стену, даже не смотря на то, что смысла в этом 0).
rsfghd, имеешь в виду как то отлавливать юнита, которого бьет герой и на него триггерно вешать яд по таймеру? Попробую поразбираться, как можно определить юнита, по которому наносит удары герой...
rsfghd, вот. Там несколько сложнее, чем описано, но не думаю, что это влияет. Способность яда я специально откатил до дефолтных значений, полагая, что испортил все переделыванием под горение, но нет. Оно не работало изначально.
Нашел причину случайно, занимаясь теперь уже заменой моделек некоторых предметов из пака от Sergant1000 на найденные на хайве модели из пака предметов. Это проблема не игры в целом и не архива, а конкретной карты. Чтобы все отображалось как надо, нужно в редакторе у карты по пути Сценарий->Параметры в последнем пункте "Набор" выбрать "Сражение(Последняя версия)".
rsfghd, спасибо, добил реализацию вашего совета, пришлось помучаться с временем каста, сократив его и поиграться с величиной периодичности таймера, но вроде бы получилось более-менее сносно, отмена работает корректно. Так как вопрос многогранный, то трудно выбрать верный ответ, так как и ваши советы и советы Vlod сильно помогли довести до ума спелл. Выберу, пожалуй, ваш ответ, так как он был дан первым и охватил все темы вопроса, не в обиду, товарищу Vlod, его помощь точно также не может быть не оценена по достоинству, так как именно его совет помог сократить количество кода и убрать лишнюю логику в спелле. Теперь мне предстоит научиться работать с дамми-юнитами(снова привет близзам-наркоманам, что мешало просто сделать метод смены высоты созданного в точке эффекта и все¯\_(ツ)_/¯)
Vlod, благодарю, да, нужно будет поизучать тему с даммиками. Я их еще ни разу не использовал. А тут использовать придется однозначно, потому как не дело это, что взрыв воспроизводится на земле почему то, хотя взрывается юнит с измененной высотой, но игру это абсолютно не смущает. К тому же, придется искать модель взрыва без брызг крови, которые ложатся на землю, потому как они тогда горизонтально висят в воздухе и выглядит это уродливо...
rsfghd, я думал плясать от события EVENT_PLAYER_UNIT_SPELL_ENDCAST, но оказалось что оно срабатывает даже при успешном завершении спелла, а не только при отмене. В общем копал не в ту сторону.
Хотя мне казалось логичным, что раз есть 2 разных события EVENT_PLAYER_UNIT_SPELL_FINISH и EVENT_PLAYER_UNIT_SPELL_ENDCAST, то они должны отрабатывать при разных условиях. Но у близзов другая логика)
rsfghd, да, ваш рецепт с таймером на 0 помог. Так же я еще раз теперь перестартовываю таймер, чтобы добиться синхронизации между проигрыванием анимации и поднятием жертвы в воздух. Итого, 3 функции, которые запускают друг друга по истечению таймера, порой мгновенному, рестартуя его... Это работает, однако какое же все же это извращение) Не могу представить, чтобы в каком-нибудь другом яп нужно было стартовать таймер с временем 0, просто, чтобы добиться корректной работы. Остается лишь проблема финальной стадии заклинания, когда жертву разрывает на кусочки и она мгновенно оказывается на земле, есть идея попробовать удалять юнита, запомнив перед этим высоту и точку его нахождения и в этом месте создавать на высоте эффект этих самых разлетающихся кишков...
Ну и написать код на отмену заклинания и на случай оглушения, если только он не входит в случай отмены, это сейчас и пробую реализовать. Сдается мне, что я напрасно привязал заклинание к событию EVENT_PLAYER_UNIT_SPELL_CHANNEL, нужно было использовать все же EVENT_PLAYER_UNIT_SPELL_FINISH...
Vlod, в самом деле, сейчас вчитался еще раз в ваш комментарий и поставил в течение времени - секунду. Анимация стала воспроизводится адекватно, соответственно, код можно будет упростить, исключив функцию проигрывания анимации.
Да, теперь я исключил вовсе проигрывание анимации в коде, анимация воспроизводится юнитом самостоятельно по настройке канала, кода стало меньше, однако привязаться к EVENT_PLAYER_UNIT_SPELL_FINISH не выходит, потому как в таком случае не отлавливается GetSpellTargetUnit(), возвращается null, посему с отменой придется еще покумекать...
С последней фазой тоже пока не выходит, я так понял, что нельзя создать эффект на высоте в старом патче(1.26), пробую создать даммика и над ним создать эффект, работает только если даммик имеет модель, если модель убираешь, эффект не отображается...
rsfghd, ExecuteFunc еще не пробовал ни разу, попробую, благодарю. Как будет возможность вернуться к редактору, проверю ваш вариант. Vlod, спасибо за ваше время. Я ориентировался на огненный столб, у которого время подготовки не 0 и чародей крови воспроизводит анимацию без проблем.
Всем доброго времени суток! Если кто то может взяться за, то буду благодарен, необходимо сделать модель для способности аля Молот Бурь, только с топором этого парня. Топор желательно крутить в полете, на подобие того, как это сделано в дистанционной атаке Рексара, ну если, если с этим топором будет сложно, то хотя бы взять топор Рексара и увеличить его, чтобы был соразмерен топорам этой модели. Спасибо!
» WarCraft 3 / Разбойник
» WarCraft 3 / Разбойник
» WarCraft 3 / Разбойник
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
Ред. Meddin
» WarCraft 3 / Проблема с ядом
Что касается героя - нет, несколько способностей основанных на яде я не планирую, однако будет несколько героев, каждый с одной способностью с ядом. Буду проверять и тестить. Я не стремлюсь слишком уж злоупотреблять этим, хочу придумать разнообразные способности.
Ред. Meddin
» WarCraft 3 / Проблема с ядом
Ред. Meddin
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Проблема с ядом
» WarCraft 3 / Нюансы добавления иконок в архив с игрой
Ред. Meddin
» WarCraft 3 / Канал, таймер и анимация. Адская смесь
» WarCraft 3 / Канал, таймер и анимация. Адская смесь
» WarCraft 3 / Канал, таймер и анимация. Адская смесь
Ред. Meddin
» WarCraft 3 / Канал, таймер и анимация. Адская смесь
Ну и написать код на отмену заклинания и на случай оглушения, если только он не входит в случай отмены, это сейчас и пробую реализовать. Сдается мне, что я напрасно привязал заклинание к событию EVENT_PLAYER_UNIT_SPELL_CHANNEL, нужно было использовать все же EVENT_PLAYER_UNIT_SPELL_FINISH...
» WarCraft 3 / Канал, таймер и анимация. Адская смесь
Vlod, спасибо за ваше время. Я ориентировался на огненный столб, у которого время подготовки не 0 и чародей крови воспроизводит анимацию без проблем.
» WarCraft 3 / Не работает модель? - Вам сюда!
» WarCraft 3 / Не работает модель? - Вам сюда!
» WarCraft 3 / Не работает модель? - Вам сюда!
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Нужна модель? - Вам сюда!