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

Муурн Шепард

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

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

  • Посещение

Сообщения, опубликованные Муурн Шепард

  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 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
    
    end

    Antimagic.ESP

  6. В ванили это:

    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

    А, РЕДМЕНЪ опередил. Но список эффектов лишним не будет.

  7. ??

    Getdisabled тоже команда.

    Исходя из того, что во всех скриптах, написанных разработчиками, применяется такой подход, я смею предположить, что команда GetDisabled занимает меньше времени, чем команда Disable.

  8. Что-то я затупил.

    Как сделать заклинание вызова собственного кричера? Вот есть в списке эффектов sEffectSummonCreature0 - это оно? как к нему привязать кричера?

    (вроде как в этой теме уже писали, как это делается, но 130 страниц быстро не прочитаешь)

    Необходимо в Gameplay->Settings найти настройку, отвечающую за айди существа соответствующего эффекта.

     

  9. Я еще не выложил сюжетную часть, где попытался обосновать почему там не спаунятся даэдра.

    Ну, выкладывайте. Пока мне кажется идея очень натянутой.

    Правоверные данмеры, такие правоверные, что у них вместо храма - публичный дом и куча мест, где можно оставить свои деньги.

    Вы сейчас о крупных городах говорите. Там психология у жителей несколько иная.

    Когда это Кальдера, Суран и Тель Мора стали столицами великих домов?

    А когда это в Кальдере появились магазины аптекаря и целителя, зачарователя и алхимика да еще с публичным домом в придачу? Про Суран и Тель Мору тот же вопрос.

  10. Почему бы не использовать готовые "камни", если у них в распоряжении лишь куски пробочника?)

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

     

    Город представляет из себя небольшой городок

    На этом оффтоп предлагаю свернуть.

    РЕДМЕНЪ прав. Набор услуг заявлен, как в столицах домов.

  11. Можно этим же скриптом фиксить силу, если она падает до нуля. Потому что если болезней на существах не будет, то и заражать игрока они не смогут.

  12. Пожалуй, соглашусь, но с точки зрения баланса это даже плюс. Потому что возобновляющееся, неломающееся, невесомое даэдрическое оружие без единого минуса - это перебор.

    Тем более, что при взмахе и ударах так или иначе приходится гасить энергию. Так что не вижу в такой реализации минуса.

    Да я без претензий говорил, просто уточнял. Но, вообще, если подходить с этой стороны, то непонятно, почему призванные оружие и доспехи обладают нулевым весом. Если махать призванным оружием так же тяжело, как и обычным, то почему носить его гораздо легче?

  13. В игре практического смысла в этом нет.

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

  14. В целом, ломать не должно. Хотя вопрос, о каких предметах речь. Луну-и-Звезду с инструментами Кагренака консолью добавлять не стоит. На них завязан мейн-квест и, чтобы скрипты сработали, эти предметы нужно подбирать из локации.

  15. Но это НЕ сработает на зверье. У движка другие формулы, сила просто не учитывается, единственный способ её учесть - это изменить событие урона с помощью луа.

    MCP ж это фиксит, не? Хотя, в последних версиях автор пишет, что это больше не работает с оборотнями. Но хз насчет остальных существ.

    И вообще, нужно учиться из игры смотреть при деланьи ребаланса и все обстоятельства учитывать, а не просто параметры в редакторе смотреть.

    А кто-то всерьез пользуется этой булавой? Вот это новость.

  16. Вопрос - а какие элементы таблицы нужно использовать в этом случае? И какие можно использовать в принципе?

    Айди и количество объектов. Будет что-то вроде

    for _, stack2 in pairs (tes3.player.object.equipment) do 
    EquipmentList [_] =
    {
    ObjId = stack2.object.id
    Amount = stack2.count 
    }
    end
    

    Таблица -- это, грубо говоря, таблица в экселе. Есть строки (0, 1, 2 и т. д.), есть столбцы. Вместо столбцов -- все свойства объекта. То есть айди, имя, вес, etc.

     

×
×
  • Создать...