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

Проблемы со стартовым скриптом


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

Впервые раз встретился с такой проблемой: приведенный ниже стартовый скрипт вроде бы работает, однако есть проблема: по его выполнении, он должен отключиться и запустить другой скрипт; это исполняется, но почему-то при попытке сохранить игру, эти данные не записываются в сэйве (при открытии сохраненной игры OegnitrScript действует, причем его переменные снова равны нулям, как если бы он и не исполнялся; а DarkIntroScript наоборот не исполняется - смотрел через sv в консоли). В чем же может быть причина этой ошибки - в самом скрипте или в чем-то еще?

 

begin OegnitrScript

 

short button

short controlvar

short darkInfo

short darkMessage

short doOnce

short permitOnce

 

if ( doOnce == 1 )

if ( ScriptRunning, OegnitrScript == 1 )

set doOnce to 0

StartScript, DarkIntroScript

StopScript, OegnitrScript

endif

endif

 

if ( GetJournalIndex "A1_1_FindSpyMaster" > 0 )

if ( permitOnce != 1 )

set permitOnce to 1

endif

endif

 

if ( darkMessage == 1 )

if ( GetPCSleep == 0 )

set darkInfo to 1

set darkMessage to 0

endif

endif

 

if ( darkInfo == 1 )

if ( controlvar == 0 )

MessageBox "Вы стремительно летите на северо-восток Вварденфелла, словно увлеченные таинственной силой!! На окраине Шигорада, среди многочисленных скал, Ваш полет замедляется, и Вы замечаете странную статую, словно исходящую из скалы... Внезапно, глаза статуи вспыхивают золотым светом - и Вы поражаетесь коснувшейся Вас силы, решая во что бы то ни стало обрести ее!!", "Проснуться"

set darkInfo to 0

set controlvar to 1

endif

endif

endif

 

if ( controlvar == 1 )

set button to GetButtonPressed

if ( button == -1 )

return

elseif ( button == 0 )

set controlvar to 2

endif

elseif ( controlvar == 2 )

if ( doOnce == 0 )

journal 1_1_1_3_b 5

set controlvar to 0

set doOnce to 1

endif

endif

 

if ( permitOnce == 1 )

if ( GetPCSleep == 1 )

if ( darkMessage == 0 )

set darkMessage to 1

endif

endif

endif

 

end OegnitrScript

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

очевидно же. У всех твоих переменных стоит 1. Изначально все переменные имеют значение 0.

т.е например эта часть не сработает не при каких условиях

if ( doOnce == 1 )
if ( ScriptRunning, OegnitrScript == 1 )
set doOnce to 0
StartScript, DarkIntroScript
StopScript, OegnitrScript
endif
endif

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

Kane,

нет, там нет ошибки, просто разные блоки вразных местах

 

Pretorius

если скрипт стартовый, то есть помещен в StartScripts, он инициализируется при каждом запуске игры. Не исключено, что после остановки-перезапуска все переменные объявляются сначала, а следовтально равны 0. Попробуй запустить свой первый скрипт не через меню стартовых скриптов а в игре в ходе сюжета: в диалоге, с объекта, рядом с которым находиться игрок и т.п.

 

либо если уж никак, то ставь проверку на индекс журнала, как условие для работы всех блоков скрипта:

 

if ( GetJoutnalIndex, "1_1_1_3_b" < 5 )

;все блоки скрипта

endif

В этом случае будет уже не важно что там обнуляется, а что нет =)

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

нет, там нет ошибки, просто разные блоки вразных местах

В таком случае, это тоже может вызывать ошибку. Неупорядоченные блоки иногда не срабатывают в Морре.

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

особенно не стал копаться в коде,но т.к. скриптовый язык морровинда оч похож(ИМХО) на C#,то надо сначало установить какое либо значение переменной,прежде чем его использовать,т.к. поидее морра читает скрипт сверху вниз. :dontknow: Изменено пользователем acercomp
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Войти

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

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

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