Перейти к содержимому






- - - - -

Репозитории II: разработка, часть 3

Написано Umbakano Jr, 03 июня 2013 · 476 просмотры

Начало здесь.

Пару дней ушло на "творческие метания"! Пытался совместить свои желания с возможностями игровой механики. Я совершенно точно знаю, что хочу видеть в моде - перемещение объекта из инвентаря в нужное хранилище без открытия последнего! И хотя SKSE существенно расширяет наши возможности, но определить скриптами текущий объект в инвентаре, пока не возможно, а значит невозможно и произвести над ним желаемые действия!

Но решение найдено! И хотя оно малопроизводительно (прямое управление объектом было бы на порядок быстрее), но оно элегантное и главное - работает!


Чтобы реализовать такое действие, внесем коррективы в существующий скрипт CB_PlayerAlias_Script, прикрепленный к псевдониму Player, нашего квеста CB_Player.
В событии при удалении объекта OnItemRemoved() мы предотвращали "потерю" репозиториев из инвентаря. Туда же я добавил код, анализирующий нажатие клавиш. Теперь, если при удалении объекта была нажата не одна, а две клавиши, то удаленный объект добавляется в соответствующее хранилище, а его ссылка в мире удаляется. Для игрока эта операция будет выглядеть как перемещение объекта из инвентаря в хранилище!
Благодаря использованию функции SKSE GetNumKeysPressed(), определяющей количество нажатых клавиш, мы избегаем конфликта с любыми модами, управляющими кнопками клавиатуры. При этом сами можем использовать любые комбинации клавиш в сочетании с клавишей, назначенной для выбрасывания объектов из инвентаря! Например, (удобнее для пальцев) "L-Shift + R" или "L-Ctrl + R" или "R-Alt + R" (неудобно, но работает!)...

Измененный скрипт


Я уже протестировал этот код в игре, и мне понравилось! Я могу очень "гибко" выкладывать объекты в хранилища, и если надо переместить большое количество объектов, то комбинацию клавиш нажимать при подтверждении удаления!


Теперь обратим внимание на хранилище "-Все разное". Сейчас там складируются те категории объектов, доступ к которым мы хотели бы иметь отдельно. Мне представляется, что сортировки по категориям, внутри этого хранилища, будет достаточно. Вот этой задачей и займемся.


В окне Cell View находим нашу ячейку CB_Cell, а в ней хранилище CB_Misc. Открываем его для редактирования, переключаемся на вкладку скриптов. Поскольку функциональности имеющегося скрипта нам недостаточно, отключаем его, кнопка Remove, и добавляем новый скрипт, кнопка Add.

Новый скрипт

Заполняем все его свойства.

Изображение



Продолжение здесь