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

Муурн Шепард

Граждане
  • Постов

    3448
  • Зарегистрирован

  • Посещение

Информация о Муурн Шепард

  • День рождения 10 февраля

Информация

  • Город
    Лунная Тень
  • Пол
    Мужчина

Дополнительные поля

  • Владение инструментами плагиностроения
    Скрипты и диалоги (TES 3)

Посетители профиля

34839 просмотров профиля

Достижения Муурн Шепард

Герой Фуллреста

Герой Фуллреста (13/14)

  1. Можно сделать другой скрипт: if ( GetFight >= 100 ) return endif if ( GetAttacked == 1 ) set Room_Aggression to 1; Room_Aggression -- глобальная переменная. Можно заменить на запись в журнале. Запись можно оставить пустой (тогда в дневник ничего не напишется) или добавить какой-нибудь текст. endif if ( Room_Aggression == 1 ) StartCombat Player SetFight 100 endif
  2. elseif ( doOnce == 0 )Вот эта строчка лишняя. На ее место можно поставить endif, а в конце второй endif убрать. В принципе, да. Но можно вместо этой переменной проверять себя на GetFight. Если результат >= 100, значит, игрок на меня напал. if ( NPC_1->GetAttacked == 1 ) SetFight 100 StartCombat Player set doOnce to 1 elseif ( NPC_2->GetAttacked == 1 ) SetFight 100 StartCombat Player set doOnce to 1 ;<...> elseif ( NPC_n->GetAttacked == 1 ) SetFight 100 StartCombat Player set doOnce to 1 endifЭти блоки лучше объединить вот так.
  3. Я предполагаю, что дело в том, что почему-то глобальная переменная по умолчанию была больше нуля. Не помню, от чего это зависит, но, емнип, иногда случается баг, когда переменная инициализируется с максимальным значением, а не с тем, которое проставлено в Globals. В моем варианте огни снова включаются командой Enable, если команду на выключение еще не давали/отменили.
  4. Fight отвечает за агрессивность в целом. Значения 90+ означают автоматическую агрессию, независимо от привлекательности и репутации игрока. Чтобы неписи реагировали на убийства, нужно ставить им Alarm 90 или выше. При 100 еще будут вешать на игрока штрафы, если заметят. Если неписи не заметили, как вы кого-то убивали, то это логично, что они не будут на вас накидываться. Можно заставить их напасть скриптом в таком духе: short OnPCHitMe if ( OnPCHitMe == 1 ) if ( GetFight < 90 ) NPC_1->StartCombat Player;нужно проставить айди всех неписей, которые есть в здании NPC_1->SetFight 90;нужно проставить айди всех неписей, которые есть в здании NPC_2->StartCombat Player;нужно проставить айди всех неписей, которые есть в здании NPC_2->SetFight 90;нужно проставить айди всех неписей, которые есть в здании NPC_3->StartCombat Player;нужно проставить айди всех неписей, которые есть в здании NPC_3->SetFight 90;нужно проставить айди всех неписей, которые есть в здании NPC_4->StartCombat Player;нужно проставить айди всех неписей, которые есть в здании NPC_4->SetFight 90;нужно проставить айди всех неписей, которые есть в здании NPC_5->StartCombat Player;нужно проставить айди всех неписей, которые есть в здании NPC_5->SetFight 90;нужно проставить айди всех неписей, которые есть в здании endif endif
  5. А если так? begin LIGHTS_remover if ( LIGHTS != 1 ) if ( GetDisabled == 1 ) Enable endif else if ( GetDisabled == 0 ) disable endif endif End
  6. В смысле два? Переменная для отладки.
  7. Мда. В общем, такой скрипт работает с восстановлением здоровья (и, наверно, с другими эффектами), но почему-то совершенно не ловит восстановление магии. Сложный скрипт, как выяснилось, не нужен -- игра перехватывает и удаляет эффекты до того, как они повлияют на персонажа. Два кольца с двумя вариантами скрипта лежат у Дорисы Давел на прилавке, если кто-нибудь захочет разобраться. Begin AntimagicRing short OnPCEquip short RestoringMagicka if ( MenuMode == 1 ) return endif if ( OnPCEquip == 0 ) return endif set RestoringMagicka to ( Player->GetEffect sEffectRestoreSpellPoints ) MessageBox "RestoringMagicka: %.0f" RestoringMagicka ;Отладка. Должно показывать 1, если поймал эффект. if ( RestoringMagicka == 1 ) Player->RemoveEffects 76 endif endAntimagic.ESP
  8. Восстановление магии на постоянный эффект или по активации предметов?
  9. В ванили это: if ( Player->GetEffect sEffectRestoreSpellPoints == 1 ) Player->RemoveEffects 76 endifСписок всех эффектов. Возможно, что часть магии игра все равно успеет восстановить, потому, наверно, тут нужно будет через ModCurrentMagicka вернуть прежнее значение магии. Что-то вроде: float CurrentMagicka float NewMagicka if ( Player->GetEffect sEffectRestoreSpellPoints == 0 ) Set CurrentMagicka to ( Player->GetMagicka ) else Player->RemoveEffects sEffectRestoreSpellPoints set NewMagicka to ( Player->GetMagicka ) set NewMagicka to ( CurrentMagicka - NewMagicka ) Player->ModCurrentMagicka NewMagicka endifА, РЕДМЕНЪ опередил. Но список эффектов лишним не будет.
  10. Исходя из того, что во всех скриптах, написанных разработчиками, применяется такой подход, я смею предположить, что команда GetDisabled занимает меньше времени, чем команда Disable.
  11. Begin AOV_C1 if ( GetJournalIndex AOV_Elmussa >= 100 ) if ( GetDisabled == 0 ) Disable Return endif endif EndПравильней будет так, чтобы не вызывать команду Disable каждый фрейм, когда объект уже отключен.
  12. Необходимо в Gameplay->Settings найти настройку, отвечающую за айди существа соответствующего эффекта.
  13. Ну, выкладывайте. Пока мне кажется идея очень натянутой. Вы сейчас о крупных городах говорите. Там психология у жителей несколько иная. А когда это в Кальдере появились магазины аптекаря и целителя, зачарователя и алхимика да еще с публичным домом в придачу? Про Суран и Тель Мору тот же вопрос.
  14. Потому что у таких мест дурная слава и гнетущая атмосфера. А еще в любой момент может соспауниться даэдрот. Вот правда в любой. Вообще, жить в таких местах для правоверных данмеров, да и не только данмеров, -- это как обвешать квартиру фашистской символикой и спрашивать "а что такого, лучше такие гобелены, чем никаких". На этом оффтоп предлагаю свернуть.РЕДМЕНЪ прав. Набор услуг заявлен, как в столицах домов.
×
×
  • Создать...