Перейти к содержимому

Завершается приём предложений о награждениях за 2018 год! Спешите высказаться в соответствующей теме!

Фотография

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

morrowind construction set

  • Пожалуйста, авторизуйтесь, чтобы ответить
7 ответов в этой теме

#1
witchhunter

witchhunter
  • Мимопроходимец

Уровень: 1280
  • Группа:Граждане
  • сообщений:11
  • Регистрация:23-Май 13
У меня появилась проблема, и никак не могу ее решить. Суть такова, в моем плагине есть квест. Ночью появляется призрак и атакует игрока. Но убить его не так просто. Если атаковать, то убив можно лишь развоплотить. То есть, призрак умирает, но потом воскресает. Сам призрак должен появляться только в ночное время суток. Когда его убиваешь тело должно лежать до наступления утра а потом исчезать. Но ночью опять полностью здоровый призрак атакует, и так пока не завершить здание и не освободить душу.

А теперь сама проблема. Появление призрака я сделал через 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, 14 Август 2015 - 09:13 .


#2
AcidBat

AcidBat
  • Нелатентный ..дороубийца. [ВНИМАНИЕ: Статус удален]

Уровень: 1280
  • Группа:Граждане
  • сообщений:352
  • Регистрация:02-Ноябрь 13
  • Город:Волжский
enable/disable - это методы объекта с уникальным Ref ID

#3
witchhunter

witchhunter
  • Мимопроходимец

Уровень: 1280
  • Группа:Граждане
  • сообщений:11
  • Регистрация:23-Май 13

enable/disable - это методы объекта с уникальным Ref ID

призрак имеет уникальный id, если вы об этом)

#4
AcidBat

AcidBat
  • Нелатентный ..дороубийца. [ВНИМАНИЕ: Статус удален]

Уровень: 1280
  • Группа:Граждане
  • сообщений:352
  • Регистрация:02-Ноябрь 13
  • Город:Волжский
Ну так используйте его
Например, если у призрака id QuestGhost, но дизаблить или энаблить его нужно командами QuestGhost.disable и QuestGhost.enable соответственно.

#5
witchhunter

witchhunter
  • Мимопроходимец

Уровень: 1280
  • Группа:Граждане
  • сообщений:11
  • Регистрация:23-Май 13

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

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

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

не сработало

Сообщение изменено: morrow, 15 Август 2015 - 03:07 .


#6
AcidBat

AcidBat
  • Нелатентный ..дороубийца. [ВНИМАНИЕ: Статус удален]

Уровень: 1280
  • Группа:Граждане
  • сообщений:352
  • Регистрация:02-Ноябрь 13
  • Город:Волжский
А если вместо точки использовать -> ?

#7
Dun Dram

Dun Dram
  • Tribute to Evil

Уровень: 1280
  • Группа:Граждане
  • сообщений:4 476
  • Регистрация:03-Март 14
  • Город:Тлён, Хахд, Мнемолохарт

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

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

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

GameHour
GamehOur

Зачем так?


Нет больше формулы Добро-против-Зла,
Азатот правит бал,
Человек ошибка или шутка,
За занавесью жизни скрывается что-то жуткое,
Способное погрузить наш мир в кошмар.

#8
witchhunter

witchhunter
  • Мимопроходимец

Уровень: 1280
  • Группа:Граждане
  • сообщений:11
  • Регистрация:23-Май 13

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

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

Это ж синтаксис Обливиона. В Морре 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, 15 Август 2015 - 03:13 .




Темы с аналогичными тегами (одним или более): morrowind, construction set

Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Top.Mail.Ru