Yuryol

АБС. 7-ая переделка

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

[spoiler=старый больной человек]
пока выходные, спина успокоилась, обнаружил, что качать пресс на турнике довольно безопасно для позвонков.
зубная боль не чувствуется если съешь мандаринки, чеснок или алкоголь.
нервы не защемляет пока дома
[/spoiler]

[size=5]Смена оружия[/size]

Решил добавить второе оружие и понял, что мои функции никуда не годятся, хотя три месяца назад казалось обратное. Вновь переписал "модуль" смены оружия, теперь он позволяет менять не только оружие, но и броню, вещи и скиллы

[LIST=1][*]Добавил элемент equip в объект [b]$gameParty[/b]

[*]Сейчас все "экипированные" элементы сохраняю в нем. На данный момент это
[LIST][*]Оружия, хранящиеся в [b]$gameParty.equip.weapons[/b][*]Броня, хранящиеся в [b]$gameParty.equip.armors[/b][*]Вещи, хранящиеся в [b]$gameParty.equip.items[/b][*]Скиллы, хранящиеся в [b]$gameParty.equip.skills[/b][/LIST]

[*]Для универсальности функций вместо проверок в духе [b]if ('armors') $gameParty.equip.armors[/b] гораздо удобнее возвращать массив через [b]$gameParty.equip['armors'][/b] . Вроде мелочь, но позволяет избавить от кучи if или от ненавистных мне switch-ей

[*] Подобное очень удобно и для [b]$dataItems, $dataWeapons[/b]. Однако записи по типу [b]['$dataWeapons'][/b] возвращают массив с элементом строку в нем. Спасибо dmy, благодаря нему допер, что глобальный объект надо вызывать через [b]window['$dataWeapons'][/b].
Теперь вместо
[php]if (element = 'items') data = $dataItems;
if (element = 'weapons') data = $dataWeapons;
if (element = 'armors') data = $dataArmors;
if (element = 'skills') data = $dataSkills;[/php]
Или свитча
[php]switch = (element) {
case 'items':
data = $dataItems;
break;
case 'weapons':
data = $dataWeapons;
break;
case 'armors':
data = $dataArmors;
break;
case 'skills':
data = $dataSkills;
break;
}[/php]
достаточно написать:
[code type=javascript]data = '$data'+element [0].toUpperCase() + element .substring(1);
data = window[data][/code]

[*]Еще одна проблема: не нашел стандартной функции, возвращающей список ВСЕХ оружий. Есть отдельная функция для возврата оружия в инвентаре:
[b]$gameParty.weapons()[/b]
Есть стандартная функция для возврата экипированного оружия:
[b]$gameParty.leader().equips()[0][/b]

Эти функции не пересекаюся. То есть если у вас два оружия и первое экипировано, то первая функция возвратит неэкипированное оружие, а вторая - экипированное.

Решается всё довольно простым методом [b]concat[/b]:
[b]$gameParty.weapons().concat($gameParty.leader().equips()[0])[/b]
то есть к оружию в инвентаре добавляется оружие из экипировки

[*]Предыдущий метод возвращает нам массив, в котором экипированное оружие ставится в конце, поэтому нам требуется отсортировать полученный в предыдущем шаге массив через метод [b]sort[/b] по ID оружия (arr - массив из предыдущего шага)
[php]arr.sort((a, b) => {
return a.id - b.id;
});[/php][/LIST]

[size=5]Итого[/size]

Таким образом достиг 7-ого левела в программировании, ибо уже 7-ой раз переписываю свою АБС *facepalm*
- переписываю полностью на ES6 (в прошлой версии было на процентов 60);
- стараюсь не сильно дробить функции. В прошлой версии из-за функций из двух строчек модуль расползался значительно, что затрудняло отладку. Теперь дроблю только при проверках, а к примеру различные циклы не выношу отдельно благодаря стрелочным функциям.

[size=5]Что добавлено:[/size]

[LIST=1][*]Использование предметов и скиллов. Теперь Прыжок, бег или телепорт не надо выносить на отдельную кнопку. Надо добавить его в скилл, "экипировать" его и затем уже использовать через кнопку скилла

[*]При этом можно назначить тот же самый телепорт и на отдельную кнопку

[*]Теперь управление на геймпаде примерно такое
[spoiler=тык][img]http://ipic.su/img/img7/fs/depositphotos_130238712-stock-illustration-gamepad-simple-icon.1546732332.jpg[/img][/spoiler]
[LIST][*]Смена оружия достигается через левый нижний шифт + кнопка выстрела/использования предмета или скилла[*]Альтернативное оружие стреляет через верхний нижний шифт + кнопка выстрела[*]Также смену оружия и второго оружия можно настроить на стики[*]Альтернативное оружие стреляет через верхний нижний шифт + кнопка выстрела[*]На клавиатуре смена оружия-предметов-скиллов на Q,W,E,R, а использование,выстрел оружия-предметов-скиллов на A,S,D,F[*]Для бега на геймпаде не выделено кнопки, так как бегать можно через двойное нажатие стрелки[/list]
[/list]

Отправить "АБС. 7-ая переделка" в Digg Отправить "АБС. 7-ая переделка" в del.icio.us Отправить "АБС. 7-ая переделка" в StumbleUpon Отправить "АБС. 7-ая переделка" в Google Отправить "АБС. 7-ая переделка" в VKontakte Отправить "АБС. 7-ая переделка" в Facebook

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

Комментарии

  1. Аватар для Gforce_Vtk
    Я бы на геймпаде смену оружия и предметов вывел на крестовину, атаку лучше выводить на X или Y, из-за удобства. Щит на B, действие на A, на LB скилл, а на RB фиксацию из-удобства расположения. Остальное можно оставить.
  2. Аватар для Yuryol
    Цитата Сообщение от Gforce_Vtk
    Я бы на геймпаде смену оружия и предметов вывел на крестовину, атаку лучше выводить на X или Y, из-за удобства. Щит на B, действие на A, на LB скилл, а на RB фиксацию из-удобства расположения. Остальное можно оставить.
    почему именно так?
    по мне так кнопки которые надо нажимать быстрее остальных лучше размещать на X и A. во время боя самые активные действия - это оружие и доп.оружие(щит). в данном случае доп-оружие - это оружие ближнего боя либо щит. поэтому их лучше расположить на X и A.

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

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

    про "RB для фиксации из-удобства расположения ". тут стоит думать о том, что если фиксацию сделаем на RB то ЧТО тогда сделать на RT? по мне RT будет неудобен для всех действий кроме фиксации. если геймпад с нечувствительными RT и LT то другое дело.

  3. Аватар для Gforce_Vtk
    Вообще, для какого жанра сделана будет АБС? Просто я бы предложил дать разработчику выбирать кнопки в самом скрипте/плагине.
  4. Аватар для Yuryol
    Цитата Сообщение от Gforce_Vtk
    Вообще, для какого жанра сделана будет АБС? Просто я бы предложил дать разработчику выбирать кнопки в самом скрипте/плагине.
    более динамичная зельда и с комбо

    ну выбор конечно,но напоследок,пока надо хоть упрощенную доделать