War3I4i | Дата: Среда, 01.01.2014, 14:25 | Сообщение # 1 |
Группа: Творец
Сообщений: 849
Награды: 19
Репутация: 1058
Статус: Offline
загрузка наград ...
| И так ребятки, в последнее время на сайт пришли новые "спелостроители " и у них я наблюдаю одну и ту же ошибку в создании скилов. Их выложение наработки были посвящены Мадаре, а ошибку они допускали в скиле "Сусано". Скилл состоит в том, что бы создать дамми сусано и удалить его через 30 секунд. Но это GUI, и здесь используются глобальные переменные, и после двойной активации способности появится 2 дамми сусано, второй дамми пропадёт через 30 секунд, а вот первый - останется в игре навсегда. Именно по этому поводу хочу показать довольно-таки эффективный способ решения этой проблемы :
Для начала создадим тригер ( я назвал его Delete ), в нём сделаем простейшее событие - игрок нажимает на клавишу ESC (cinematic skipped). Затем создадим глобальную переменную типа "юнит" ( я назвал её UNIT )
Сделано! Теперь начинается самое сложное) А именно малое использование Jass'а : Нам необходимо создать локальную (именно локальную а не глобальную) переменную. Для этого нам необходимо найти действие Custom Script (оно находится почти на начале всех действий) в строке custom script'а нужно вписать local "тип переменной" "название переменной" без кавычек, у нас получилось local unit a ( а - название переменной (англ. буква) ). Я видел что вы не используете jass new gen pack поэтому вам обязательно нужно обьявлять эту локальную переменную в самом верху действия ( она должна быть первой из действий ). И так - мы создали!
Теперь создадим юнита-пехотинца ( не важно где ) и установим что наша глобальная переменная UNIT = последний созданный юнит, тоесть наша глобалка UNIT теперь "хранит" в себе нашего пехотинца которого мы потом удалим
Теперь нам наобходимо установить, что наша локальная переменная a будет равна нашей глобальной переменной UNIT, опять делает действие custom script, и там вводим : set a = udg_UNIT , мы установили что наша локалка a это тот же юнит что и глобалка UNIT, ( КО ВСЕМ ГЛОБАЛЬНЫМ ПЕРЕМЕННЫМ В Jass'e НЕОБХОДИМО ДЕЛАТЬ ПРИСТАВКУ udg_ , должно получится udg_ваша переменная )
Ну и конечно добавим одни из последних действий, а именно : Wait ( Ждать ) 5 секунд (можете поставить сколько хотите) и Remove Unit (удалить юнита) и здесь ставим нашу глобальную переменную UNIT
И так, мы добавили 2 действия и осталось последнее. Нам осталось установить, что наша глобальная переменная UNIT равна нашей локальной переменной a. Для этого снова используем custom script и там вводим : set udg_UNIT = a. Этот custom script обязательно нужно вставить между действиями Wait (Ждать) и Remove Unit (Удалить юнита). В итоге у вас должно получится вот такое :
Вот и всё, мы достигли мини-муишности спела за счёт использования мини-джаса))) Прошу прощения за качество скринов ( скоро улучшу качество скринов ). Спасибо за просмотр)
P.S Вот ссылка на уже готовый пример :
|
|
| |
Lymix | Дата: Суббота, 22.02.2014, 11:02 | Сообщение # 2 |
Группа: Пользователи
Сообщений: 34
Награды: 0
Репутация: 0
Статус: Offline
загрузка наград ...
| А не легче в начале триггера поставить условие "если сусаноо дамми жив то удалить дамми из игры", а не путать новичков которые хромают в гуи ещё и джассом?
|
|
| |
War3I4i | Дата: Суббота, 22.02.2014, 14:58 | Сообщение # 3 |
Группа: Творец
Сообщений: 849
Награды: 19
Репутация: 1058
Статус: Offline
загрузка наград ...
| Lymix, это конечно тоже вариант но я создал эту тему для разных типов скилов, а не только для этого сусано
|
|
| |
lehanru | Дата: Понедельник, 29.09.2014, 19:36 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 66
Награды: 4
Репутация: 43
Статус: Offline
загрузка наград ...
| Есть еще способ попроще на ГУИ. Просто Боевая единица - добавить таймер истечения. И создать еще 1 триггер , в котором Событие: юнит умирает Условие: умирающий юнит = сусано Действие: удалить юнита из игры.
|
|
| |