В процессе работы над третьей частью тутора, я разбирался с подменой надетой на непися брони в зависимости от типа тела.
Использовал следующие команды FOSE/NVSE:
GetEquippedObject
Функция добавляется FOSE (NVSE для FNV).
Возвращает базовый объект (Editor ID) предмета находящегося в указанном слоте.
Синтаксис:
(ref) ref.GetEquippedObject equipmentSlot:int
или
(ref) ref.GetEqObj equipmentSlot:int
Пример:
ref ArmorID
set ArmorID to buddyref.GetEquippedObject 2
Возвращает в переменную ArmorID базовое EditorID значение одетой на Бадди (слот 2) одежды.
--------------------------------------------------------------------------------------------------------------------------------------
GetEquippedCurrentHealth
Функция добавляется FOSE (NVSE для FNV).
Возвращает текущее состояние объекта в указанном слоте.
Синтаксис:
(float) ref.GetEquippedCurrentHealth equipmentSlot:int
или
(float) ref.GetEqCurHealth equipmentSlot:int
Пример:
float EquipArmorHealth
set EquipArmorHealth to buddyref.GetEquippedObject 2
Возвращает в переменную EquipArmorHealth текущее состояние одетой на Бадди (слот 2) одежды.
Примечание:
* У этой функции свой формат выводимой информации от 0 до 500 (500 = 100%). Чтобы получить точное значение состояния одетого (экипированного) предмета (в виде 0% - 100%), например как у функции GetWeaponHealthPerc, нужно поделить полученное значение на 5 (пять). А если как для функции AddItemHealthPercent (0 - 1.0), то разделить ещё и на 100 (сто).
Пример:
float EquipArmorHealth
set EquipArmorHealth to GetEquippedCurrentHealth 2
set EquipArmorHealth to (EquipArmorHealth/5)/100
AddItemHealthPercent OriginalArmorID 1 EquipArmorHealth 1
* Для функции SetEquippedCurrentHealth (добавляется FOSE (NVSE)) пересчёт не нужен.
--------------------------------------------------------------------------------------------------------------------------------------
SetEquippedCurrentHealth
Функция добавляется FOSE (NVSE для FNV).
Устанавливает текущее состояние предмета находящегося в указанном слоте.
Синтаксис:
ref.SetEquippedCurrentHealth val:float equipmentSlot:int
или
ref.SetEqCurHealth val:float equipmentSlot:int
Пример:
float EquipArmorHealth
set EquipArmorHealth to 350
buddyref. SetEquippedCurrentHealth EquipArmorHealth 2
Устанавливает состояние одетой на Бадди (слот 2) одежды равной 70% (350/5).
--------------------------------------------------------------------------------------------------------------------------------------
Идентификаторы слотов оснащения.
Добавляется FOSE (NVSE для FNV).
0 - голова (head)
1 - волосы (hair)
2 - верхней части тела (сюда входят торс, ноги и руки до кистей. В общем - upper body.)
3 - левая рука (left hand)
4 - правая рука (right hand)
5 - оружие (weapon)
6 - Пип-Бой (pip boy)
7 - рюкзак (backpack)
8 - ожерелье (necklace)
9 - повязка на голову (headband)
10 - шляпа (hat)
11 - очки (eyeglasses)
12 - украшение в носу (nosering)
13 - украшение в ушах (earrings)
14 - маска (mask)
15 - галстук (choker)
16 - объект во рту (mouth object)
17 - дополнение к телу 1 (body addon 1)
18 - дополнение к телу 2 (body addon 2)
19 - дополнение к телу 3 (body addon 3)
Ну и как пример, может поможет:
;сохранение состояния одетого реплейса
if GetEquipped JaneSniperArmorReplaceList ==1
set EquipArmorHealth to GetEquippedCurrentHealth 2
;замена одетой оригинальной брони на реплейс с сохранением состояния брони
elseif GetEquipped JaneSniperArmorOriginalList==1
set EquipArmorID to GetEquippedObject 2
set EquipArmorHealth to GetEquippedCurrentHealth 2
if EquipArmorID == ArmorMetal
AddItem JaneSniperArmorMetal 1
EquipItem JaneSniperArmorMetal 0 1
SetEquippedCurrentHealth EquipArmorHealth 2
RemoveItem EquipArmorID 1
endif
;замена снятой брони из реплейса на оригинальную броню с сохранением состояния
elseif GetEquipped JaneSniperArmorReplaceList==0 && GetItemCount JaneSniperArmorReplaceList > 0
set EquipArmorHealth to (EquipArmorHealth/5)/100
AddItemHealthPercent EquipArmorID 1 EquipArmorHealth
RemoveItem JaneSniperArmorReplaceList 1
endif
Отредактировано Wulf (2012-04-21 10:37:34)