![]() CATEGORIES: BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism |
Player -> Position 29872, -82108, 578, 180 11 pageВообще книги (а может и другие типы предметов, которые ведут себя странно?) устанавливают SkipEquip, а не OnPCEquip! См раздел Советы и Трюки по этому вопросу.
Выключение возможности надеть предмет [no fix] PCSkipEquip (локальная переменная типа short)
Short PCSkipEquip Set PcSkipEquip to 1
Задайте значение 1, чтобы пропустить надевание предмета. Подходит для всплывающих сообщений об опечатанной книге и прочего. Для расширенного примера смотрите скрипт SealedTreasuryReport в редакторе. Также может быть использовано на одежде как триггер скриптов связанных с OnPCEquip (см мой мод про скалолазание, там приспособление для скалолазания – это пояс, но он конечно не может быть надет) Примечание: Надевание книги в инвентаре устанавливает эту переменную в 1 (вместо установки OnPCEquip, как надо). См раздел Советы и Трюки. Есть баг, связанный с удвоением предметов, имеющий функцию SkipEquip. Я его видел и, используя горячие клавиши, и, надевая предмет через инвентарь, когда используется OnPCEquip. Чтобы избежать этого, добавляйте и удаляйте пробный предмет (из той секции скрипта, где проверяется OnPCEquip). Не удаляйте сам предмет со скриптом, игра вылетит (см RemoveItem). Если у вас много предметов со SkipEquip, используйте глобальный скрипт, вызывая его через StartScript:
Begin doubling_fix
Player -> Additem "Item ID", 1 Player -> RemoveItem "Item ID", 1
StopScript doubling_fix
End
Пример: Вот короткий скрипт, который я сделал для мода с оборотнями, он делает предмет ненадеваемым при определенных условиях: Begin non_equippable
; не позволяет игроку-оборотню надевать предметы охотника на оборотней по причине баланса ; если игрок надел их до того, как стал оборотнем, он будет носить их, пока не снимет сам. ; но после не сможет надеть их. Так что после первой трансформации он не сможет надеть их снова
Short PCSkipEquip Short OnPCEquip
if ( PCWerewolf != 1); если игрок не оборотень, он может использовать эту броню set PCSkipEquip to 0 return else set PCSkipEquip to 1 endif
if ( OnPCEquip == 1 ) MessageBox " Этот предмет зачарован заклинанием, отгоняющим оборотня. Ты не можешь надеть его!" set OnPCEquip to 0 endif
End
Проверка присутствия предметов в инвентаре GetItemCount, "ObjectID" (returns short)
Short objectcount Set objectcount to ( "Mob_ID" -> GetItemCount, "Object_ID" )
If ( GetItemCount, "Object_ID" >= 1 )
Эта функция проверяет инвентарь вызывающего объекта и возвращает число объектов типа "Object_ID", которые там присутствуют. Починка предметов [no fix] OnPCRepair (is short variable)
Short OnPCRepair If ( OnPCRepair == 1 )
Игровая переменная, которая принимает значение 1, когда игрок чинит вызывающий объект. Требует ручного сброса.
RepairedOnMe, "Object ID" (returns Boolean/short)
if ( "daedric_mace"->RepairedOnMe, "repair_journeyman_01" == 1 )
Эта функция возвращает 1, если вызывающий объект чинится предметом типа "Object ID". Object ID должен быть типа "Repair Item", и вызывающий объект должен быть либо оружием, либо броней.
OnRepair
Схожая функция OnRepairв настоящий момент испорчена. Она должна принимать значение 1, когда объект чинится любым предметом: "возвращает 1, если вызывающий объект чинится вообще". Информация о надетых объектах GetWeaponType(returns short)
If ( Player->GetWeaponType == 0 ) ;Игрок использует короткие клинки
GetArmorType,armorPart_enum (returns short, -1 to 2)
If ( Player->GetArmorType, 0 == 2 ) ;Игрок носит тяжелый шлем
Эти функции вызываются на актере, чтобы собрать информацию об объектах, надетых на актере. GetWeaponType возвращает тип текущего оружия актера (см Таблицу 1.1). GetArmorType возвращает вес определенной части брони на актере (см Таблицу 1.3). Номера частей брони даны в Таблице 1.2. HasItemEquipped возвращает 1, если актер экипировался данным предметом и 0, если нет. Типы оружия[19] (Таблица 1.1):
Части брони[20] (Таблица 1.2):
Типы брони / вес (Таблица 1.3):
HasItemEquipped"item_ID" (returns short)
If ( Player -> HasItemEquipped "chitin club" == 1 ) ;ты жалок!
Пример: Когда этот скрипт добавлен к объекту, его активирование приводит к получению «повреждению» этого объект, в зависимости от текущего оружия и силы игрока. Если оружие – особое оружие с ID “Rock Splitter” объект разрушается за один удар. Когда объект полностью разрушен, он взрывается, посылая в лицо игроку осколки, если игрок не носит щит или шлем.
Begin breakme
float hitsleft float hitpercent short damage short tempdamage short weapon short doOnce short shieldType short hasHammer short hitRock
if ( doOnce == 0 ) set hitsleft to 10000 set doOnce to 1 endif
if ( OnActivate ) set hasHammer to ( player->HasItemEquipped "RockSplitter" ) if ( hasHammer == 1 ) MessageBox "Разрушитель Скал показывает свю силу..." set hitsLeft to 0 else MessageBox "Вы ударяете скалу своим оружием..." set weapon to ( player->GetWeaponType ) set damage to ( player->getstrength ) set tempdamage to 5
if ( weapon == -1 ) set tempdamage to 1 endif if ( weapon >= 9 ) set tempdamage to 2 endif if ( weapon == 4 ) set tempdamage to 10 endif if ( weapon == 8 ) set tempdamage to 8 endif
set damage to damage * tempdamage
set hitsleft to hitsleft – damage endif
if ( hitsleft <= 0 ) disable set shieldType to ( player->GetArmorType 8 ) if ( shieldType == -1 ) set shieldType to ( player->GetArmorType 0 ) if ( shieldType == -1 ) MessageBox "...и скала раскалывается, а осколки летят вам в лицо." Player->ModHealth –50 else MessageBox "...и скала разрушается, но осколки отскакивают от вашего шлема." Endif else MessageBox "...и скала разрушается, но осколки отскакивают от вашего щита." Endif else set hitpercent to hitsleft / 100 set hitpercent to 100 – hitpercent MessageBox "...и скала повреждается на %.2f процентов, хотя и остается целой.", hitpercent endif
endif UsedOnMe UsedOnMe, “Object ID” (returns Boolean/short) if ( UsedOnMe, Misc_pot_redware_01 )
В соответствие с файлом помощи: "Возвращает “истину”, если “Object ID” использован на вызывающем объекте. Это используется для скриптов, которые заставляют объекты делать определенные вещи, когда игрок применяет на них этот объект." Date: 0000-00-00; view: 943
|