-
Постов
943 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Календарь
Весь контент Dagot_Prolaps
-
Мод сейчас в стадии балансировки. Уже понял, что недоделал защитный стиль - в реальности наносимый урон понижается, если будешь сражаться, откайчивая врага. Исправлю это в обновлении. Ещё надо бы добавить штраф к шансу избежать крита при агрессивном стиле. Ещё хотелось бы придумать свои особенности для арбалетов и метательного оружия. Шанс стана посохам - звучит логично. После всех этих балансировок я выпущу новую версию чим-мода. Надо полностью ребалансить классы и созвездия, а то в текущем состоянии Воин и Любовник в бродяжных классах превращаются в терминаторов.
-
https://www.nexusmods.com/morrowind/mods/47056 Полная ребалансировка системы боя. По-настоящему динамичные и реалистичные битвы со своими особенностями для каждого оружия и разными стилями игры. Требует последнюю версию MWSE, MGE и MCP. https://www.nexusmods.com/morrowind/mods/41102 http://nullcascade.com/mwse/mwse-dev.zip Нововведения: Все изменения влияют и на героя, и на npc, и на всех существ. 1) 3 боевых стиля. 1 – Агрессивный. Нужно двигаться вперёд (при этом можно двигаться и в сторону). + наносимый критический урон 2 – Проворный. Нужно двигаться в сторону, но при этом нельзя двигаться вперёд (назад можно). + шанс увернуться от атаки 3 – Оборонительный. Нужно двигаться назад, но при этом нельзя двигаться в сторону. – получаемый урон Если же ты стоишь столбом, то не получаешь никаких бонусов. В движении жизнь, лень в бою не поощряется. 2) Формула шанса на попадание изменена. 100% шанса попасть по врагу почти в любом случае. + шанс попасть: ловкость + шанс увернуться: ловкость при проворном стиле боя эффект хамелеона эффект святилища слепота атакующего 3) Глобальная формула урона изменена. Базовый урон = урон оружия * прочность оружия * процент замаха * сила под влиянием GMST Затем базовый урон уменьшается броней противника. Вторичный урон = урон * урон / (урон + броня) Далее вторичный урон претерпевает множество изменений: + наносимый урон: уровень навыка оружия бонус атаки особенности используемого оружия при выполнении определённых условий – наносимый урон: низкая стамина оборонительный стиль боя противника: ловкость, выносливость и эффект святилища 4) Теперь можно наносить критические удары в обычном бою. + шанс крита: уровень навыка оружия ловкость удача бонус атаки – шанс крита: высокая стамина противника + наносимый критический урон: небольшой рандом значительный рандом при агрессивном стиле боя бонус атаки – получаемый критический урон: выносливость удача броня 5) У каждого оружия есть свои сильные стороны. Чем выше навык владения оружием, тем больше они проявляются. Длинные клинки. Комбо-удары! Каждый третий удар наносит намного больший урон. Но время между атаками для успешного комбо-приёма сильно ограничено (1 секунда). Почувствуйте ритм боя! Это сбалансированное оружие, которое годится для любых ситуаций. Топоры. Ярость берсерка! С каждым новым ударом наносимый урон увеличивается, но бездействие ведёт к спаду ярости. Годится для затяжных битв. Булавы и молоты. Пробой брони! Игнорирует часть брони противника при попадании по защищённой части тела. Годится против сильно бронированных тяжеловесов. Также удары булавами и молотами имеют небольшой шанс стана противника на 0.5 секунды. Короткие клинки. Добивания! Чем меньше у противника здоровья, тем больше наносимый урон. Выбор ассасина. Копья и алебарды. Загнанная жертва! Чем меньше у противника стамины, тем больше наносимый урон. Выбор охотника, предпочитающего измотать свою добычу перед тем как нанести точный финальный удар. Посохи. Мощь разума! Чем больше у вас маны, тем больше наносимый урон. Выбор настоящего мага. Или боевого чрезмерно одухотворённого монаха :) Луки, арбалеты и метательное оружие. Снайперский выстрел! Чем больше расстояние до вашей цели, тем больше наносимый урон. Кулачный бой. Здесь и так всё в порядке. MCP добавляет влияние навыка на наносимый урон стамине, а затем и здоровью. Щиты. Контрудар! У вас будет меньше секунды после успешного блокирования чтобы контратаковать и нанести намного больший урон. Для этого вам придётся очень точно рассчитывать момент атаки. Звериная ярость! Дикие безоружные существа тоже получили бонусы. Во-первых, возвращено влияние силы на наносимый урон. Во-вторых, чем ближе монстр к своей смерти, тем отчаяннее он будет сражаться за свою жизнь и наносить ещё больший урон. 6) Мод состоит из одного файла lua, написанного очень аккуратным кодом. Вы можете использовать его как пример для обучения модостроению для MWSE. Открыв файл в блокноте, вы легко сможете отредактировать формулы Чтобы отключить сообщения – пропишите в самом начале: local messages = false Вот список основных формул, влияющих на геймплей: local koefskill = weaponSkill / 500 local koefbonus = e.attacker.attackBonus / 200 local koefstam = (1 - (e.attacker.fatigue.current / e.attacker.fatigue.base)) / 2 if ((weaponSkill + e.attacker.agility.current + e.attacker.luck.current) / 10) + (e.attacker.attackBonus / 5) - ((e.mobile.fatigue.current / e.mobile.fatigue.base) * 20) >= math.random(100) then crit = 1 else crit = 0 end if e.attacker.isMovingForward then critbonus = 1 else critbonus = 0 end local koefcrit = ((math.random(30) / 100) + ((math.random(50) / 100) * critbonus) + (e.attacker.attackBonus / 200) - ((e.mobile.endurance.current + e.mobile.luck.current + targetarmor) / 1000)) * crit if koefcrit < 0 then koefcrit = 0 end if e.mobile.isMovingBack and e.mobile.isMovingLeft == false and e.mobile.isMovingRight == false then defbonus = 1 else defbonus = 0 end local koefdef = defbonus * (e.mobile.agility.current + e.mobile.endurance.current + e.mobile.sanctuary) / 1000 if koefdef > 0.3 then koefdef = 0.3 end if counterstrike == 1 and e.attackerReference == tes3.player then koefcounter = (e.attacker.block.current / 200) else koefcounter = 0 end e.damage = damageStart * (1 - koefstam + koefskill + koefbonus + koefperk + koefcrit - koefdef + koefcounter) unarmed creature bonus koefperk = (e.attacker.strength.current / 200) + ((1 - (e.attacker.health.current / e.attacker.health.base)) * (weaponSkill / 200)) ranged hit koefperk = e.attackerReference.position:distance(e.reference.position) * weaponSkill / 2000000 axe koefperk = ragecharge[e.attackerReference.id].charge * weaponSkill / 2000 spear koefperk = (1 - (e.mobile.fatigue.current / e.mobile.fatigue.base)) * weaponSkill / 200 staff koefperk = (e.attacker.magicka.current / e.attacker.magicka.base) * weaponSkill * 0.003 blunt koefperk = targetarmor * weaponSkill / 30000 long blade koefperk = weaponSkill / 100 short blade koefperk = (1 - (e.mobile.health.current / e.mobile.health.base)) * weaponSkill / 200 e.hitChance = 100 + (e.attackerMobile.agility.current / 2) - e.attackerMobile.blind - (e.targetMobile.sanctuary / 2) - (e.targetMobile.chameleon / 2) - hitreduction if ((e.targetMobile.isMovingLeft or e.targetMobile.isMovingRight) and (e.targetMobile.isMovingForward == false)) then hitreduction = e.targetMobile.agility.current / 2
-
Да я сам только начал изучать луа по гайдам в этой теме: http://www.fullrest.ru/forum/topic/41633-morrovind-i-lua-skripty/ Для зелий, думаю придётся юзать эту конструкцию: local function onActorActivated(e)-- здесь раздаём зелья, заставляем их пить когда надо и ставим таймерыend event.register("mobileActivated", onActorActivated)
-
Раздавать зелья как это сделано с ядами одним луа-скриптом. Таймеры на выпивание тоже настроить через луа. Раз язык скриптов в КС не только убогий но и такой нестабильно работающий.
-
Переходите на МВСЕ.
-
Ох какую штукенцию я сейчас запилил... закачаешься! В буквальном смысле! Продвинутый 100% шанс попасть с активными уворотами! Как в дисхонореде. Ну почти. Увернуться можно, но для этого надо стрейфить влево или вправо (но при этом не идти вперёд). Вместо анимации уклонения будет обычная анимация стрейфа туда-сюда. Я сделал шансы зависимыми от ловкости, но это черновой вариант - можно сделать как угодно! local function alwaysHit(e) local hitreductionlocal hitbonus = e.attackerMobile.agility.current * 0.5if ((e.targetMobile.isMovingLeft or e.targetMobile.isMovingRight) and (e.targetMobile.isMovingForward == false)) thenhitreduction = e.targetMobile.agility.current * 0.5elsehitreduction = 0ende.hitChance = (100 - e.attackerMobile.blind + hitbonus - hitreduction)end
-
Нет, не поменяется. Есть способ: вообще игнорировать событие exerciseSkill для доспешных навыков, а вместо этого принудительно повышать опыт при событии получения урона. Но для этого придётся исписать совершенно невменяемую простыню кода, да и не факт что при ттаком повышении скилов будут учтены множители главных, важных и специлизационных навыков. Так что пусть лучше изящные 8 строк рабочего кода, но с небольшим временным сдвигом обучения. Всё же добавлю пока чистую версию с ростом всех навыков: http://www.fullrest.ru/files/4nm_skillstraining/files Если поставить совместно с плагином на боёвку, то я не уверен, какая функция возьмёт приоритет, и по какому урону будет рассчитываться опыт - по стандартному или изменённому. Завтра возможно будет выпущена новая версия боевого плагина, вот тогда я ей и займусь. Перезалил, исправил баг с отрицательным опытом и изменил коэфы: 50 урона для оружия и 20 урона для брони. График коэфов опыта для оружия и доспехов: http://yotx.ru/#!1/3_5/A1BfKRsBZZI%40wf7O8c7BsxhP%401/fM9wP7B/sG%40n5Ra298429s8293e2IPuHOzuH%40yTaNiNnVPG4%40kW43Hr8mJ3f2t/42xvc%40tgd3tjD7pzsLt/sE%40iYTdAB4zHHdAW4xF0sLu/tb9xtre5c7C7vbEH3TnY3T/YJ9GwGztnO4zHna0DxuPO7v7W/sbZ3ubFwe72xh5052B3/2CfRMNu7JydMR63ti4Zj1uI3f2t/Y2zvc2zg93tjT3ozsHu/sE%40iYbd2IIhGI8HjMeD3f2tfQE=
-
Значит так. Магия. У меня всё работает как надо Маловажный навык 20 - каст на 30 маны = +12 столба Главный навык 20 - каст на 30 маны = + 25 столба Главный навык 30 - каст на 30 маны = + 17 столба Боевые навыки. Код написан и внедрён в NGC-мод, так как требует обработку события урона. Автор оставила у себя обычный множитель опыта, то же самое можно было сделать через гмст. Поэтому будет вилка - я выпущу свою версию этого мода, в котором помимо реалистичного опыта будут более продвинутые формулы расчёта урона. Касательно опыта. Оружейные навыки. Тут всё работает идеально. Нанёс удар - получил опыт: Опыт за удар = (((Уровень врага - (Уровень ГГ / 5)) * 5) / (Уровень врага + 20)) * (Урон * 0.05) А вот с доспешными навыками всё работает немного через жёппу. Сначала вычисляет событие попадания по ГГ, затем даёт опыт, и только потом считает урон. В результате сам опыт будет доходить до Нереварина с небольшой задержкой, равной одному удару. Получаем плюху - узнаём сколько опыта получим при следующей плюхе - получаем следующую плюху - получаем рассчитанный ранее опыт - узнаём сколько опыта получим при следующей плюхе - и так далее... Думаю, эти издержки можно перетерпеть, они по сути ни на что не влияют. Формулу предлагаю такую же, но Х опыта тут будет получаться за 10 урона, а не за 20 как в оружейных навыках. Опыт за удар = (((Уровень врага - (Уровень ГГ / 5)) * 5) / (Уровень врага + 20)) * (Урон * 0.1) И да, открыв луа-скрипт в блокноте, вы сможете легко менять формулы насколько фантазии хватит (используя те же переменные). Не забывайте: сначала степени/корни, затем умножение/деление, и наконец плюс/минус. Если всё же забыли - используйте скобки - они не подведут)
-
Добавить шанс уклонения от атаки в размере 30%*Ловкость, если защищающийся актёр по время события атаки движется влево или вправо. Обычно режущие удары слабее рубящих - это будет прекрасная компенсация и повод применять именно их. Колющие удары обычно ещё слабее, но используются они при движении назад, что автоматиечески даёт огромные защитные преимущества, позволяя откайчивать врагов и избегать всех его ударов. Поэтому при движении актёра назад дополнительных модификаций не требуется. А вот при движении вперёд надо что-то изменить. Тем более, учитывая то, что обычно используется движение сразу и вперёд и в сторону для нанесения рубящего удара в движении.
-
Можно конечно считать веса и рассчитать тип по формулам, а что насчёт события damage? Как узнать, по какой части доспеха попал удар?
-
С броней разных типов будет сложно (или невозможно) - что-то не вижу где бы игра могла считать этот параметр. А вот с ударами я нашёл очень интересную фишку. У объекта mobilePlayer есть куча разных считываемых параметров в том числе isJumping, isMovingBack, isMovingForward, isMovingRight... Используя их, можно изменять формулу урона, навешивать на игрока различные баффы в виде спеллов (пока условие выполняется или по таймеру после выполнения условия) и т.д. Но сперва надо разобраться с основной стаминной зависимостью. Автор обещала ввести её в следующем релизе вместе с игровым настроечным меню. Вот тогда мод станет точно мастхевом!
-
Не робит, увы( Бью на нулевой стамине. Сообщения о порезке урона на гигантские суммы (фактически на всю величину урона) появляются, но реальный урон наносится в полном непорезанном объёме.
-
Мод обновлён, активная блокировка (дожили!) и переделка рукопашного боя. ____ Боги.... башка закипает! Ну он и понаворотил... Пытаюсь сделать зависимость урона от стамины. Если удастся, то мод можно считать мастхевным.
-
Я понемногу продираюсь через все те дебри кода, который он понаворотил. То что должно было поместиться в одном файле, он разнёс на целых 8 разных файлов. Синтаксис жуткий, читать надо с конца к началу, повсюду перекрёстные ссылки с середины одного файла на функцию где-то в жопе совсем другого файла, да ещё и не ясно где то что делает сама игра, а где то что добавляет скрипт. В общем без литра древнего бренди Дагот не разобраться. Однако потихоньку картина начинает вырисовываться. Я уже смог отменить 100% шанс попасть, не ломая логику самого скрипта. В дальнейшем перспективы таковы, что раскурочив как следует этот мод, я смогу не только модифицировать урон для каждого типа оружия с блекджеком и критами, но и добавить по автоматическому прокасту какого-нибудь баффа на атакующего и дебаффа на поражённого (в виде спеллов) при каждой успешной атаке. Основное ядро мода:
-
Да, он как раз сделал пробой брони для дробящего, причём заморочился и сделал его настраиваемым, так что с балансом тут проблем никаких. Я написал автору свои мысли по поводу эффектов для каждого вида оружия. Посмотрим, как отреагирует. Может быть, в следующем десятилетии) Пока что то что есть - это срашный сон погроммиста, когда твои разросшиеся монструозные скрипты либо вообще не запускаются, либо отжирают половину ресурсов проца.
-
Шёл 2019 год. Очередное переиздание Скайрима на микроволновке прекрасно продаётся. А что же Шинд, его предшественник аж 17-летней давности? Так и он тоже живее всех живых! Почему? Благодаря модам, разумеется. Так уж сложилось исторически: ТЕС – это моды, а моды – это ТЕС, и одно без другого немыслимо. Вы помните свои первые впечатления, когда узнали о существовании КС и открыли редактор? Это что же, все данные игры аккуратно рассортированы по таблицам, и я могу их менять? Как сам того пожелаю?! Я что, теперь разработчик игор? Ооо дааа! Нужен убер-меч? Пожалуйста! А может личный домик в Балморе? Заверните мне два! А что это тут за колонка «scripts»? Ну, if – это если, это понятно, тааак падажжите… ОГО! Так вот почему Фаргот крадётся к своему любимому пню! Так это что получается, я теперь не только гейм-дизайнер, но ещё и погроммист?! И ЧИМ был познан… И весь Аурбис разверзся пред волей нового Демиурга! Целые квестовые линейки, компаньоны, перки, крафт… да всё что угодно! Скрипты разрастались, превращаясь в монструозные громадины. Иногда многоэтажки из 30 if-elseif рушились под тяжестью собственного веса, а если не рушились, то подвешивали двемеропекарню секунд на 5. Ох, на какие только ухищрения не приходилось идти молодым ЧИМанутым Демиургам дабы привести свою Волю в исполнение! Узрев их, поездоголовый человек немедленно разогнался бы до околосветовой скорости от осознания своей непомерной нормальности и улетел бы за пределы Нирна, прямо вслед за двемерами. О, эврика! Долго ломал голову и придумал наконец, как отследить одно очень заковыристое событие! Сделаю я это по звукам, издаваемым жопками скрибов, долбящих ими по камням. Отслеживать, правда, придётся нонстопом, а потом проверять ещё полсотни сторонних условий, а скрибов в округе развелось нынче немало! И все с жопами! И все непрерывно стучат! Ах да, и ещё всё тело скрипта выполнялось каждый фрейм, а число самих фреймов у обладателей особо мощных двемеропекарен доходило до 15! Только вдумайтесь, какие вычислительные мощности расходовались вхолостую вместо того чтобы вычислять биткойн! MWSE оказался ложкой скуумы в бочке скаттла. Привнеся кучу новых функций (а вместе с ними и багов), он позволил особо смышлёным Демиургам вывести своё постижение ЧИМа на новый уровень и гульнуть на широкую ногу. Но скуумовая эйфория была недолгой. Чего не скажешь о послевкусии после многочисленных бочек со скаттлом. Да, у всего в этом мире есть предел. И предел скриптового языка КС был давно достигнут. Но хвала Троим! – всё изменилось с приходом MWSE 2.1. Ни говоря ни слова больше, ЧИМанутый Демиург вынул костыль из своей задницы… и создал папку Data Files\MWSE\mods\MyAwesomeMod Затем он создал в ней пустой текстовый файл main.txt и сменил его расширение на аббревиатуру языка Истинных Богов Кодинга – lua Получившаяся скрижаль main.lua по-прежнему прекрасно открывалась блокнотом, Демиург улыбнулся – ему не придётся страдать фигнёй с редакторами и компиляцией. Но пока что перед ним был чистый холст. Уже обладая опытом в постижении Языков Богов, Демиург понял, что быстрее всего это выйдет сделать на готовом примере. Открывая и изучая файлы других творцов, он чувствовал себя культистом карго в китайской комнате. И тут и там встречались интуитивно понятные элементы, но что с ними делать и как сложить в единую картину? Он мог изменить цифры в готовых функциях, и поначалу этого было достаточно. Однако ему хотелось большего осознания того, что он делает и зачем. Понемногу истина начала вырисовываться. Полотно окрасилось первыми строчками, суть которых являла собой общий шаблон, с помощью которого можно было достичь всего что угодно: local function MyAwesomeFunction(e) end local function initialized(e) event.register(" ", MyAwesomeFunction) end event.register("initialized", initialized)Суть была такова: Игра не будет прокручивать всё тело скрипта каждый фрейм. Двемеропекарня вздохнула свободно. От одного осознания этого факта число кадров в секунду сразу скакнуло аж до двадцати! В луа игра только регистрирует конкретные события – эвенты. И каждый раз когда указанное событие происходит, игра выполнит указанную функцию, в данном случае – MyAwesomeFunction. Да, названия и наполнение функций можно придумывать самому. Сейчас наполнение функции пустует, да и с отслеживаемым событием мы не определились. Для каждого эвента есть своё зарезервированное название, которое нужно знать точно. Так, посмотрим, что у нас в меню? https://mwse.readthedocs.io/en/latest/lua/event.html Неплохо, да? О, что это у нас тут? calcHitChance. Это же то о чём я думаю? Решено! Сколько себя помнил, всякие зумерки всегда плевались от боевой системы Шинда, не в силах попасть по грязекрабу даже 1 раз из 10. В этом даже было некоторое очарование, но быть может скайримодети в чём-то правы, и система попаданий действительно нуждается в починке? Итак. У каждого эвента есть определённый список игровых данных. Что же может предложить нам эвент calcHitChance? Смотрим: attackerMobile targetMobile target attacker hitChance Ридонли, ридонли, ридонли… о! hitChance не ридонли! Да, это означает, что его можно менять! Вот мы и подошли к сути работы с эвентами – граалю MWSE 2.1 – перехват игровых данных событий и изменение этих данных на свой вкус в собственноручно составляемых функциях! Оператор присвоения значения переменной – это знак равенства. Ну, сколько забабахаем? Не будем мелочиться! 100% шанса, 10 попаданий по грязекрабу из 10! Теперь наш манускрипт выглядит так, и он УЖЕ в полностью рабочем состоянии! local function MyAwesomeFunction(e) e.hitChance = 100 end local function initialized(e) event.register("calcHitChance", MyAwesomeFunction) end event.register("initialized", initialized)Да, вот так просто! Скрипт перехватил игровые данные о шансе на попадание и изменил их. И не один раз – а всегда. Функция вызывается при каждом событии удара, и теперь при каждом ударе шанс будет выставляться на сотку. А может, не стоит быть столь радикальными? Сотня шанса это хоть и прекрасно, и мы одной строчкой кода почти превратили Шинд в Подливион, но всё же – не пропадать ведь шарму промахов в упор? Особенно если этот механизм можно довести до ума. Изменим наш код следующим образом: local function MyAwesomeFunction(e) local hitreduction if ((e.targetMobile.isMovingLeft or e.targetMobile.isMovingRight) and (e.targetMobile.isMovingForward == false)) then -- если цель движется влево или вправо и при этом не движется вперёд hitreduction = e.targetMobile.agility.current / 2 else hitreduction = 0 end e.hitChance = 100 + (e.attackerMobile.agility.current / 2) - e.attackerMobile.blind - (e.targetMobile.sanctuary / 2) - (e.targetMobile.chameleon / 2) - hitreduction end local function initialized(e) event.register("calcHitChance", MyAwesomeFunction) end event.register("initialized", initialized)Что всё это значит? Попробуем разобраться. * Сразу бросаются в глаза уже знакомые нам по esscript блоки if-end. else и elseif тоже в деле. Что изменилось? После условия обязательно надо прописывать ещё и оператор then. * Комменты идут после сдвоенного минуса -- * С пробелами и скобками тут куда больше вольностей. А вот регистр букв важен – его надо чётко соблюдать. * Операторы and и or, два барата-бубенца кастрированного хаджита вернулись на своё законное место! Больше не надо громоздить монструозные мгногоэтажки. Вообще, в луа как в полноценном языке есть много фич, недоступных ущербному esscript. И таймеры, боже, настоящие таймеры! Как же их не хватало в КС! * Нужна своя переменная? Провозгласите её с помощью волшебного слова local. Так мы прописали local hitreduction и ввели переменную hitreduction. Она будет доступна скрипту только в пределах той функции или блока if-end, в котором она была провозглашена. Так что если вы хотите, чтобы ваши локальные переменные были доступны для всего скрипта – провозгласите их в самом-самом начале файла. * А что это за вездесущие буковки e? В MWSE для Шинда есть очень много зарезервированных названий игровых данных. Многие данные представляют собой целые базы данных. Сначала пишем название базы данных, затем точка без пробелов, затем опять же без пробелов название переменной внутри этой базы, причём сама эта переменная в свою очередь тоже может оказаться базой данных со своими переменными внутри. Это как путь к файлам в многочисленных папках. Укажите весь путь через точки. Так e – это база данных всего события. В нашем примере, события расчёта шанса на попадание. Какие переменные есть внутри этой базы данных? Мы их уже видели: attackerMobile targetMobile target attacker hitChance Нам пока нужно знать что в этом конкретном событии attackerMobile означает атакующего, targetMobile означает цель атаки, а hitChance – собственно сам шанс на попадание. Нужно нам узнать, сколько у атакующего текущая ловкость – прописываем: e.attackerMobile.agility.current Нужно узнать, сколько у защищающегося эффекта светоча – прописываем: e.targetMobile.sanctuary Где же посмотреть все зарезервированные имена баз данных и их содержимое? Для мобильного актёра (коим и являются наши e.attackerMobile и e.targetMobile) например здесь: https://mwse.readthedocs.io/en/latest/lua/type/tes3/mobileActor.html А для остальных типов данных – здесь: https://mwse.readthedocs.io/en/latest/lua/type.html Теперь, зная всё это, мы можем прочесть скрипт и понять, что мы сотворили. Сначала проверили, движется ли защищающийся влево или вправо и не движется ли он при этом вперёд? Если да, то присвоили созданной нами переменной hitreduction значение половины от текущей ловкости защищающегося. А если нет, то присвоили hitreduction 0. Потом вычисляем сам шанс на попасть. Взяли 100%, прибавили половину от текущей ловкости нападающего, отняли величину слепоты нападающего, отняли половину от величины светоча и хамелеона защищающегося, и наконец отняли величину нашей переменной hitreduction. Вуаля! Теперь очень ловкий персонаж получает нехилый шанс уклониться от атаки, если будет правильно двигаться. Светоч и хамелеон защищающегося, а также слепота и ловкость нападающего так же окажут эффект. Вообще-то вы можете придумать свою формулу, поставив зависимость шанса на попадание от почти чего-угодно, хоть от погоды на Массере. Доступных событий множество – вы можете легко изменять наносимый урон, параметры объектов и актёров, раздавать и удалять предметы и заклинания, менять прирост опыта в навыках, разрешать и запрещать использование предметов, отслеживать состояние боя, сохранения, загрузку, нажатие определённых кнопок и многое, многое другое… Особо искушённые творцы сумеют изменить интерфейс, создавать собственные продвинутые меню, добавлять новые навыки и даже новые магические эффекты! Открывающиеся возможности просто поразительны. Теперь же, когда вы узрели силу луа в самых элементарных алгоритмах, вы получите заряд к познанию большего. Изучите общие принципы языка луа, посмотрите гайды от авторов МВСЕ. Постарайтесь прочесть несколько уже готовых плагинов, например эти: https://www.nexusmods.com/morrowind/mods/47056 https://www.nexusmods.com/morrowind/mods/47035 https://www.nexusmods.com/morrowind/mods/47062 Если удастся – то вы уже освоили достаточно и теперь можете сотворить что-то своё. Так сделайте это и Живите в Своём Собственном Благословлённом Мире, который Сами и Создали!
-
Прописать в консоли set al_DifficultyMod to 1 для лёгкой сложности Или 1.5 для средней. Иди 2 для сложной
- 7824 ответа
-
- OpenMW
- Morrowind [Fullrest Repack]
- (и ещё 4 )
-
Появилась идея во-первых довести до ума плагин с помощью луа-скриптов, вызывая формулу рассчёта прироста опыта при обработке события каста безо всякой возни со звуками. И во-вторых, дополнить плагин также и продвинутыми формулами прироста к оружейным и доспешным навыкам. Как показали на примере нового плагина NGC, в луа есть функция обработки события ударов - как от ГГ по врагам, так и врагов по ГГ. То есть остаётся дополнить фичи перерасчёта урона при ударе ещё и вызовом мвсешной функции заполнения прогресс-бара соответсвующего скила. Скила оружия при ударе ГГ по врагу и скила доспехов при ударе по ГГ. Справедливая формула набора опыта для оружия: 1 экспы = ((((Уровень врага) - (Уровень навыка / 10)) * 3) / Уровень врага) * (Урон / Х) Где Х - это подгоночный коэффициент, который мы вычислим при тесте мода, чтобы было реалистично. И если в итоге выйдет отрицательное знаечние, то само собой, приравнять к нулю. Такая формула позволит сделать 2 важные вещи: Во-первых, ГГ может качаться только на достойных врагах, представляющих опасность и вызов. Лишь самый зелёный новичок может избивать манекен 1 уровня, повышая скилл на халяву до 10 уровня. И только до 30 уровня навыка можно будет качаться на скампах 3 уровня. А вот если на 30 уровне навыка найти святошу 20 лвл, то коэффициент прогресса резко скаканёт до (20 - 3)*3 / 20 = х2.55, и такая битва будет прекрасной тренировкой если Нереварин выживет. Во-вторых, ГГ не сможет абузить деревянные мечи на сильных врагах. Для набора опыта придётся наносить урон. Наносишь много урона - получаешь много опыта, но и врагов придётся искать заново. Аналогично можно вывести справедливую формулу обучения доспешным навыкам: 1 экспы = ((((Уровень врага) - (Уровень навыка / 10)) * 3) / Уровень врага) * (Полученный урон / Х) Получаем укусы от крысы - почти не учимся, а после 30 вообще не учимся. Получаем кулаком от огрима - прекрасно учимся! При этом чем в более отвратительной броне вы будете получать удары, тем меньше у вас будет класс брони, а значит больше пройдёт и получаемого урона - Нереварину придётся сильнее изгаляться чтобы выжить, значит и набор опыта пойдёт быстрее. Зы: переименуйте тему в "Реалистичный рост навыков". __________ Написал автору, ответил: Thanks for the formula suggestions, customizable skill gain will be coming in the next release.
-
Версия 1.4 * Понерфлен манапул почти из всех источников. Примерно с 1000% до 600% при полной синергии расы, созвездия, перков и класса. Сделано это для того чтобы маги не достигали божественности слишком быстро. * Перки магических навыков теперь дают 0.1, 0.2 и 0.3 бонуса к мане от инты вместо 0.1, 0.3 и 0.5 * Данмерам понерфлен бонус к манапулу с 1.0 до 0.7. Но добавлен небольшой бонус к подвижности в виде 20 пера. Бочмерам тоже досталось – их бонус к мане опущен до 0.3. * Созвездия Атронаха и Адепта теперь дают 1.5 множителя к мане на вознесении вместо 2.0. Такой атронах стал существенно слабее оригинального, так что для компнесации апнуты его активные абилки – сокрушительные 3-стихийные заклинания. Созвездию Любовника добавлено немного подвижности в виде +30 к перу на вознесении. Созвездию Башни улучшен взлом на начальном уровне. * Классы теперь выбираются на 2, 5 и 10 очков легендарности вместо 3, 6 и 10. Всем магическим классам понерфлен манапул примерно в 3 раза, ибо жирно слишком, они и так самые сильные. Волшебнику добавлено 30 пера в качестве эффекта от постоянно поддерживаемой ауры облегчения. Варвару незначительно улучшены прыжки. Трикстеру дано 5% сопротивления магии. Страннику улучшено перо до 50. И ещё более мелкие балансировки другим классам. * Стоимость пера снижена в 2 раза (необходимая балансная правка в связи с предыдущей ребалансировкой стоимости повышения статов). * Пересмотрен баланс ряда уникальных тряпок и бижутерии, зачаренных на постэффект: Кольцо Учителя: инта, воля +10, манапул +1.0 Амулет Некроманта: инта, сопр. оружию +10, манапул +1.0, поглощение 20%, реген хп +1 Мантия Драка: инта. сопр. огню, отражение +10, манапул +1.0 Кольцо Азуры: манапул +1.0, реген маны +1, кош. глаз 10 Мантия Редаса: 150 пера Регалии Наставника: кольцо Редорана +30 хп; пояс Хлаалу +50 пера; Мантия Телванни +1.0 манапул Мантия Рориса: реген хп +1, реген сил +5 * Палке Теребониуса сильно понерфлено число зарядов. Планы на будущее: * Адаптировать скрипты из нового NGC, улучшающего боёвку оружием. В текущем состоянии этот плагин очень дисбалансен. * Сделать патч совместимости для Тамриэль Ребилда, когда выйдет новая версия. Скачать: http://www.fullrest.ru/files/4nm/files Отдельно есп 1.4 для тех у кого уже есть архив с ресурсами мода: 4NM.ESP