Наверняка многие хотят чтоб герой умел "стрелять" прямо на карте, чтобы сделать свои "танчики", или же добавить какой-никакой ЭКШОН. Можно конечно скачать скрипты на АБС боёвки, но напрмиер на том же МВ полноценной законченной АБС нету, поэтому этот урок о том,как сделать элемент АБС на ивентах

УПРАВЛЕНИЕ

перво-наперво следует привязать кнопку к выстрелу. Для этого создаем общее событие.
1)Параллельное. Условие включения - переключатель который для удобства назовем "управление"
2)Ветвление условий -> скрипт Input.isTriggered('ok')
То есть выстрел будет на кнопку "ЭНТЕР"
Можно конечно сделать "Ветвление условий -> если кнопка "ок" нажата, но в таком случае, при нажатии выстрел будет срабатывать несколько раз пока кнопку не отпустишь. Пауза выручает в этом случае,но всё же будет немного коряво
3) Внутри ветвления - второе общее событие - назовем его "Выстрел"

Таким же способом делаем "смену оружия". Привяжем ее на кнопку "CANCEL"

Спойлер ТЫК:


Создаем на карте событие,которое включает переключатель
На скрине он отмечен синим прямоугонльиком.



Заполняем это событие следующим образом
Спойлер ТЫКТЫКДЫГЫДЫГ:



ВЫСТРЕЛ

Создаем общее событие "выстрел",на которое ссылалось предыдущее общее событие.
Оно не имеет переключателя и не параллельно.

Чтобы герой не стрелял не имея в руках пистолета, создаем оружие пистолет ли любое другое по вашему желанию и добавляем условие
1) Ветвление условий -> Если герой экипирован "пистолетом".
2) Переключатель,который назовем для удобства "пистолет" - > включить
3) Переключатели остальных оружий выключаем
4) добавляем активирование 6ого общего события,которое я назвал "выстрел",но маленькими буквами:\ исправлять скрины лень,надеюсь не запутается никто(
Таким же способом доабвляем и другие оружия,например дробовик
Только переключатели поменяется местами а общее событие активируется другое,напрмиер "выстрел из дробовика"

Спойлер БОМБОРОБОМ:


[B]ВРАГ[/И]

Создаем врага,в которого мы и будем стрелять
1) создаем НПС,с маршрутом или без. Главное запоминаем его ID. В нашем случае у него ID=2
Здесь он в зеленом прямоугонльике

Спойлер ХАЙМАХАЛАЙ:


2) В первом событии (НЕ общем) добвляем переменную "здоровье врага". и пусть она будет равна 10.

3) В 2-ом событии,то есть в событии нпс Врага, создаем вторую страницу. Оно активируется переключателем "враг мертв".
Графику врага заменяем на его "останки". Либо делаем ее пустой если хотите чтобы он "исчез" после смерти

Спойлер БОБОМ:


ПАТРОНЫ

Герой должен стрелять ПАТРОНАМи/стрелами/огнем. Поэтому надо создать события спрайтов патронов.
В зависимости от того,СКОЛЬКО патронов может быть на экране одновременно,создаем столько и патронов.
Мы сделаем вариант для четырех патронов. На скрине они обведены в красный прямоугольник
Очень важно запомнить ID этих патронов. В нашем случае это 3-6.
На всех последующих картах патроны должны быть с такими же ID

Спойлер КИСИСЬКИСИСЬ:


1) Создаем событие "патрон". Первая страница пустая.
2) Вторая страница запускается при выстреле из пистолета.
Переключатели для активации
"патрон 1" и "пистолет"
Триггер - параллельный
Скорость - лучше двухкратную
Спойлер ОХ:



3) Указываем маршрут. В зависимости от того, на сколько клеток стреляет оружие,столько раз вставляем команду "вперед".
В конце обязательно делаем выключение переключателя,которым активировалось событие,то есть выключаем "патрон 1"
Спойлер ЗАДОЛБАЛИСПОЙЛЕРЫ:



4) настраиваем столконвение патрона с тайлами. Для этого сначала присваиваем тайлам метки местности. наприме пусть стены будут с метками "5"

Спойлер ЕЩЕ ОДИН:


5) приравниваем переменную "патрон 1 х" к координате Х события "патрон 1"
$gameMap.event(this._eventId).x
Точно также еще одна переменная к к координате Y
$gameMap.event(this._eventId).y

Спойлер спойлёр:
$gameMap.event(n).x
$gameMap.event(n).y
Это координаты Х и У событий, где n - ID события. Вместо номера ID события можно написать "this._eventId",что означает "ЭТОГО события"

Можно заменить следующими стандартными командами:
-присвоение переменной координаты игровых данных "событие врага - координата Х"
-присвоение переменной координаты игровых данных "событие врага - координата Y"
- присвоение переменной координаты игровых данных "событие патрон - координата X"
- присвоение переменной координаты игровых данных "событие патрон - координата Y"
- ветвление условий -> если переменная "событие врага - координата Х" равна "событие патрон - координата X"
- внутри него ветвление условий - если переменная "событие врага - координата Y" равна "событие патрон - координата Y"

То есть вместо ОДНОГО условия мы бы использовали ШЕСТЬ действий. При этом эти действия надо скопировать для остальных патронов,и везде поменять события патронов.


6) Получить данные о местности. Создаем переменную "данные", координатами указываем вышеприсвоенные переменные

Спойлер ХМММ:


