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

Модели стихийных бедствий Wizards Islands


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

Wizard's Islands содержит интересную группу моделей стихийных бедствий (Z_Fire_Rain_Creature, Z_IceFlurry_Creature, Z_Inferno_Creature, Z_LightningStorm_Cr, Z_SonicWave_Creature, Z_Tornado_Creature), которые так и не были использованы в оригинальной игре.

Ниже приведен скрипт, загружающий эти модели в игру при MornAssault == 1 (при атаке на Морнхолд Рыцарей Тьмы, посылаемых Священным Советом после уничтожения тирана Хелсета). При приближении игрока к creature, оно должно загружаться, атаковать некоторое время игрока и исчезать до повторного к нему приближения.

Проблема заключается в том, что иногда скрипт почему-то работает нестабильно, останавливаясь на исполнении команд DisablePlayerControls и Enable.

 

begin DestructionMournholdScript

 

short Blast

short doOnce

short Sitisit

float timer

float damage

 

if ( MenuMode == 1 )

return

endif

 

if ( Player->GetHealth <= 0 )

return

endif

 

if ( doOnce == 1 )

set doOnce to 0

return

endif

 

SetHealth 10000

 

if ( GetAttacked == 1 )

if ( doOnce == 0 )

SetFight 0

StopCombat Player

set doOnce to 1

endif

endif

 

if ( MornAssault == 0 )

if ( GetDisabled == 0 )

Disable

return

elseif ( GetDisabled == 1 )

return

endif

endif

 

if ( MornAssault == 1 )

if ( CellChanged == 0 )

if ( GetSoundPlaying "DarkFire" == 0 )

PlayLoopSound3DVP "DarkFire" 1.0, 1.0

endif

endif

endif

 

if ( MornAssault == 1 )

if ( GetDistance Player < 500 )

if ( Blast == 0 )

if ( GetDisabled == 1 )

Enable

set Sitisit to 1

elseif ( GetDisabled == 0 )

set Sitisit to 1

endif

elseif ( Blast == 1 )

Disable

return

endif

elseif ( GetDistance Player >= 500 )

if ( GetDisabled == 0 )

Disable

set Sitisit to 0

set Blast to 0

return

elseif ( GetDisabled == 1 )

set Sitisit to 0

set Blast to 0

return

endif

endif

endif

 

if ( Sitisit == 1 )

if ( timer >= 10 )

if ( Blast == 0 )

EnablePlayerControls

set Blast to 1

set timer to 0

endif

endif

endif

 

if ( Sitisit == 1 )

if ( timer < 10 )

if ( Blast == 0 )

DisablePlayerControls

set timer to ( timer + GetSecondsPassed )

set damage to -500

set damage to ( damage * GetSecondsPassed )

Player->ModCurrentHealth, damage

PlayGroup, Idle

endif

endif

endif

 

end DestructionMournholdScript

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

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

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

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

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

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

Войти

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

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

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