Home Random Page


CATEGORIES:

BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism






Get/Mod/Set ИИ для Боя: Fight, Flee, Alarm 3 page

Begin TribunalMain

 

; проверка на телепортацию

if ( GetPCCell "Sotha Sil," == 1 )

DisableTeleporting

else

EnableTeleporting

endif

 

; проверка на левитацию

if ( GetPCCell "Sotha Sil," == 1 )

DisableLevitation

elseif ( GetPCCell "Mournhold" == 1 )

DisableLevitation

else

EnableLevitation ; Потосу можно телепортироваться везде кроме части Морнхолда

endif

 

 

end

Вот не тестировавшееся предложение для исправления. Последняя версия выглядит так:

Begin TribunalMain

short disablestate
short newstate

;по умолчанию, включить телепортауию и левитацию
set newstate to 0

;проверять только интерьеры
if ( GetInterior )
if ( GetPCCell "Sotha Sil," == 1 )
;отключить здесь телепортациб и левитацию
set newstate to 1
elseif ( GetPCCell "Mournhold" == 1 )
;отключить здесь левитацию
set newstate to 2
endif
endif

;если состояие изменилось
if ( disablestate != newstate )
if ( newstate == 1 )
DisableTeleporting
DisableLevitation

elseif ( newstate == 2 )
DisableLevitation
elseif ( newstate == 0 )
EnableTeleporting
EnableLevitation
endif
set disablestate to newstate
endif



end

 

Примечание: DinkumThinkum предложил следующий способ запрета телепортации. Проверяется, находится ли игрок в определенной ячейке. Если нет, то его скриптом телепортируют, допустим, в начало мода.

Begin DT_Test_BalmoraTrap

If ( GetPCCell, "Balmora" == 1 )
Return
Endif

MessageBox "Давай назад в Балмору!"
Player -> PositionCell, -21278, -17613, 534, 0, "Balmora (-3, -3)"

End DT_Test_BalmoraTrap

Ограничение левитации

[no fix] EnableLevitation

[no fix] DisableLevitation

 

Эти функции используются для разрешения и запрещения левитации. Когда вызывается DisableLevitation, все существующие эффекты левитации отменяются. Когда игрок пытается скастоваться заклинание с эффектом Левитации, когда она отключена, будет показано следующие сообщение, хранящееся в sLevitateDisabled, - «Levitation magic does not work here».

 

Примеры:

Это скрипт установлен на объект в комнате с выключенной левитацией.

 

Begin clampstone

 

short turnedoff

short gavemessage

 

if ( turnedoff == 0 )

DisableLevitation

if ( gavemessage == 0 )

set gavemessage to 1

MessageBox "Странный камень на крыше не дает левитеировать."

Endif

else

EnableLevitation

if ( gavemessage == 1 )

set gavemessage to 0

MessageBox "Камень отключен. Теперь можно левитировать."

Endif

endif

 

if ( OnActivate == 1 )

if ( turnedoff == 0 )

set turnedoff to 1

else

set turnedoff to 0

endif

endif

 

end

 

Этот скрипт на двери, ведущий из комнаты.

 

Begin enable_lev_on_exit

 

if ( OnActivate == 1 )

MessageBox "Покидаете комнату с камнем..."

EnableLevitation

Activate

endif

 

end

Проверка и работа с душами и камнями душ

HasSoulgem, "CreatureID"

 

If ( Actor -> HasSoulGem, "golden saint" )

 

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

 

Пример:Это часть скрипта StrongSoulCheck:

if ( Player->HasSoulGem "atronach_storm" > 1 )

Set counter to ( counter + 2 )

elseif ( Player->HasSoulGem "atronach_storm" > 0 )

Set counter to ( counter + 1 )

endif

 

RemoveSoulgem, "CreatureID", number_enum

 

If ( Actor -> RemoveSoulGem, "golden saint", 1 )

 

 

Удаляет камень с указанной душой из инвентаря игрока.

Пример: это дополнительная часть скрипта RemoveStrongSoul для примера, описанного выше:

 

if ( counter > 0 )

if ( Player->HasSoulGem "atronach_storm" > 0 )

Player->RemoveSoulGem "atronach_storm" 1

Set counter to ( counter - 1 )

endif

endif

 

Заметьте, что у игрока можно таким образом отнять Звезду Азуры. Вот решение:

 

short StarCount ;не может быть больше одной.

 

if ( OnActivate )

if ( Player->HasSoulGem "Golden Saint" > 0 )

set StarCount to ( Player->GetItemCount "Misc_Soulgem_Azura" )

Player->RemoveSoulGem "Golden Saint" 1

if ( ( Player->GetItemCount "Misc_Soulgem_Azura" ) < StarCount )

Player->AddItem "Misc_Soulgem_Azura" 1

