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

DlinnyiAl

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

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

  • Посещение

Сообщения, опубликованные DlinnyiAl

  1. разве это не говорит о том, что работает, но только в глобальных и направленных скриптах ?

    Ну как сказать, "may trigger" еще можно перевести, как "может сработать, а может и не сработать, как повезет". В общем, как и с дверьми. Привносит в рандом еще больший рандом, но работать с этим можно, конечно.

  2. mortuus

    Да, спасибо, olol уже это предлагал, действительно гораздо более "чистый" способ с точки зрения загрязнения игрового мира. Гораздо более трудоемкий, чем предложенный мной, но чистый.

    Но если бы вы точнее объяснили чего хотите, то, возможно, вам что-то более дельное посоветовали.

    По сути, если вкратце - прикручиваю озвучку Вильи из Скайрима к компаньону в Морр. Как это выглядит с точки зрения моего вопроса: по таймеру компаньон говорит фразу из заготовленного списка + в зависимости от местности + при наличии определенных условий расы/пола/здоровья/погоды/времени суток и т.д. Как-то так.

    При использовании описанных мной меток, было бы достаточно раскидать их по локациям. А так, нужно over1000 локаций прописывать в скриптах. И по сути, что-то более дельное сложно предложить, все-таки скриптовый язык Морра весьма скуден, а MWSE я не буду использовать исходя из его некоторой глюковатости.

     

    Но это уже не проблема, гораздо сложнее будет найти способ, чтобы враги не нападали на компаньона в драке (нечего у меня прокачку отбирать). Конечно, можно сделать компаньона трусом, чтобы он сразу убегал, но в таком случае враги иногда начинают его преследовать, а такой паровоз это уже ни в какие ворота... Самое обидное, что та же Emma явно пыталась решить эту проблему в своих плагинах, но ни один из её способов не работает. Пока что не придумал ничего умнее, чем дать каждому зверю\изначально_агрессивному_npc скрипт, либо встроить в его скрипт, если он есть:

    if DontAttackCompanion == 1
     if GetTarget id_Companion == 1
    	  StopCombat
    	  StartCombat, Player
     endif
    endif
    

     

    Но затронуть столько npc - это индусский код чистой пробы. Думаю, что сделаю две версии: с возможностью режима пацифиста и без.

    Ну вот как-то так, объяснил поточнее все свои текущие трудности, с которыми столкнулся, спасибо за внимание и за прошлые и будущие советы)

  3. Ув. olol, простите мне мой английский, но на мой взгляд, в вашей цитате из девятой редакции MSD приведено ровно тоже самое, что я написал. Что cellchanged не сработает при телепортации:

    It doesn’t return 1 for scripted teleporting or magic teleporting.

    И что хуже, есть уточнение, что CellChanged может не сработать даже при обычном перемещении через дверь:

    CellChanged doesn't always trigger, even if the player enters the cell via a normal teleport door.

    Однако, вы разумеется правы, не стоит плодить лишние сущности. Уже сделал список локаций, постараюсь разбить их поэффективнее на малые части и проверить через массив скриптов. Спасибо за ваши с mortuus советы насчет скриптов. От себя добавлю, что не стоит забывать и про максимальное количество возможных условий if-elseif в одном скрипте (127). С учетом множественных проверок это даже более важно, чем максимальный размер скрипта.

    ____

    P.S.:

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

    Больше.

  4. Здравствуйте, мастера, прошу вашего совета. Такая проблема: есть плагин с NPC компаньоном, и он должен реагировать на определенный список локаций. Список столь велик, что банальным перебором с GetPCCell это не решаемо. "Частичное совпадение" названия локации тоже исключается. Хотелось бы выслушать ваше мнение по поводу решения данной задачи, т.к. мое решение - тот еще индусский код. И да, реакция используется не в диалоге.

     

    Изначально была идея повесить компаньону скрипт с "GetDistance" до метки (если объект вне текущего interior, то он возвращет 0), но к сожалению он определяет расстояние только для уникального объекта - либо для последнего добавленного в CS объекта, NPC или кричера. Пришлось отказаться.

     

    Вот, собсвенно то, до чего я додумался: в каждую локацию, в пустоту на карте помещается объект "метка" со скриптом, который раз в секунду изменяет на +1 определенную глоб. переменную. А NPC каждые 2 секунды проверяет, изменилась ли переменная (значит локация помечена) или нет (значит реакция не нужна).

  5. Люди, ну ёлы палы! Руководство лежит на форуме уже семь лет, и хоть кто нибудь бы сказал, что в нем есть ошибки в скрипте Фаргота:

    1. В некоторых местах вместо "prospectref" написана необъявленная переменная "prospect"

    2. строчку "stopscript siren_call" нужно вынести в самый конец, после endwhile

    Использовал его как тест для редактора скриптов, столько времени потерял...

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