7) Создаем ветвлениие-> скрипт $gameVariables.value(43)==4||$gameVariables.value( 43)==5||$gameVariables.value(43)==6
Где $gameVariables.value(43) - переменная с ID=43, а равные ей числа - метки территорий

Спойлер хм:
$gameVariables.value(43)==4|| $gameVariables.value(43)==5
т.е."если переменная 43 равна 4 ИЛИ переменная 43 равна 5 "


Переключатетль ПАТРОН 1 выключить

Спойлер ЕЩЕОДИН:


Спойлер если еще короче:
шаги 5-7 можно заменить командой $gameMap.terrainTag(x, y) дабы сделать алгоритм еще более коротким;


8) доабвляем столкновение с врагом

Ветвление улсовий -> скрипт $gameMap.event(2).x == $gameMap.event(this._eventId).x && $gameMap.event(2).y == $gameMap.event(this._eventId).y

Где вместо двойки пишем ID врага.

Спойлер тыктык:
если координата 2-ого события по Х равна координате ЭТОГО события по х И координата 2-ого события по Y равна координате ЭТОГО события по Y


Спойлер И ЕЩЕ:


9) показываем анимацию при попадании во врага. Например брызги крови.
10) Уменьшаем кол-во здоровья врага на урон от патрона.
У пистолета пусть будет 2. У дробовика должно быть больше. У рогатки не больше одного

11) если переменная здоровье врага меньше нуля,то враг умирает,поэтому включаем переключатель "враг мертв".

12) Ну и выключаем переключатель "патрон 1"

Спойлер ДУРАЦКИЕ СПОЙЛЕРЫ:


То же самое сделать с другими патронами.
Не забываем менять там переключатели. Запутаться очень легко

ВЫЛЕТ ПАТРОНОВ

Помните то общее 6ое событие которое названо маленькими буквами "выстрел"? Редактируем его

1) Никакой пареллельности,никаких переключателей.
2) создаем ветвление условий "если переключатель патрон 1 включен".
не забываем включить вторую ветвь

Спойлер СКОЛЬКОМОЖНОСПОЙЛЕРОВ:


3) Внутри этого ветвления создаем условие "если переключатель патрон 2 включен".
4) Далее столько ветвлений,сколько патронов у тебя создано. В нашем случае последнее ветвление будет "если переключатель патрон 4 включен".

Спойлер НАЧИНАЮЗЛИТЬСЯ:


5) Внутри каждого ветвления после "ИЛИ" создаем сначала воспроизведение звука выстрела
6) после каждого звука вставляем ветвления "если игрок повернут вниз/вверх/влево/вправо". Это для того,чтоб патрон стрелял туда,куда повернут персонаж
7) внутри каждого ветвления пишем маршрут события "патрон" такой-то".
Очень легко запутаться, поэтому проверяем чтоб в каждом ветвлении,созданных на шагах 2-4, в маршруте были именно те патроны,которые указаны в ветлвении
- поворот этого патрона вверх/вниз/влево/вправо
- скрипт $gameMap.event(6).setPosition($gamePlayer.x,$gameP layer.y)
Это телепорт событий "патронов" в координаты игрока.
Вместо 6 пишем ID нужного патрона.
- Включить переключатели соответствующих патронов.
Спойлер ТЕРПЕНИЕНЕБЕЗГРАНИЧНО:



ЕЩЕ РАЗ: в КАЖДОМ ветвлении созданных на шагах 2-4 ID патрона и переключатели меняются. Важно не запутаться

АЛГОРИТМ ДЛЯ ПОЯСНЕНИЯ.

Вот в общем, и всё. Теперь при нажатии на кнопку герой будет стрелять.
Вот алгоритм выстрела, длля того чтоб лучше понять принцип действия

1) При нажатии на кнопку ЭНТЕР это отслеживается в общем событии "управление"
2) оно ссылается на общее событие "ВЫСТРЕЛ", которое отслежвиает экипирован ли пистолет
3) Если экипирован то происходит отсылка к общему событию "выстрел".
4) Проверяется включения переключателей,то есть летит ли какой-либо патрон во время нажатия.
При первом нажатии кнопка эти переключатели выключены поэтому выполняется первое условие,активирующее событие "патрон"
Если после этого сразу нажать еще раз ЭНТЕР,то общеее событие "выстрел" отследит что первый патрон еще летит поэтмоу активирует второй патрон. И т.д.
При 5-ом нажатии на кнопку ничего не произойдет так как все патроны "в полете". Но оно активируется когда какой-либо из патронов попадет в препятствие или врага и переключатель выключится.
5) Что делает событие ПАТРОН? Когда активируется то проверяется из какого оружия стреляет. Это нужно для того чтоб задать разному оружию разный урон и дальность выстрела. Дальность выстрела регулируется в маршруте события кол-вом команд "вперед".
Урон - вычитанием числа из здоровья врага.
6) При "долета" патрона весь путь пеереключатель выключается. Если патрон попадает в тайл с меткой "5," или любой другой по вашему желанию то также отключается. Ну и во время попадания врага,или в любое другое событие которое вы натсроили.

О том,как привязать смену оружия на соответсвующую кнопку, о том как сделать ограниченное число патронов, как сделать перезарядку, "область урона", отображение патронов на дисплее - в следующий раз

ДЕМКА:

Не забываем экипировать пистолет перед тем как стрелять

ТЫКТЫКТЫК