XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
CRASHhorde

offline
Опыт: 153
Активность:
Триггер "Region - move" не работает?
Здравствуйте.
Я пытаюсь сделать одну способность на ГУИ. Вроде бы всё что нужно сделал, но триггер не работает. Мне кажется он "сломан".
Если конкретнее: я хочу сделать способность, при использовании которой всем юнитам в области применения давалась именно способность (не аура, хотя в примере я её поставил) на 5 секунд.
Я использую для этого область, и всем кто в ней даётся спелл, но есть проблема с перемещением области. Триггер "Region - move" не работает. Прикладываю карту пример, кому не сложно посмотрите пожалуйста, и помогите разобраться, и если есть - предложите любые альтернативы.
Заранее спасибо!
Прикрепленные файлы
Тип файла: w3x Test_zone.w3x (14.9 Кбайт, 6 просмотров )
Старый 18.07.2013, 18:11
HolyMoon
Hly shit!
offline
Опыт: 6,986
Активность:
регион мув перемещает центр области, но никак не саму область.
альтернатива - пик юнитов в радиусе
Старый 18.07.2013, 18:26
ZLOY5

offline
Опыт: 912
Активность:
на джассе есть функция для перемещения области
можно кастом скрипт заюзать
Старый 18.07.2013, 21:26
CRASHhorde

offline
Опыт: 153
Активность:
HolyMoon, спасибо за разъяснение, вот только не понимаю зачем это. Пик юнитов не подходит, потому что мне нужно удалять спелл, у юнита выходящего из данной области.
ZLOY5, если такая есть, то напиши пример пожалуйста. Я попробую и такой вариант.
Старый 18.07.2013, 21:59
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
native SetRect                  takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothing
c недавнего времени становятся все более актуальными вопросы о "забытых" нативках
Sargaraser добавил:
и кстати для этого необязательно использовать область, для таких целей есть следующие функции
native CreateGroup                          takes nothing returns group
native GroupEnumUnitsInRange                takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
native ForGroup                 takes group whichGroup, code callback returns nothing
Старый 18.07.2013, 22:17
CRASHhorde

offline
Опыт: 153
Активность:
Sargaraser, Если честно не совсем понял с ректами, помойму это не то? Я просто в Джазе профан, надеялся разберусь, но мне нужен хотя бы пример рабочий.
Использовать область для меня обязательно, я видимо не корректно сформулировал вопрос. Мне нужно, чтобы после использования способности, создавалась, либо перемещалась область, причём через 5 сек после использования область перемещается на скрытое место на карте либо удаляется. Мне нужно добавлять или удалять способность у юнитов, в зависимости от того, находятся они в области или нет.
Старый 18.07.2013, 23:47
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
CRASHhorde, учи джасс тогда, лезть в гуи и морозится там мне не хочется
Sargaraser добавил:
интересно как ты сделаешь свои скилл муи на гуи да еще и с динамичными триггерами
Старый 19.07.2013, 00:08
MpW

offline
Опыт: 50,002
Активность:
CRASHhorde, что-то я не очень то и понял что тебе нужно. Не понятно зачем использовать область, если можно использовать пик (выбор) юнитов в группу в радиусе относительно кастера.
Старый 19.07.2013, 04:40
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Глобальные ректы кстати нельзя двигать.
Можно, курите стуруктуру построения этих ректов.
Clamp добавил:
Подсказка: RegionAddRect()
Старый 19.07.2013, 09:44
CRASHhorde

offline
Опыт: 153
Активность:
Steal_nerves, Мне нужно, чтобы способность ещё и удалялась, если юнит выходит из области. Вообщем мне не подходит пик юнитов. Ну попробую поковыраться как нибудь с нативами. Всем спасибо. Если у кого будут ещё предложения, буду благодарен.
Старый 19.07.2013, 12:59
MpW

offline
Опыт: 50,002
Активность:
CRASHhorde, Я понял что ты хочешь сделать. так событие то и не сработает. Clamp дело говорит. Там есть области (rect) и регионы (region). Если посмотреть как работает событие триггера

