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

Dagot_Prolaps

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

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

  • Посещение

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

  1. Я отфильтровал все новые оружия, броню, одежду и существ из МФР и поместил всё это в эксель.

    Теперь вы можете настроить их параметры под себя и создать свой ребаланс.

    Все параметры рассчитываются Экселем автоматически – все формулы я написал. Вам остаётся только вручную прописать материал шмоток и тип (только для оружия). А потом придумать и заполнить коэффициенты для нововведённых материалов (также можно изменить коэфы уже существующих материалов и типов).

    Например, хотим чтоб крафтовый даэдрик был лучше обычного.

    Создаём на странице коэфов строчку Даэдрик2 и прописываем её параметры, а потом прописываем Даэдрик2 в материал нужных крафтовых шмоток – теперь они будут с параметрами для Даэдрик2, в отличие от стандартных даэдрических шмоток, у которых материал просто Даэдрик.

     

    Подробные инструкции по заполнению таблиц, эксельным формулам и созданию своего ребаланса здесь.

  2. 1559152_d313.jpg

     

    Эксель – это не просто прога. Это – целый язык программирования! А в свете недавнего открытия импорта и экспорта таблиц в КС, теперь это ещё и полноценное продолжение конструктора плагинов. В частности, ребалансов шмоток, существ и даже неписей.

     

     

    Как же применить магию Экселя на практике?

     

    1) Загрузить в КС свой мод

    2) Экспортировать нужные данные (оружие, броня, существа, одежда…)

    3) Открыть получившийся текстовый файл и заменить в нём все точки на запятые.

    4) Открыть изменённый txt в Экселе. Формат: 1251 – Кириллица (виндовс)

    5) Отфильтровать только новые данные из мода.

    5.1) Для этого скопировать столбец ID объектов из таблицы данных оригинальной игры рядом со столбцом ID объектов мода.

    5.2) Выделить оба столбца. Главная → условное форматирование → правила выделения ячеек → повторяющиеся значения.

    5.3) Фильтруем таблицу по цвету и удаляем все помеченные строки. Удаляем скопированный ранее столбец ID. Теперь в вашей таблице только объекты из вашего мода.

    6) Редактируем значения.

    6.1) Заполняем столбцы S, T, U для оружия и столбцы K, L, M для брони вручную – всё по аналогии с предложенной таблицей из оригинала.

    6.2) Если вам нужны новые материалы или модели оружия – переходим на лист Коэф и Коэфбр и создаём новые строки с придуманными вами материалами, прописываем для них коэффициенты.

    6.3) На листах Коэф и Коэфбр можно отредактировать стартовые коэффициенты для оригинальных материалов и типов оружия. А для оружия можете даже настроить продвинутое соответствие веса и скорости!

    6.4) Копируем нужную формулу в ячейки по всей длине нужного столбца. Готовые ячейки с формулами на страницах оригинальных оружия и брони.

    7) Сохраняем готовую таблицу как txt с табуляторами.

    8) Меняем в нём запятые на точки.

    9) Загружаем в КС свой мод и импортируем нужные данные из этого текстового файла. Готово!

     

     

    Весь вышеизложенный алгоритм до 6 пункта я проделал для вас с МФР. В приложенной таблице вы найдёте листы с данными об оружии, броне, одежде и существах как из оригинальной игры, так и только новые объекты из МФР.

    Редактируйте по своему усмотрению и создавайте свой самый лучший ребаланс.

    Листы с оружием и бронёй оригинала уже полностью ребалансированы – все ячейки заполнены формулами. Можно смотреть на них и делать по аналогии.

     

     

    А теперь инструкции по формулам для продвинутых экселистов.

     

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

     

    ОРУЖИЕ

     

    Для всего оружия надо прописать вручную материал и вид в соответствующих столбцах. Также в столбце «маг» желательно прописать коэффициент увеличения цены в зависимости от зачарования (чем круче зачарование – тем выше цифра).

     

    Вес:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 4); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 4));0)

    Вес стрел, болтов и металок:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 4); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 4));1)

     

    Цена:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 2); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 2); СУММ(1; U2));0)

     

    Чароемкость:

    =ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 3); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 3))

     

    Прочность:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 5); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 5));0)

     

    Скорость (для всего кроме призванного и металок со стрелами):

    =ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(F2;Коэф!A:A;0); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 13))

    Стрелы и болты: всегда 1. Звёзды – 1.5, дротики – 1.0, ножи – 0.7.

    Призванные прописать вручную.

    Эта формула отличается от остальных, здесь мы узнаём номер столбца, где прописана правильная скорость (7, 8 или 9).

     

    Длина:

    =ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 10)

     

    Руб (мин):

    =ОКРУГЛ(ПРОИЗВЕД(M2; ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!$A:A;0); 11));0)

     

    Руб (макс):

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 7); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 6));0)

     

    Реж (мин):

    =ОКРУГЛ(ПРОИЗВЕД(O2; ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 11));0)

     

    Реж (макс):

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 8); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 6));0)

     

    Кол (мин):

    =ОКРУГЛ(ПРОИЗВЕД(Q2; ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 11));0)

     

    Кол (макс):

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 9); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 6));0)

     

    Игнор (применять формулу только для немагического оружия):

    =ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 13)

     

    Тип оружия:

    =ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 12)

     

     

    ДОСПЕХИ

     

    Для всего сперва надо прописать вручную материал. Для щитов прописать вручную в столбце «щит» 0 для малых щитов и 1 для ростовых.

     

    Вес

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(E2;Коэфбр!A:A;0); 4); ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 4));1)

    Вес для щитов отдельно:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(M2;Коэфбр!A:A;0); 4); ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 4));1)

     

    Цена

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(E2;Коэфбр!A:A;0); 2); ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 2); СУММ(1; L2));0)

    Цены для щитов отдельно:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(M2;Коэфбр!A:A;0); 2); ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 2); СУММ(1; L2));0)

     

    Чароемкость

    =ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(E2;Коэфбр!A:A;0); 3); ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 3))

     

    Прочность

    =ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(E2;Коэфбр!A:A;0); 5); ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 5))

    Прочность щитов:

    =ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(M2;Коэфбр!A:A;0); 5); СУММ(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 5); ПРОИЗВЕД(ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 6);0,02)))

    Это формула улученного коэффициента прочности для щитов: = коэф. прочности брони + АР/50

     

    Защита

    =ИНДЕКС(Коэфбр!A:Z; ПОИСКПОЗ(K2;Коэфбр!A:A;0); 6)

    Для щитов всегда 0.

     

     

     

    Далее в этой теме не лишним будет обсуждать предложенные коэффициенты для типов оружия, брони и материалов, цены, урон, защиту, прочность, чароёмкость, вес, а также другие хитрости Экселя. Разбираемся в тонкостях формул, составляем и выкладываем свои продвинутые формулы. Кроме того можно подумать, какие формулы подойдут для быстрого и удобного авторасчёта статов существ – тут всё ещё непаханое поле для экспериментов.

    REBEL ANUS!.rar

  3. Ну, проверка идёт в независимых секциях.  Но уже после того как секция расчётов завершила работу или даже не начинала ей в случае запомненной десятки.

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

  4. У меня конструкция

    if ( points >= 10 )

    set points to 10
    if ( points == 10 )

     

    С этим же проблем не будет?

     

    Чтобы свободную прокачку из ранних ТЕС\Фоллаутов превратить в подобие ла2, где начинаешь файтером или мистиком, а заканчиваешь более специализированным файтером или мистиком?

     

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

  5. Не работает ваш впр

     

    Вот эта фигня

    =ОКРУГЛ((ВПР(S2;Коэф!A1:Z1000;4;ЛОЖЬ))*(ВПР(T2;Коэф!A1:Z1000;4;ЛОЖЬ));0)

     

    скалирует область поиска в каждой новой строке

     

    В отличие от этой формулы:

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S2;Коэф!A:A;0); 4); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T2;Коэф!A:A;0); 4));0)

     

     

    Да, она конченая. Но работает.

  6. Ну, в игре плагин работает, значит блок

    if ( points == 10 )
    if ( "4nm_class" == 4 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Варлорд", "Паладин", "Спеллсворд", "Блейдмастер", "Варвар", "Герой", "Мне надо подумать"
     
    успешно считывается
    Следовательно 10 это действительно 10, а не какая-то кракозябра
  7. Я это наконец сделал, скампы))) Оно работает!

     

    =ОКРУГЛ(ПРОИЗВЕД(ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(S853;Коэф!$A:A;0); 4); ИНДЕКС(Коэф!A:Z; ПОИСКПОЗ(T853;Коэф!$A:A;0); 4));0)

     

     

    Великий Ребеланус грядёт! 

  8. При загрузке сейва проверяет, сколько у ГГ очков Легендарности, а затем если их хватает на апгрейд - предлагает выбор класса. При выборе удаляютяс бонусы текущего класса ГГ и добавляются бонусы выбранного класса.

  9. Вышел ЧИМ-мод 1.2! В новой версии вы увидите:

     

    * Небольшой нерф магов

    * Новая система классов для Нереварина!

    * Новая формула максимума здоровья

    * Рандомизация статов у мобов

    * Лимит на обучения

    * Совместимость с МФР

     

    А теперь подробнее по каждому пункту.

     

     

    Небольшой нерф магов

    Маги всё ещё самые могущественные существа в Нирне (если руки у игрока растут из правильного места), но теперь они достигают пика своей мощи медленнее. Магические перки давали почти нескончаемый запас маны, теперь же он просто большой. Недостающую ману добираем путём выбора класса магической направленности.

     

    Новая система классов для Нереварина!

    Скажи Нет бесполезным дефолтным классам! Выбери сам свою Судьбу!

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

     

    j9qU3lOyLPs.jpg

     

     

    1 – Воин

    2 – Маг

    3 – Бродяга     

    4 – Воитель     

    5 – Боевой маг           

    6 – Заклинатель

    7 – Шпион      

    8 – Вор            

    9 – Скаут                    

    10 – Варлорд              

    11 – Паладин  

    12 – Спеллсворд        

    13 – Шаман                

    14 – Архимаг             

    15 – Волшебник         

    16 – Найтблейд          

    17 – Трикстер             

    18 – Ассасин              

    19 – Плут                    

    20 – Блейдмастер       

    21 – Варвар                

    22 – Герой                  

    23 – Искатель             

    24 – Странник            

     

    Стрелками показано с какого класса на какой можно перейти. Выбирайте свой путь мудро!

    Первые 3 – начальные классы-архетипы. Это первая ступень развития Нереварина, получаемая им на 3 уровне Легендарности.

    С 4 по 9 идут классы второго тира, они открываются при достижении 6 очков легендарности. Здесь возможно как углубление в выбранном архетипе, так и принятие комбинированного класса.

    С 10 по 24 идут высшие классы третьего тира. Они открываются при достижении 10 очков Легендарности и предоставляют очень широкие возможности выбора своего уникального пути.

    22, 23 и 24 – небольшая группа универсальных авантюристских классов третьего тира. Для тех, кто любит всё в одном. Разница между ними в небольшом перекосе в сторону воина, мага или бродяги.

     

    Очки Легендарности даются за подвиги и легендарные свершения. По одному очку за каждые 10 уровней, +3 за победу над Дагот Уром, +1 за победу над Альмалексией, +1 за победу над Гирцином. Ещё по одному очку за становление главой каждой гильдии, организации или Великого Дома (исключения – Имперский Культ и ВИК). Максимум очков Легендарности = 10.

     

    Пассивки архетипа Воина:

    + к максимуму здоровья

    сопротивления к стихиям и яду

    восстановление здоровья

    восстановление стамины

     

    Пассивки архетипа Мага:

    – к максимуму здоровья

    множитель маны

    восстановление маны

    сопротивление магии

    поглощение заклинаний

    отражение заклинаний

     

    Пассивки архетипа Бродяги:

    атака

    уклонение

    лёгкость

    прыжки

    сопротивление параличу

     

    Комбинированные классы получают свойства сразу от двух архетипов (а авантюристские классы сразу от трёх), но в куда меньшем объёме.

    Полный список пассивок каждого класса смотрите в экселевской таблице. Внимательно изучите её, чтобы выбрать лучший класс под свой геймплей.

     

     

    Новая формула максимума здоровья

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

    Формула: Выносливость/2 + Сила/4 + Воля/4 + бонусы перков и класса.

    Максимум собственного здоровья на полной прокачке без баффов и магии составляет 200 у Варлорда и Варвара и 100 у Архимага и Волшебника. У остальных классов здоровье варьируется между этими значениями.

    Исчезло из игры понятие начального здоровья. Это значит, теперь вам совершенно не нужно в обязательном порядке выбирать силу и выносливость на старте игры – теперь это не даст никаких преимуществ на поздней стадии игры, когда вы прокачаете все статы и здоровье всё равно догонит свой максимум. Играйте как хотите, но опять же, будьте осторожны при выборе Архимага или Волшебника – хоть это и сильнейшие классы в игре, при катастрофическом недостатке общей физической подготовки ваш Нереварин сможет скопытиться даже от укуса бешеного скриба!

     

    Begin x_4nm_maxhealth
     
    long pcRef
    float newhp
    float endurance
    float strength
    float willpower
     
    if ( Player->GetHealthGetRatio != 1 )
    StopScript "x_4nm_maxhealth"
    return
    endif
     
    if ( Player->GetEffect, sEffectFortifyHealth == 1 )
    StopScript "x_4nm_maxhealth"
    return
    endif
     
    setx pcRef to xGetRef "player"
    setx endurance to pcRef->xGetBaseEnd
    setx strength to pcRef->xGetBaseStr
    setx willpower to pcRef->xGetBaseWil
    set newhp to ( ( endurance * 0.5 ) + ( strength * 0.25 ) + ( willpower * 0.25 ) + "4nm_hpperkbonus" + "4nm_hpclassbonus" )
    Player->SetHealth, newhp
     
    StopScript "x_4nm_maxhealth"
     
    End

     

     

    Рандомизация статов у мобов

    На рядовых мобов повешен скрипт, который рандомизирует им боевые параметры и характеристики. Никакого левелинга – только рандом от 80% до 120% от нормы.

    Размер существ также скачет от 85% до 115% от нормы и эта величина прямопропорциональна его изменённому здоровью. Видишь моба-переростка – сразу понимаешь, что завалить его будет несколько труднее. В то же время мобы-карланы будут отваливаться на раз.

     

    begin 4nm_randomstats
     
    short done
    float stat
    float coef
     
    if ( done == 1 )
    return
    endif
     
    set stat to GetStrength
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetStrength stat
     
    set stat to GetEndurance
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetEndurance stat
     
    set stat to GetIntelligence
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetIntelligence stat
     
    set stat to GetWillpower
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetWillpower stat
     
    set stat to GetAgility
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetAgility stat
     
    set stat to GetSpeed
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetSpeed stat
     
    set stat to GetLuck
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetLuck stat
     
    set stat to GetMagicka
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetMagicka stat
     
    set stat to GetFatigue
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetFatigue stat
     
    set stat to GetHealth
    set coef to Random 41
    set coef to ( coef + 80 )
    set coef to ( coef / 100 )
    set stat to ( stat * coef )
    SetHealth stat
     
    set stat to GetScale
    set coef to ( coef - 1 )
    set coef to ( coef * 0.75 )
    set coef to ( coef + 1 ) 
    set stat to ( stat * coef )
    setScale stat
     
    set done to 1
     
    End

     

     

    Лимит на обучения

    Ограничитель обучений на 5 скиллпоинтов за уровень теперь не опционален, а вшит в мод.

    Вы не согласны и хотите начитерить себе скиллпоинты? Тогда пропишите в консоли:

    set 4nm_lessons to 0

     

    Совместимость с МФР

    Добавлена минимальная совместимость с геймплейным модулем Фуллрест-репака.

    Подключите эти 2 патча, если играете с MFR_EVA.esm

    4NM_EVA_Patch.ESP

    4NM_MFR_Patch.ESP

    Патч совместимости для ЕВЫ убирает излишнюю накрутку статов мобам и заменяет скрипт-рандомизатор на версию из ЧИМ-мода.

    Это всё ещё патч минимальной совместимости: собственные статы мобов, новое оружие и броня, а также крафтинг из ЕВЫ не затронуты. Тут всё ещё непаханое поле для балансировки. Особенно удручает срафтинг – абсолютно имбанутые пушки с 60-70 дамага, уймой вместимости и безо всякого штрафа к скорости – это здесь обычное явление. Так что не рекомендую им пользоваться, лучше воспринимать весь крафтовый хлам и станки в качестве антуража. ТЕС – совершенно не те игры, где нужен крафт.

     

     
    Скачать мод:

    ЧИМ-ридми.rar

  10. Ооо, как же я намудохался с этим скамповым скриптом! КС явно не дружит со ступенчатыми elseif. Ну да ладно, дело сделано, второй в истории (после глючного СХ) плагин на классы в Муравинде готов!

     

    Сам мега-скрипт:

     

    Begin 4nm_class_start
     
    short level
    short button
    short control
    float points
     
    if ( control == 0 )
     
    if ( points != 10 )
    set level to ( player->getlevel )
    set points to ( level * 0.1 )
     
    if ( GetJournalIndex C3_DestroyDagoth >= 50 )
    set points to ( points + 3 )
    endif
     
    if ( GetJournalIndex TR_SothaSil >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex BM_WildHunt >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex HH_WinCamonna >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex HR_Archmaster >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex HT_Archmagister >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex TG_KillHardHeart >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex FG_KillHardHeart >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex MG_Guildmaster >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex IL_Grandmaster >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex TT_Assarnibibi >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( GetJournalIndex MT_Grandmaster >= 100 )
    set points to ( points + 1 )
    endif
     
    if ( points >= 10 )
    set points to 10
    endif
    endif
     
    if ( points >= 3 )
    if ( "4nm_class" == 0 )
    messagebox "Вы больше не зеленый новичок и стали довольно сильны. Какой путь вы хотите избрать?", "Воин", "Маг", "Бродяга", "Мне надо подумать"
    set control to 1
    endif
    endif
     
    if ( points >= 6 )
    if ( "4nm_class" == 1 )
    messagebox "Вы достигли значительных высот. Каким путем вы продолжите идти к вершине?", "Воитель", "Боевой маг", "Скаут", "Мне надо подумать"
    set control to 2
    elseif ( "4nm_class" == 2 )
    messagebox "Вы достигли значительных высот. Каким путем вы продолжите идти к вершине?", "Заклинатель", "Боевой маг", "Шпион", "Мне надо подумать"
    set control to 3
    elseif ( "4nm_class" == 3 )
    messagebox "Вы достигли значительных высот. Каким путем вы продолжите идти к вершине?", "Вор", "Шпион", "Скаут", "Мне надо подумать"
    set control to 4
    endif
    endif
     
    if ( points == 10 )
    if ( "4nm_class" == 4 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Варлорд", "Паладин", "Спеллсворд", "Блейдмастер", "Варвар", "Герой", "Мне надо подумать"
    set control to 5
    elseif ( "4nm_class" == 5 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Паладин", "Спеллсворд", "Шаман", "Герой", "Искатель", "Мне надо подумать"
    set control to 6
    elseif ( "4nm_class" == 6 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Архимаг", "Спеллсворд", "Шаман", "Волшебник", "Найтблейд", "Искатель", "Мне надо подумать"
    set control to 7
    elseif ( "4nm_class" == 7 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Волшебник", "Найтблейд", "Трикстер", "Искатель", "Странник", "Мне надо подумать"
    set control to 8
    elseif ( "4nm_class" == 8 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Ассасин", "Найтблейд", "Трикстер", "Плут", "Блейдмастер", "Странник", "Мне надо подумать"
    set control to 9
    elseif ( "4nm_class" == 9 )
    messagebox "В своем могуществе вы сравнились с богами, а ваши подвиги будут воспеты в легендах. Какое место вы в них займете?", "Плут", "Блейдмастер", "Варвар", "Герой", "Странник", "Мне надо подумать"
    set control to 10
    endif
    endif
     
    endif
     
    if ( control == 1 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 1
    set "4nm_hpclassbonus" to 10
    player->addspell "4nm_class_01"
    elseif ( button == 1 )
    set "4nm_class" to 2
    set "4nm_hpclassbonus" to -10
    player->addspell "4nm_class_02"
    elseif ( button == 2 )
    set "4nm_class" to 3
    set "4nm_hpclassbonus" to 0
    player->addspell "4nm_class_03"
    endif
    endif
     
    if ( control == 2 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 4
    set "4nm_hpclassbonus" to 30
    player->removespell "4nm_class_01"
    player->addspell "4nm_class_04"
    elseif ( button == 1 )
    set "4nm_class" to 5
    set "4nm_hpclassbonus" to 10
    player->removespell "4nm_class_01"
    player->addspell "4nm_class_05"
    elseif ( button == 2 )
    set "4nm_class" to 9
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_01"
    player->addspell "4nm_class_09"
    endif
    endif
     
    if ( control == 3 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 6
    set "4nm_hpclassbonus" to -30
    player->removespell "4nm_class_02"
    player->addspell "4nm_class_06"
    elseif ( button == 1 )
    set "4nm_class" to 5
    set "4nm_hpclassbonus" to 10
    player->removespell "4nm_class_02"
    player->addspell "4nm_class_05"
    elseif ( button == 2 )
    set "4nm_class" to 7
    set "4nm_hpclassbonus" to -10
    player->removespell "4nm_class_02"
    player->addspell "4nm_class_07"
    endif
    endif
     
    if ( control == 4 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 8
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_03"
    player->addspell "4nm_class_08"
    elseif ( button == 1 )
    set "4nm_class" to 7
    set "4nm_hpclassbonus" to -10
    player->removespell "4nm_class_03"
    player->addspell "4nm_class_07"
    elseif ( button == 2 )
    set "4nm_class" to 9
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_03"
    player->addspell "4nm_class_09"
    endif
    endif
     
    if ( control == 5 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 10
    set "4nm_hpclassbonus" to 50
    player->removespell "4nm_class_04"
    player->addspell "4nm_class_11"
    elseif ( button == 1 )
    set "4nm_class" to 11
    set "4nm_hpclassbonus" to 30
    player->removespell "4nm_class_04"
    player->addspell "4nm_class_11"
    elseif ( button == 2 )
    set "4nm_class" to 12
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_04"
    player->addspell "4nm_class_12"
    elseif ( button == 3 )
    set "4nm_class" to 20
    set "4nm_hpclassbonus" to 30
    player->removespell "4nm_class_04"
    player->addspell "4nm_class_20"
    elseif ( button == 4 )
    set "4nm_class" to 21
    set "4nm_hpclassbonus" to 50
    player->removespell "4nm_class_04"
    player->addspell "4nm_class_21"
    elseif ( button == 5 )
    set "4nm_class" to 22
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_04"
    player->addspell "4nm_class_22"
    endif
    endif
     
    if ( control == 6 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 11
    set "4nm_hpclassbonus" to 30
    player->removespell "4nm_class_05"
    player->addspell "4nm_class_11"
    elseif ( button == 1 )
    set "4nm_class" to 12
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_05"
    player->addspell "4nm_class_12"
    elseif ( button == 2 )
    set "4nm_class" to 13
    set "4nm_hpclassbonus" to -30
    player->removespell "4nm_class_05"
    player->addspell "4nm_class_13"
    elseif ( button == 3 )
    set "4nm_class" to 22
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_05"
    player->addspell "4nm_class_22"
    elseif ( button == 4 )
    set "4nm_class" to 23
    set "4nm_hpclassbonus" to -20
    player->removespell "4nm_class_05"
    player->addspell "4nm_class_23"
    endif
    endif
     
    if ( control == 7 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 14
    set "4nm_hpclassbonus" to -50
    player->removespell "4nm_class_06"
    player->addspell "4nm_class_14"
    elseif ( button == 1 )
    set "4nm_class" to 12
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_06"
    player->addspell "4nm_class_12"
    elseif ( button == 2 )
    set "4nm_class" to 13
    set "4nm_hpclassbonus" to -30
    player->removespell "4nm_class_06"
    player->addspell "4nm_class_13"
    elseif ( button == 3 )
    set "4nm_class" to 15
    set "4nm_hpclassbonus" to -50
    player->removespell "4nm_class_06"
    player->addspell "4nm_class_15"
    elseif ( button == 4 )
    set "4nm_class" to 16
    set "4nm_hpclassbonus" to -30
    player->removespell "4nm_class_06"
    player->addspell "4nm_class_16"
    elseif ( button == 5 )
    set "4nm_class" to 23
    set "4nm_hpclassbonus" to -20
    player->removespell "4nm_class_06"
    player->addspell "4nm_class_23"
    endif
    endif
     
    if ( control == 8 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 15
    set "4nm_hpclassbonus" to -50
    player->removespell "4nm_class_07"
    player->addspell "4nm_class_15"
    elseif ( button == 1 )
    set "4nm_class" to 16
    set "4nm_hpclassbonus" to -30
    player->removespell "4nm_class_07"
    player->addspell "4nm_class_16"
    elseif ( button == 2 )
    set "4nm_class" to 17
    set "4nm_hpclassbonus" to -20
    player->removespell "4nm_class_07"
    player->addspell "4nm_class_17"
    elseif ( button == 3 )
    set "4nm_class" to 23
    set "4nm_hpclassbonus" to -20
    player->removespell "4nm_class_07"
    player->addspell "4nm_class_23"
    elseif ( button == 4 )
    set "4nm_class" to 24
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_07"
    player->addspell "4nm_class_24"
    endif
    endif
     
    if ( control == 9 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 18
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_08"
    player->addspell "4nm_class_18"
    elseif ( button == 1 )
    set "4nm_class" to 16
    set "4nm_hpclassbonus" to -30
    player->removespell "4nm_class_08"
    player->addspell "4nm_class_16"
    elseif ( button == 2 )
    set "4nm_class" to 17
    set "4nm_hpclassbonus" to -20
    player->removespell "4nm_class_08"
    player->addspell "4nm_class_17"
    elseif ( button == 3 )
    set "4nm_class" to 19
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_08"
    player->addspell "4nm_class_19"
    elseif ( button == 4 )
    set "4nm_class" to 20
    set "4nm_hpclassbonus" to 30
    player->removespell "4nm_class_08"
    player->addspell "4nm_class_20"
    elseif ( button == 5 )
    set "4nm_class" to 24
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_08"
    player->addspell "4nm_class_24"
    endif
    endif
     
    if ( control == 10 )
    set button to GetButtonPressed
    if ( button == -1 )
    return
    elseif ( button == 0 )
    set "4nm_class" to 19
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_09"
    player->addspell "4nm_class_19"
    elseif ( button == 1 )
    set "4nm_class" to 20
    set "4nm_hpclassbonus" to 30
    player->removespell "4nm_class_09"
    player->addspell "4nm_class_20"
    elseif ( button == 2 )
    set "4nm_class" to 21
    set "4nm_hpclassbonus" to 50
    player->removespell "4nm_class_09"
    player->addspell "4nm_class_21"
    elseif ( button == 3 )
    set "4nm_class" to 22
    set "4nm_hpclassbonus" to 20
    player->removespell "4nm_class_09"
    player->addspell "4nm_class_22"
    elseif ( button == 4 )
    set "4nm_class" to 24
    set "4nm_hpclassbonus" to 0
    player->removespell "4nm_class_09"
    player->addspell "4nm_class_24"
    endif
    endif
     
    set control to 0
     
    StopScript "4nm_class_start"
     
    End

     
     
     
  11. Зачем существуют скрипты болезней, которые висят на заражённых существах типа этого?

     

     

    Begin diseaseAscended

     

    DontSaveObject

     

    if ( CellChanged == 0 )

    return

    endif

     

    if ( GetBlightDisease == 0 )

    AddSpell "ash woe blight"

    AddSpell "black-heart blight"

    AddSpell "chanthrax blight"

    AddSpell "ash-chancre"

    endif

     

    End

     

     

    Они добавляют прописанные болезни если существо не поражено болезнью. Но ведь все заражённые существа и так изначально имеют в своём списке заклианий свои болезни. Зачем тогда скрипт, висящий мёртвым грузом?
  12. Вшитые в игру классы никуда не годны. Но даже если снабдить оригинальные классы дополнительным скриптовым набором абилок и даже если поменять для них в большинстве случаев идиотский набор главных и важных навыков, это существенно ударит по свободе отыгрыша. Нет уж! Конечно же истинный билдостроитель всегда создаёт свой собственный класс и отыгрывает идеально созданную под себя роль. Но тогда класс героя будет лишён всяческой геймплейной поддержки, да к тому же и никакие скрипты его не подхватят чтобы улучшить геймплей модом. Что же с этим делать? Создавать собственную скриптовую систему классов!

    В идеале я хотел бы видеть масштабное древо пассивных умений как в ПоЕ или карту созвездий из Грим Дауна. Но этим мечтам не суждено сбыться, ибо убогий движок Моррки с его напрочь костыльным скриптовым языком в жизни не переварит подобных издевательств. Придётся искать систему попроще. А как насчёт того, что мы уже видели в Масс Эффект Андромеде и Амалуре? А вот такую систему Моррка очень даже потянет! К созданию именно такого мода я и приступил.

     

    j9qU3lOyLPs.jpg

     

     

    1 – Воин

    2 – Маг

    3 – Бродяга     

    4 – Воитель     

    5 – Боевой маг           

    6 – Заклинатель

    7 – Шпион      

    8 – Вор            

    9 – Скаут                    

    10 – Варлорд              

    11 – Паладин  

    12 – Спеллсворд        

    13 – Шаман                

    14 – Архимаг             

    15 – Волшебник         

    16 – Найтблейд          

    17 – Трикстер             

    18 – Ассасин              

    19 – Плут                    

    20 – Блейдмастер       

    21 – Варвар                

    22 – Герой                  

    23 – Искатель             

    24 – Странник            

     

    Стрелками показано с какого класса на какой можно перейти. Выбирайте свой путь мудро!

    Первые 3 – начальные классы-архетипы. Это первая ступень развития Нереварина, получаемая им на 3 уровне Легендарности.

    С 4 по 9 идут классы второго тира, они открываются при достижении 6 очков легендарности. Здесь возможно как углубление в выбранном архетипе, так и принятие комбинированного класса.

    С 10 по 24 идут высшие классы третьего тира. Они открываются при достижении 10 очков Легендарности и предоставляют очень широкие возможности выбора своего уникального пути.

    22, 23 и 24 – небольшая группа универсальных авантюристских классов третьего тира. Для тех, кто любит всё в одном. Разница между ними в небольшом перекосе в сторону воина, мага или бродяги.

     

    Очки Легендарности даются за подвиги и легендарные свершения. По одному очку за каждые 10 уровней, +3 за победу над Дагот Уром, +1 за победу над Альмалексией, +1 за победу над Гирцином. Ещё по одному очку за становление главой каждой гильдии, организации или Великого Дома (исключения – Имперский Культ и ВИК). Максимум очков Легендарности = 10.

     

    Пассивки архетипа Воина:

    + к максимуму здоровья

    сопротивления к стихиям и яду

    восстановление здоровья

    восстановление стамины

     

    Пассивки архетипа Мага:

    – к максимуму здоровья

    множитель маны

    восстановление маны

    сопротивление магии

    поглощение заклинаний

    отражение заклинаний

     

    Пассивки архетипа Бродяги:

    атака

    уклонение

    лёгкость

    прыжки

    сопротивление параличу

     

     

    Однотипные классы всё более высоких тиров (например, воин-воитель-варлорд) обладают аналогичным набором пассивных бонусов, но с большей амплитудой. Комбинированные классы соответсвенно обладают пассивками, присущими сразу двум или всем трём архетипам, но в куда меньшем объёме нежели чистый класс.

     

    Полный список пассивок каждого класса смотрите в экселевской таблице. Внимательно изучите её, чтобы выбрать лучший класс под свой геймплей.

    Классы готовы и вшиты в глобальный геймплейный мод.

  13. Там вообще костыль в виде запрета обучаться в ночное время. 

     

    ____________________

    Короче, я вычленил этот баг, он действительно образуется при переходе через 12 часов. Я заменил строчку

    set hour2 to ( 24 + gamehour - hour1 )

    на

    set hour2 to ( 26 + gamehour - hour1 )

     

    и баг исчез.

     

    Я понятия не имею, почему так просходит, наверное это косяк исчисления времени в КС.

    Вот новый плагин

     

     

    Кроме того, теперь плагин поддерживает удобное читерение. Хотите вернуть возможность обучаться, когда истратили все скиллпоинты - измените через консоль глобальную переменную уже истраченных уроков:

    set 4nm_lessons to 0

    4NM_TRAINING.ESP

  14. А вы можете засечь и указать здесь время в игре на момент незачёта тренировки?

     

     

    Возможно что-то не так с этой секцией:

    set hour2 to ( gamehour - hour1 )
    if ( hour2 < 0 )
    set hour2 to ( 24 + gamehour - hour1 )
    endif
    if hour2 >= 2
    set "4nm_lessons" to ( "4nm_lessons" + 1 )
  15. Выгрузить всё в эксель и отфильтровать новое - это лишь первый круг ада, который предстоит пройти. Потом предстоит мудохаться как проклятый, вычисляя и проставляя все значения для каждой шмотки. А если ещё и делать в стиле Чифа, редактируя эксельные формулы и назначая расчёты по ним для каждой клетки - то лучше сразу насадиться на Муатру  :trololo:

  16. Совместимость с МФР будет на грани невозможного, учитывая, сколько хлама туда добавлено. (я тоже хотел запилить совместимость, но как зашёл в КС - руки сразу опустились)

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

  18. Я как раз и взял эту функцию из МФСД, нафига было расписывать, если она не работает? Кстати, та же функция применена и в вышеприведённом скрипте под спойлером.

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