endif

Player->AddItem Gold_001, 10000

MessageBox "Спасибо, заходите еще."

else

MessageBox "You У вас не камней душ с Золотыми Святошами."

endif

endif

 

AddSoulGem"creature ID", "soulgem ID"

 

AddSoulGem "atronach_storm", Misc_Soulgem_Grand

 

AddSoulGem добавляет камень душ указанного типа и с указанной душой в инвентарь игрока. Не уверен, что здесь можно указать количество камней.

 

DropSoulgem, "Creature ID"

DropSoulGem "atronach_storm"

 

Я это еще не тестировал – думаю, это заставит вызывающего актера бросить камень, содержащий указанную душу.

 

[no fix] OnPCSoulGemUse (is short variable)

Объект – это камень душ и он был использован или для перезарядки или для создания предмета.

 

Камни душ в игре имеют следующие ID:

ID камней душ:

Misc_SoulGem_Azura

Misc_SoulGem_Grand

Misc_SoulGem_Greater

Misc_SoulGem_Common

Misc_SoulGem_Lesser

Misc_SoulGem_Petty

 

Эта функция не использовалась в оригинальной игре.

Добавление и удаление заклинаний и проклятий

AddSpell, "SpellID"

RemoveSpell, "SpellID"

 

"Actor_ID" -> AddSpell "Absorb Speed"

 

Функция AddSpell добавит заклинание вызывающему объекту. Это означает следующее: обычные заклинания добавятся в список заклинаний игрока. Проклятья, болезни и т.д. будут наложены на вызывающий объект. То же верно для функции RemoveSpell: обычные заклинания удаляться из списка, проклятья и болезни уберутся как эффект.

Примечание: Нельзя удалять расовые характеристики этой функцией (информация с форумов).

Кастование заклинаний

 

Cast, SpellID, "TargetID"

 

Object_ID -> Cast, "flame", Player

 

Функция Cast заставляет вызывающий объект кастовать заклинание "SpellID" в цель "TargetID", и на цель будут влиять положительные или отрицательные эффекты заклинания.

 

Примечание: Считается, что функция Cast работает только для игрока. По крайней мере, с Трибуналом (не уверен насчет ранних версий), вы можете использовать Cast для того, чтобы «метать» заклинание с активатора на актера – возможно, другие комбинации также работают.

 

Пример: Функция Cast может использоваться для ловушек, как в следующем скрипте, прикрепленном к Контейнеру. Учтите, что здесь есть однократное условие, так что эффект не будет накладываться на игрока постоянно.

Begin Trap_script short done if ( OnActivate == 1 ) if ( done == 1 ) ;однократное условие Activate return else Cast, "flame", Player ;повредить игрока set done to 1 Activate endif endif End trap_script

 

 

Следующий пример использует функцию AddSpell:

begin Item_Cast short OnPCEquip short CurseAdded float Timer if ( CurseAdded ) set Timer to ( Timer + GetSecondsPassed ) if ( Timer >= 25 ) ; по прошествии 25 сек удалить заклинание. 25 очков здоровья снято. set Timer to 0 Player->RemoveSpell"ItemFlame" set CurseAdded to 0 endif endif if ( OnPCEquip ); когда предмет надет if ( MenuMode ) return elseif ( CurseAdded == 0 ) Player->AddSpell "ItemFlame" ; заклинание типа «проклятье»! ;заклинание, наносящее одни пункт повреждения огнем в секунду set Timer to 0 set CurseAdded to 1 elseif ( CurseAdded ) ; Добавить заклинание только раз Player->RemoveSpell "ItemFlame" set CurseAdded to 0 endif end Item_Cast   (скрипт от Patrin, отредактированный)

 

Добавленное заклинание — это самодельное проклятье, поражающее огнем на одно очко здоровья каждую секунду. Заметьте, что здесь снова есть условие do once, встроенное в скрипт. Если условия do once не будет, то это может привести к краху игры! Также, похоже, что существо, убитое заклинанием типа проклятие, добавит ко всем таким существам это проклятие. Этого можно избежать, вызывая RemoveSpell в секции OnDeath[38]. (Информация с форумов / Argent)

 

Некоторая информация по различным типам заклинаний: Характеристика, отнимающая здоровье, повреждает МАКСИМАЛЬНОЕ здоровье, а Проклятие нет. Это, похоже, не относится к увеличивающим и уменьшающим эффектам (Информация с форумов / ManaUser).


Date: 2015-12-17; view: 793


<== previous page | next page ==>
Short AllowWerewolfForceGreeting | Get/Mod/Set ИИ для Боя: Fight, Flee, Alarm 4 page
doclecture.net - lectures - 2014-2024 year. Copyright infringement or personal data (0.011 sec.)