Код:
function TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event
    local region rectRegion = CreateRegion()
    call RegionAddRect(rectRegion, r)
    return TriggerRegisterEnterRegion(trig, rectRegion, null)
endfunction


То есть суть заключается в том что регион создается триггером и в него добавляется область. А триггер потом ловит не те кто вошел в область, а те кто в регион вошел. Проще говоря тебе надо двигать регион, а не область. А для этого потребуется ссылка (глобальная переменная типа регион) на него, чтобы потом двигать

По поводу оптимизации: Вот есть у тебя два триггера с двумя разными событиями (юнит входит, и юнит выходит), в принципе эти два триггера в событии дважды создают одн и тот же регион CreateRegion() в твоей карте для каждого события (юнит вошел и вышел, можно было все на один регион сделать, повесить на него затем два события (зачем два региона? одного хватит).

Steal nerves добавил:
я не знаю как двигать регион и принципы всех работы (надо бы поизучать), но думаю что при смешении области, регион можно очистить от области и добавить эту область заново.

очистка
Код:
native RegionClearRect takes region whichRegion, rect r returns nothing

добавляем заново передвинувший регион
Код:
native RegionAddRect takes region whichRegion, rect r returns nothing


меня вот интересует один момент! регион расширяется если в него добавлять новые области, или при добавлении он удаляет старую и добавляет новую область? сам не пробовал пока

Steal nerves добавил:
вот пример, хоть наполовину неполный =(( как бы влом делать
Прикрепленные файлы
Тип файла: w3x Test_zone.w3x (14.9 Кбайт, 6 просмотров )
Старый 19.07.2013, 17:48
DioD

offline
Опыт: 45,134
Активность:
проще пересоздать событие с нуля чем парится с вычищением и редактированием...
Старый 19.07.2013, 18:27
MpW

offline
Опыт: 50,002
Активность:
DioD, Ну я ему скинул пример с событиями. При инициализации создаю регион и навешивают на этот регион два события. Ну так ему нужно (так хотя он хочет) чтобы при касте абилки этот регион на время сместился к кастеру (и потом обратно к области), тут не как не получится без очистки и добавлении в регион области (хотя смещение региона ему пока не делал)
Старый 19.07.2013, 18:36
CRASHhorde

offline
Опыт: 153
Активность:
Вот, сейчас я сделал таким способом, но это очень кривовато. События начинают действовать только когда выйдешь из зоны после каста. А ещё не разобрался с заданием размера региона. Вообщем посмотрите сами, и подскажите пожалуйста, что и где поправить. И ещё не сделал обнуление.
Кстате Steal_nerves, мне не обязательно именно перемещать готовый регион, можно создать новый и потом удалить, я уже это писал выше.
Прикрепленные файлы
Тип файла: w3x Test_zone.w3x (15.3 Кбайт, 5 просмотров )
Старый 19.07.2013, 23:33
MpW

offline
Опыт: 50,002
Активность:
CRASHhorde, мне кажется что если ранее юнит уже стоял на месте в созданном только что области-регионе, ему не дадут способность, что он типа он же стоит на ней, а не вошел, так как ему надо войти. И тут наблюдается кривость, да) Тогда пикай всех кто стоит в ней в группу и добавляй им абилку, по другому я не вижу. Тут еще главное надо думать чтобы юниту дважды не дали абилку

Steal nerves добавил:
Код:
native RemoveRegion takes region whichRegion returns nothing
Старый 20.07.2013, 09:05
CRASHhorde

offline
Опыт: 153
Активность:
Steal_nerves, я ещё попробовал сделать так:
При использовании способности создал боевую единицу и занёс её в переменную, далее сделал триггер:
Custom script: call TriggerRegisterUnitInRange(gg_trg_Enter, udg_Unit, 300, null)
При этом у меня сразу даётся способность ближайшим юнитам, и не нужно ни куда отходить и приходить, но вот как сделать чтобы способность удалялась у тех, кто отойдёт от боевой единицы дальше чем на 300 ярдов?
Старый 20.07.2013, 17:37
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:32.