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

помогите найти баг в скрипте.


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

У меня появилась проблема, и никак не могу ее решить. Суть такова, в моем плагине есть квест. Ночью появляется призрак и атакует игрока. Но убить его не так просто. Если атаковать, то убив можно лишь развоплотить. То есть, призрак умирает, но потом воскресает. Сам призрак должен появляться только в ночное время суток. Когда его убиваешь тело должно лежать до наступления утра а потом исчезать. Но ночью опять полностью здоровый призрак атакует, и так пока не завершить здание и не освободить душу.

 

А теперь сама проблема. Появление призрака я сделал через gamehour и enable/disable. призрак появляется нормально, но он становится неубиваемым, у него вообще не появляется полоска здоровья и, и не атакует. Я никак не могу понять, в чем же дело, даже убрал части скрипта с оживлением,упростив до минимума, но не могу понять, какая же строка дает такой баг.

 

вот этот самый скрипт:

 

Begin Ghost_script

short DoOnce

if GameHour > 5

Disable

endif

if GamehOur < 23

Disable

endif

if GameHour <= 5

Enable

endif

if GamehOur >= 23

Enable

endif

endif

 

 

If GetDisabled == 0

If DoOnce == 0

If GetDistance Player <= 512

Journal "WH_IntoTheNight" 1

set DoOnce to 1

endif

endif

endif

end

 

И если не сложно, можете рассказать о нюансах enable/disable на кричерах и неписях))

 

Заранее спасибо)

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

Ну так используйте его

Например, если у призрака id QuestGhost, но дизаблить или энаблить его нужно командами QuestGhost.disable и QuestGhost.enable соответственно.

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

Ну так используйте его

Например, если у призрака id QuestGhost, но дизаблить или энаблить его нужно командами QuestGhost.disable и QuestGhost.enable соответственно.

ок) сейчас попробую)

 

Ну так используйте его

Например, если у призрака id QuestGhost, но дизаблить или энаблить его нужно командами QuestGhost.disable и QuestGhost.enable соответственно.

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

Например, если у призрака id QuestGhost, но дизаблить или энаблить его нужно командами QuestGhost.disable и QuestGhost.enable соответственно.
Это ж синтаксис Обливиона. В Морре QuestGhost->disable, и то, если из глобального скрипта. Если скрипт локальный, на кричере, то и этого не надо.

 

А вообще сам призрак работает нормально? Если его просто как кричера в мир выставить, он дерется\умирает?

 

GameHour

GamehOur

Зачем так?

 

 

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

А если вместо точки использовать -> ?

тоже самое. я-> изначально использовал

 

Это ж синтаксис Обливиона. В Морре QuestGhost->disable, и то, если из глобального скрипта. Если скрипт локальный, на кричере, то и этого не надо.

 

А вообще сам призрак работает нормально? Если его просто как кричера в мир выставить, он дерется\умирает?

 

Зачем так?

кстати, к моему удивлению точка сработала точно так же как стрелка))) снять скрипт - призрак абсолютно нормальный. Это задумка квеста - проклятый дух, который все время возвращается. надо выполнить квест и снять проклятье - он освободится)

 

Не по теме. Скрипт висит на призраке и все команды применяются к призраку (если не указано иначе, конечно).

if GameHour > 5
Disable
endif
if GamehOur < 23
Disable
endif
if GameHour <= 5
Enable
endif
if GamehOur >= 23
Enable
endif
endif; этот endif лишний, он не закрывает ничего

В одном фрейме по алгоритму получается, что вначале выполняется GameHour > 5 и GameHour >= 23 потом, хех. То есть призрак получает Disable и сразу же Enable. Может глючить из-за этого. Можно попробовать привести к такому виду:

if ( GetDisabled == 0 )
if ( GameHour >= 6 )
 if ( GameHour <= 23 )
  Disable
 endif
endif
else
if ( GameHour < 6 )
 Enable
elseif ( GameHour > 23 )
 Enable
endif
endif

лишний endif наверное когда от остальных строк очищал чтоб баг найти)

сейчас попробую ваш вариант)

 

Заработало))) огромное спасибо) теперь буду знать, как избегать подобных ситуаций) всем спасибо за советы)

 

 

morrow: Не мультипостите. дописывайте новые сведения в предудущее сообщение.

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

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

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

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

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

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

Войти

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

Войти
×
×
  • Создать...