Yuryol

Активная боевая система. Альт.оружие

Оценить эту запись
- с оружием в руке герой стреляет вперед, а потом мгновенно - назад. из того же пистолета, не глядя
- с пистолетами в двух руках герой убивает двух врагов впереди, а потом расставив руки в сторону, уничтожает всех по бокам от себя
- с калашом наперевес герой отстреливает противников. внезапно на него нападает чувак сзади, но наш герой фигачит его штык-ножом, не особо отвлекаясь на стрельбу и не меняя оружие
- против танка и пеших сражаться гораздо легче если у тебя оружие с подствольным гранатометом
- и т.д.
Для всего этого в плагин было добавлено альтернативное оружие. По задумке это:
- другой вариант выстрела из этого же оружия. Например,герой из двух пистолетов может стрелять как вперед, таки в стороны.
- дополнительная возможность самого оружия - подствольный гранатомет или альтернативные патроны

Когда-то раньше

В прошлый версиях в заметках оружия можно было приписать несколько дополнительных свойств - направление выстрелов, альтернативный патрон и еще несколько других тегов.

Для использования этих дополнительных возможностей следовало зажать один из шифтов геймпада при выстреле, что просчитывалось следующим кодом несложным кодом:

Код:
if (Input.isTriggered(INPUT_SHOT)) {
     if (Input.isPressed('INPUT_SHIFT')) this.shotWeapon(0, true);
     else this.shotWeapon(0, false);
}
То есть при зажатии двух кнопок вызывалась функция с двумя аргументами: 0 и "true", где:

  • "0" - слот экипировки оружия (для справки: 0 - это оружие, 1 - щит, 2 - броня головы, 3 - броня тела, 4 - аксессуар),
  • "true" - использовано альтернативное оружие. И этот второй параметр так и передавался через все функции, а те, в свою очередь, проверяли какое оружие использовано. Мало того, что было куча проверок, так еще и с каждой новой возможностью оружия этих проверок становилось всё больше


Один параметр

Решение было простым - а давайте просто сделаем возможность вместо альтернативных тегов оружия указывать ДРУГОЕ оружие. То есть при зажатии двух кнопок у нас просто выстреливало оружие с ID, которое указывалось в заметках экипированного оружия. Теперь настройка стала легче

Однако, ни от второго аргумента функции,ни от кучи проверок мы не избавились. Надо оставить один параметр функции, и соответственно этот параметр должен быть слотом экипировки. А потому логично всего лишь взять и добавить еще один слот экипировки, в котором у нас будет храниться альтернативное оружие. Соответственно,код у нас становится таким

[code type=javascript]if (Input.isTriggered(INPUT_SHOT)) {
if (Input.isPressed('INPUT_SHIFT')) this.shotWeapon(0);
else this.shotWeapon(5);
}[/code]

Шестой слот

А вот как добавить этот шестой слот была та еще задачка. Минут сорок при инициализации текущей экипировки я пытался вставить дополнительный слот партии $gameParty.leader() . И только потом я наконец догадался, что слоты у партии берутся из слотов героя, у значит у Game_Actor. Еще через мучительных поисков в коде и попыток сделать красиво, я в итоге довольно костыльно изменил одну строчку в функции Game_Actor.prototype.initEquips

Код:
var maxSlots = slots.length+1;
До меня таки не дошло, откуда берется количество слотов у героя, и в итоге я тупо прибавил к нему единичку :silly:

А дальше всё просто. Если у оружия в слоте "0" есть тег altId, то мы добавляем шестой слот экипировки с id=5 (помним что нумерация слотов идет с нуля) - $gameParty.leader()._equips[5]:

Код:
if (altId) {
     $gameParty.leader()._equips[5]._itemId = altId;
     $gameParty.leader()._equips[5]._dataClass = "weapon";
     this.addParamsWeapon(altId);  
}
Патроны

Ну и последнее - если у нас второе оружие стреляет одинаковыми патронами и по сути является тем же оружием с измеенной характеристикой, то нам надо,чтоб магазин был один. Поэтому добавляем проверку "если у оружия одинаковые патроны, то в функцию "траты" патронов мы передаем магазин оружия с нулевого слота:

Код:
let equip = $gameParty.leader().equips();
let altEquip = (equip[0].meta.itemBullet == equip[5].meta.itemBullet) ? equip[0] : equip[5];
ИТОГО:
С помощью менее 10 строчек добавлено альтернативное оружие B)

Отправить "Активная боевая система. Альт.оружие" в Digg Отправить "Активная боевая система. Альт.оружие" в del.icio.us Отправить "Активная боевая система. Альт.оружие" в StumbleUpon Отправить "Активная боевая система. Альт.оружие" в Google Отправить "Активная боевая система. Альт.оружие" в VKontakte Отправить "Активная боевая система. Альт.оружие" в Facebook

Метки: Нет Добавить / редактировать метки
Категории
АБС , Покодим

Комментарии