Перейти к содержанию

Возможность "принудительно" "экипировать" заклинания и свитки


Рекомендуемые сообщения

И так начинаем разбирать этот момент... сразу скажу, что нам нужен скриптовый расширитель OBSE с версиями файлов 15.3.0.0 или 0015 (не бета), скачать его можно отсюда... http://obse.silverlock.org

Разбирать установку будете в поиске или гугле... Тем более кто в ладах с буржуйским сами разбирутся...

 

Все что нам нужно мы имеет, к сожалению нормально работающей функции я так и не нашел, поэтому будем лечить зубы через ж***)))... Славо богу жо... у нас с этими делами знакомая... И техника забугорская у нас для этого дела есть, то бишь OBSE, так вот... Теория...

 

Дело в том, что совсем недавно в OBSE 15ой версии появились команды и функции позволяющие контролировать и управлять горячими клавишами... Всего таких функций 3... это

 

GetHotkeyItem - Возвращает RefId предмета или заклинания помещенного на одну из 8 стандартных игровых клавишь... то есть по умолчанию цифры с 1 по 8

(ID вещи или заклинания:Ref) GetHotkeyItem [Горячая клавиша]:Short

SetHotkeyItem - Устанавливает на указанную горячую клавишу, указанный предмет или заклинание

(Ничего не возвращает) SetHotkeyItem [Горячая клавиша]:Short [iD вещи или заклинания]:Ref

ClearHotkey - "Стирает" указанную горячую клавишу... То есть делает ее пустой...

(Ничего не возвращает) ClearHotkey [Горячая клавиша]:Short

 

Использовать в скрипте мы будет все три...

 

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

 

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

(DX код:Long) GetControl [Номер горячей клавиши*]:Short

TapKey - Нажимает "за игрока" клавишу, чей DX код мы используем

(Ничего не возвращает) TapKey [DX код]:Long

 

1* Использовать мы будем только первый слот горячей клавиши, который имеет код 18, то есть команда будет выглядеть так "GetControl 18"

 

Теорию разобрали...

Изменено пользователем Ворон
Ссылка на комментарий
Поделиться на другие сайты

Теперь теория механики и процесса работы...

 

Все элементарно просто... Для того, чтобы заставить игрока использовать то или иное заклинание, то есть, чтобы оно само у него "выбралось"

 

Мы будет делать так...

 

1. Сначало нам нужно определиться какое заклинание мы будем "устанавливать" для каста игроку, пусть его ID будет [iD необходимого спелла]

2. Мы по срабатыванию определенного условия будем добавлять игроку это заклинание, если он его не имеет... Если имеет перепрыгиваем на следующий пункт

3. Мы создаем переменные которые будут хранить [iD бывшей вещи на г.к.]:Ref, [Код клаваши вызова г.к]:Long, сам код клавиши "управления" первой горячей клавишей мы знаем... Это 18

4. Мы будем заносить в [iD бывшей вещи на г.к.] ID предмета или спелла на первой горячей клавишей, чтобы не создавать неудобства игроку своим "невидимым" выворачиванием движка на изнанку, чтобы потом возвратить его на место... Ведь нам требуется всего 2-3 фрейма, чтобы выполнить желаемое.

5. Мы заносим [iD необходимого спелла] в первую горячую клавишу и в следующий фрейм мы вызываем ее командой TapKey с [Код клаваши вызова г.к], который мы определяем зарание используя переменую [Код клаваши вызова г.к], которую определяем командой GetControl 18.

6. Мы устанавливаем старый предмет из временного хранилища, переменной [iD бывшей вещи на г.к.] в первый слот повторяющейся командой SetHotkeyItem.

7. Все... У нас нетронутый набор горячих клавиш установленных игроком и необходимый выбранный спелл...

 

Все данные манипуляции действуют только на игрока, учтите...

Ссылка на комментарий
Поделиться на другие сайты

Пример скрипта

 

ScriptName SealQuestScript

 

Float fQuestDelayTime

;Ref SealCasterReference - не обращайте внимания:)

;Ref SealCasterMark - аналогично ^_^

Ref TempHotKey

Long FirstHotKeyCode

 

Begin GameMode

 

Set fQuestDelayTime To 0.001

 

If ( SealCode == 3 ) && ( SealActivate == 1 )

Set TempHotKey To GetHotKeyItem 1

SetHotKeyItem 1 0RaikiriJutsu

Set FirstHotKeyCode To GetControl 18

TapKey FirstHotKeyCode

SetHotKeyItem 1 TempHotKey

Set SealCode To 0

EndIf

 

If ( SealCode == 0 ) && ( SealActivate == 1 )

Set SealActivate To 0

EndIf

 

End

 

Begin MenuMode

 

Return

 

End

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...