Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаНу, миелофона и машины времени у меня нет, чтобы уверенно рассуждать о том, что планировали разработчики. Да, ваши заклинания смотрятся естественно: если бы вы устроили мистификацию с якобы невыпущенным патчем SoD 3.3 (добавляющим новые заклинания) и продемонстрировали видео с этими заклинаниями - было бы очень убедительно. Еще не поздно, кстати (тему почистим, помолчим сколько требуется, а потом признаетесь в розыгрыше)
|
Re: Как создать плагин для HD модаТестируя Disease заметил, что эффект замедления идет с округлением вверх. То есть если есть хоть какой-то остаток, то он отсекается и прибавляется единичка, подобно HotA (хотя нет, там всегда +1, даже когда нет остатка). В то время как в оригинале, если есть остаток, то он отсекается без каких-либо прибавок, то есть округление всегда вниз. Как лучше даже и не знаю. Но первый вариант, наверное, будет более сбалансированным что-ли.
|
Re: Как создать плагин для HD модаЯ специально отнимаю единичку, чтобы эффект снижения скорости был заметен при любой скорости отряда, но можно легко убрать.
|
Re: Как создать плагин для HD мода
Добавил Aging (закл должен работать даже в паре с одноимённой абилкой, но не знаю, как будет вместе с абилкой Poison). Для Fear реализовал снижение скорости. Изменил шансы выпадения Disease: теперь не появляется в добрых городах, в Necropolis вес 10, в остальных городах - 5 ("зеркальные" веса Prayer). Сейчас перепишу функцию 0x4425A0, и отряды под Fear не смогут никого атаковать. Я вот думаю, разработчики ясно написали, что отряд под Fear не может атаковать, но имели ли они в виду этим, что отряд также не может отвечать на атаки? * * * Функция 0x4425A0, оказывается, не за это отвечает. Например, с помощью неё можно разрешить стрелять в рукопашной. Поэтому пусть остаётся, вдруг понадобится. А за невозможность атаки человеком неожиданно отвечает функция выбора курсора. Запретил стрелять и атаковать врукопашную под Fear, про каст в описании заклинания ничего не сказано (но если нужно, можно и каст запретить). Запрет на атаку для AI поищу позже. Обновил код выше. |
Re: Как создать плагин для HD модаAlexSpl писал(а): Пускай будет так, как есть. AlexSpl писал(а): Я думаю, что да. Сильно ли ответка отличается от атаки? Это таже атака только атаковавшего тебя отряда. Атаковать не может, а ответить может. Как-то странно, как по мне. Если нет, то по сути мы получим подобие Страха Лазурных драконов и Печали за исключением того, что здесь отряд просто может походить, но толку от этого мало. Бешенство, например, действует не только на время атаки, а в течении 1 раунда, то есть как на время атаки, так и на время ответки. Так что, я думаю, что ответку также нужно убирать. AlexSpl писал(а): Ладно с Джиннами, Чародеями и другими кастующими на своих. А как быть со Сказочными драконами? У них же каст - это атака. Для них, наверное, нужно убирать. 1) Смертельный взгляд - 5 уровень - 30 (при развитии школы - 25) - Магия огня У меня появилась идея перенести в заклы крутешую абилку Могучих горгон. Я придумал как ее рабить на уровни и сделать так, чтобы ее можно было наложить на свой отряд любого уровня выдерживая при этом баланс. Для начала немного о Смертельном взгялде из ФизМига: СМЕРТЕЛЬНЫЙ ВЗГЛЯД При ударе каждая Могучая горгона мгновенно убивает 1 существо в целевом отряде с шансом 10%, но не более N/10, где N – количество Могучих горгон. Округление вверх. Действует только на живых. Немагическая способность. Например, 31 Могучая горгона после атаки может дополнительно убить до 4 существ (31/10) Смертельным взглядом. Однако ключевым фактором является то, что шанс срабатывания рассчитывается для каждой горгоны отдельно, а не для всего отряда. Иначе бы 31 горгона всегда убивала 4 существ Смертельным взглядом. Вероятность хотя бы одного успешного срабатывания способности можно рассчитать по формуле:
где p – шанс срабатывания Смертельного взгляда, равный 0,1 (10%), N – количество Могучих горгон. Если 5 Могучих горгон разделить на 5 отрядов по 1 горгоне, то вероятность однократного срабатывания Смертельного взгляда такая же, как если бы они находились в одном отряде. Из формулы можно заметить, что вероятность срабатывания всегда меньше 1. Тем не менее, это не означает, что всегда есть шанс на неудачу. При вероятностях близких к 1, в математический закон вступают особенности компьютерного округления. Причем довольно сложно предсказать, как будет округлено значение 99,99 – до 100 или до 99. Немного теории вероятностей: шанс выпадения Смертельного взгляда i раз у N горгон подчиняется нормальному распределению по формуле:
где
кроме шанса максимального убийства:
где K = N/10 с округлением вверх – максимальное количество убийств для данного отряда горгон. Без этого ограничения горгоны имели бы теоретический шанс убивать Смертельным взглядом отряд равный своему количеству. С учётом этого ограничения весь «хвост» вероятностей, превышающих максимум, приходится на этот максимум. Математическое ожидание – число, показывающее, сколько в среднем убьют горгоны, если это повторять бесконечное количество раз, рассчитывается по формуле:
Таблица, которая демонстрирует некоторые пункты расчёта вероятности. Можно заметить по таблице, что шансы возрастают с количеством горгон в отряде. Т.е. 31 горгона имеет шанс убить максимум (4 существ) с шансом 38%, а 21 горгона имеет шанс убить максимум (3 существ) с шансом 35% – на 2% меньше. Тем не менее, иногда выгодно делить горгон на несколько отрядов. Например, 2 горгоны имеют 19% вероятность убить 1 существо Смертельным взглядом. Если разделить их на 2 отряда по 1 горгоне, то по итогу, они всё ещё имеют 19% вероятность убить 1 существо Смертельным взглядом, но на самом деле появляется 1% шанс, что каждый из отрядов убьёт по 1 существу, а оставшиеся 18% – вероятность, что, хотя бы один из отрядов убьёт 1 существо. Ещё пример: имеется 30 Могучих горгон (вероятности см.по таблице) в одном отряде. Разделим их в 2 отряда по 15 горгон – каждый из отрядов имеет шанс убить 2 существ Смертельным взглядом. Внезапно появилась 20% (45%*45%=20%) вероятность убить взглядом сразу 4-х врагов! У вас не было этого шанса, когда все 30 Могучих Горгон находятся в 1-ом отряде. И это при том, что минимальные шансы не ухудшились. Не имеет значения как именно разделять Могучих горгон, но, очевидно, не нужно создавать больших диспропорций, скажем, 20:10. Стоит заметить, что делить отряды горгон числом 10*N+1 не нужно. Разделение такого количества как 11, 21, 31, 41 и т.д. не имеет смысла и даже вредно. Еще один минус от деления горгон: если полученные отряды слишком малы, их легко уложить даже низкоуровневыми войсками противника. Нужно помнить, что помимо взгляда горгоны наносят обычный урон, и лучше, если после удара весь отряд противника будет убит, чем бить его несколькими отрядами и получить ответный удар, если он выживет. Вывод: не разделяйте Могучих горгон, пока не накопите их, по крайней мере, 32 особи. С такой изумительной особенностью, главной целью Могучих горгон являются существа 7-го уровня. Не заботьтесь даже о снятии ответа другими войсками. Могучие горгоны могут выдержать приличный удар. Если у врага 13 Архангелов, а у вас 48 Могучих горгон (к тому времени как враг накопит 13 Архангелов, у вас уже вполне может быть большее количество) – не впадайте в отчаяние. Архангелы могут этого не знать, но они уже мертвецы. Своей первой атакой Могучие горгоны, скорее всего, убьют 4 Архангела. Ответным ударом Архангелы не убьют больше, чем 9 горгон. После двух последующих атак останется 2 или 3 Архангела и от 15-20 горгон. Надо иметь в виду, что такие параметры вашего героя как Защита и/или навык Доспехи ОЧЕНЬ сильно сдвигают преимущество в сторону горгон. Атаковать существ 6-го и ниже уровней имеет смысл, только если нет более сильных. Не тратьте горгон атакуя слабых существ. Единственной неприятностью является факт, что Смертельный взгляд не действует на существ Некрополиса, Мумий, элементалей, горгулий и големов. Поэтому в противостоянии с Некрополисом, Башней или Сопряжением вы не можете так же сильно полагаться на Могучих горгон. ------------------------------------------- Я предлагаю сделать следущее: Могучие горгоны у нас существа 5-го уровня. Причем, вероятно, самые сильные среди всех существ 5-го уровня. Обычно абилка соответствует базовому уровню развития школы. Как правило, на Эксперте идет двухкратный прирост относительно Базового уровня. Таким образом я предлагаю сделать для Базового/Продвинутого/Экспертного уровня - 10%/13,33%/20%. Что будет соответствовать:
N - кол-во существ в дружественном отряде на который наложен закл. Обозначим наш процент с вероятностью которого будет убиваться Смертельным взглядом 1 вражеское существо на 1 существо из нашего отряда, который будет зависеть от уровня развития школы, за P. Таким образом 100 / P - часть от всего стека, то есть максимально возможное кол-во существ убиваемых Смертельным взглядом за один раз. Для всех существ 5-го уровня P будет фиксированным (за исключеним Элементалей земли/магмы) и будет зависеть только от уровня развития школы. Кол-во убивамых Смертельных взглядом существ зависит от кол-ва существ в атакующем стеке. Очевидно, что оставляя процент неизменным и накладывая этот закл на более низкоуровневых существ, чей прирост гораздо больше, мы получим имбу. А для более высокоуровневых, мы, наооборот, потеряем в эффективности, так как их прирост меньше. А потому, чтобы выйти на тот же уровень убийств, мы должны пропорционально увеличению прироста уменьшать процент и наборот. Для этого введем коэффициент k, где k = 3 / bg. Где bg - base growth - базовый прирост существ на который накладывается закл и 3 - это базовый прирост Могучих горгон и всех существ 5-го уровня за исключением Элементалей земли/магмы (там 4). Итого мы получим следующую формулу для максимально возможного кол-ва убиваемых Смертельным взглядом существ:
Например, для существ 4-го уровня, чей базовый прирост приемущественно равен 4 (за исключением Пегасов, там 5), мы получим:
Это будет 7,5%; 10%; 15% или N/13.33; N/10; N/6.66 Для существ же 6-го уровня, чей базовый прирост равен 2, мы получим:
Это будет 15%; 20%; 30% или N/6.66; N/5; N/3.33 По-моему, получился бы очень крутой закл 5-го уровня. 2) Также можно добавлять из абилки Лордов вампиров закл: Возрождение - 5 уровень - Мана 30 (при развитии школы - 25) - Магия Земли Basic: Восстанавливаем 50% в здоровье/сущесвтах от нанесенного отрядом урона Advanced: Восстанавливаем 75% в здоровье/сущесвтах от нанесенного отрядом урона Expert: Восстанавливаем 100% в здоровье/сущесвтах от нанесенного отрядом урона 3) Вызов фей - 3 уровень - Мана 18 (при развитии школы - 15) - Магия Воздуха или Все школы магии None: Позволяет призвать на время боя Фей. Вызов Фей не мешает вызову после этого элементалей. Кол-во призваных Фей: СМ * 8 | Для Маленьких Фей: СМ * 10; Basic: Позволяет призвать на время боя Фей. Вызов Фей не мешает вызову после этого элементалей. Кол-во призваных Фей: СМ * 8 | Для Маленьких Фей: СМ * 10; Advanced: Позволяет призвать на время боя Фей. Вызов Фей не мешает вызову после этого элементалей. Кол-во призваных Фей: СМ * 12 | Для Маленьких Фей: СМ * 15; Expert: Позволяет призвать на время боя Фей. Вызов Фей не мешает вызову после этого элементалей. Кол-во призваных Фей: СМ * 16 | Для Маленьких Фей: СМ * 20; На выбор, что-то одно (Феи или Маленькие Феи), что больше нравится. 4) *Регенерация - 3 уровень - Мана 15 (при развитии школы - 12) - Магия Воды None: Позволяет отряду регенирировать 50 очков здоровья перед каждым своим ходом. Basic: Позволяет отряду регенирировать 50 очков здоровья перед каждым своим ходом. Advanced: Позволяет отряду регенирировать 100 очков здоровья перед каждым своим ходом. Expert: Позволяет отряду регенирировать 200 очков здоровья перед каждым своим ходом. Регенерация является магическим аналогом природной способности Троллей восстанавливать потерянное здоровье перед ходом отряда. При этом в момент наложения заклинания здоровье не восстанавливается, идет лишь установка информации, что отряд получил эту способность. Заклинание всегда накладывается на один отряд. * Так в MoP обстоят дела. Я бы зделал так: None: Позволяет отряду регенирировать 50% от потеряного здоровья перед каждым своим ходом, но не более 300. Basic: Позволяет отряду регенирировать 50% от потеряного здоровья перед каждым своим ходом, но не более 300. Advanced: Позволяет отряду регенирировать 75% от потеряного здоровья перед каждым своим ходом, но не более 300. Expert: Позволяет отряду регенирировать 100% от потеряного здоровья перед каждым своим ходом, но не более 300. (Базовое_здоровья - Текущее_(остаток)_здоровья) * 0.5/0.75/1.0 5) Притяжение - 2 уровень - Мана 10 (при развитии школы - 8) - Магия Земли None: Лишает вражеских существ возможности летать и игнорировать препятствия. Действует на существ 1-5 уровней. Basic: Лишает вражеских существ возможности летать и игнорировать препятствия. Действует на существ 1-5 уровней. Advanced: Лишает вражеских существ возможности летать и игнорировать препятствия. Действует на существ 1-6 уровней. Expert: Лишает вражеских существ возможности летать и игнорировать препятствия. Действует на существ любого уровня. Притяжение позволяет лишить вражеских существ способности к преодолению препятствий (флаг «Летает»). Это может быть особенно полезно при осаде города. Заклинание имеет массовое воздействие. 6) Факел - 1 уровень - Мана 3 (при развитии школы - 2) - Магия Огня None: Увеличивает радиус обзора героя в подземелье на 1 клетку до конца дня. Basic: Увеличивает радиус обзора героя в подземелье на 1 клетку до конца дня. Advanced: Увеличивает радиус обзора героя в подземелье на 2 клетки до конца дня. Expert: Увеличивает радиус обзора героя в подземелье на 3 клетки до конца дня. Экспертное колдовство Факела полностью компенсирует недостаток обзора тем, кто плохо видит под землей — а это все герои, кроме героев «подземных» городов — Инферно и Темницы. 7) Вьюга - 5 уровень - Мана 25 (при развитии школы - 20) - Магия Воды None: Наносит урон холодом выбранному отряду существ. Урон: 25 * СМ + 30 Basic: Наносит урон холодом выбранному отряду существ. Урон: 25 * СМ + 30 Advanced: Наносит урон холодом выбранному отряду существ. Урон: 25 * СМ + 60 Expert: Наносит урон холодом всем вражеским отрядам. Урон: 25 * СМ + 120 * Урон здесь можно поднимать и до 50 * СМ. Вьюга — главное ударное заклинание Магии Воды. Наряду с Ледяной Молнией и Кольцом Холода, Вьюга входит в тройку так называемых «морозных заклинаний». Как и они, она наносит повышенный урон Огненным и Энергетическим Элементалям и, в то же время, бесполезна против Ледяных Элементалей. 8) Сбор войск - 2 уровень - Мана 10 (при развитии школы - 8) - Магия Воздуха None: Позволяет удаленно песетить ближайшее жилище существ, принадлежащее игроку. Действует в пределах экрана относительно героя. Basic: Позволяет удаленно песетить ближайшее жилище существ, принадлежащее игроку. Действует в пределах экрана относительно героя. Advanced: Позволяет по выбору удаленно песещать жилища существ, принадлежащие игроку. Действует в пределах экрана относительно героя. Expert: Позволяет удаленно посещать любые жилища существ, принадлежащие игроку. Действует по всей карте приключений. Сбор Войск - заклинаний, которое способно избавить героя от еженедельной беготни от одного жилища существ к другому. Теперь, с помощью Сбора Войск, это можно делать удаленно. Экспертный Сбор Войск позволяет герою покупать существ в любом внешнем жилище под флагом родного королевства. Стоит лишь навести курсор на жилище и щелкнуть мышью. 9) Подкрепление - 3 уровень - Мана 15 (при развитии школы - 12) - Магия Огня None: Позволяет брать войска 1-го уровня из гарзнизона ближайшего города, принадлежащего игроку. Basic: Позволяет брать войска 1-3 уровня из гарзнизона ближайшего города, принадлежащего игроку. Advanced: Позволяет брать войска 1-5 уровня из гарзнизона любого города, принадлежащего игроку. Expert: Позволяет брать войска всех уровней из гарзнизона любого города, принадлежащего игроку. 10) Встреча героев - 5 уровень - Мана 30 (при развитии школы - 25) - Магия Огня None: Позволяет удаленно встретиться с ближайшим свои героем Basic: Позволяет удаленно встретиться с ближайшим свои героем Advanced: Позволяет удаленно встретится с любым своим героем Expert: Позволяет удаленно встретится с любым своим или союзным героем Если Городской Портал требует перемещения героя, а Подкрепления позволяют взять из города только армию гарнизона, то Встреча Героев позволяет обмениваться всем, чем только могут обмениваться герои. При этом даже действует Грамотность. --- В MoP есть еще Вызов светлячков - существ первого уровня (2/4/6/8 * СМ), его я заменил на Вызов Фей 3 уровня с большим кол-вом. Кстати, в MoP через чит-меню если получать все заклы, то приходят только дефолтные. Новых, которые были добавлены непосредственно в MoP, нет. Вы же этот момент учшли. В нашем случае через чит-меню приходят все заклы, как дефолтные, так и наши новые. Итого, у нас сейчас 8 штук заклов. Я придумал еще 3. Плюс 7 взял из MoP. Если все добавить получится 18 новых заклинаний. Дальше придумать что-то новое и интресное уже будет сложней. Да хорошую анимацию сдеать будет непросто. Я вот нагуглил, что с помощью плагина Hex-Rays к IDA Pro можно ASM-код конвертировать в C-код. Также, вроде, есть аналоги: Hopper Disassembler, ODA (Online Disassembler), Retargetable Decompiler. То есть в теории можно большую часть кода MoP перегнать в C-код. Заклы в MoP уже написаны и прекрасно работают, их только разобрать и переписать на плюсы. IDA Pro 7.0 + Hex-Rays Decompilers 7.0 с лекарством в комплекте можно взять ОТСЮДА. Что-то интересное (Смертельный взгляд, Возрождение) или несложное в реализации (Вызов Фей, Регенерация, Притяжение) можно добавить и сейчас, к остальному же, наверное, лучше вернутся уже после того, как будет полностью готово уже начатое. Картинки к заклам запаковал в архив. К первым 3 сделал сам, остальные выдрал из MoP. Плюс выдрал анимацию Притяжения и Вьюги (Регенерация и Возрождения есть в ресурсах оригинала). Все в архиве:
Последний раз редактировалось Rolex 01 сен 2021, 21:10, всего редактировалось 2 раз(а).
|
Re: Как создать плагин для HD модаС большим кол-вом заклинаний серьёзно возрастает объём кода для AI. Пусть идеи тоже будут в теме, но сначала нужно допилить то, что начато
|
Re: Как создать плагин для HD модаЯ вот подумал, у нас при развитии школы для Fear падает только скорость. Думаю, оптимально будет если на Basic и Advanced не будет атаки, но будет ответка, а на Expert - ни атаки, ни ответки.
|
Re: Как создать плагин для HD мода1. Поправил генерацию новых заклинаний в магических гильдиях (теперь новые заклинания всегда разрешены; запрет будет в ini, а не в редакторе карт).
2. Разрешил кастовать компу Disease. Правда, функция оценки пока выглядит очень скромно:
Зато кастует В готовом плагине возьму в качестве основы функцию взвешивания Prayer.
По аналогии с Disease можно прикрутить функции взвешивания и для других новых заклинаний здесь:
Но чтобы AI грамотно кастовал, естественно, нужно очень хорошо подумать над самой функцией взвешивания (сейчас бы знания Ben80 пригодились) * * * UPD: Добавил оценку Aging. Оказывается, она уже была в игре. Пока для всех уровней развития Школы Огня будет одинаковой, т.к. нужно понять, что означает деление на 3. Исправил аргументы функции взвешивания (что за структура идёт в ecx, предстоит выяснить; это не _BattleMgr_). Можете раскоментить следующий код, чтобы посмотреть на то, какие Value AI назначает отрядам, на которые думает кастовать Aging:
|
|
Re: Как создать плагин для HD модаThere you go:
Цитата: this pointer is omitted from signature, and type_enchant_data is a copied struct with one or more fields, depending on spell requirements. |
Re: Как создать плагин для HD модаСделал пока так:
Названия полей type_AI_spellcaster и type_enchant_data после буду угадывать Главное пока, чтобы из стека 6 * 4 = 24 А что-нибудь известно про флаги заклинаний AI? У Disease сейчас 0x40045. Как у Prayer, только убрал масскаст на свои отряды. И что там с кастом на боевые машины, SPF_NOT_ON_MACHINE? Aging идёт пока без флагов AI - 0x1015 (но комп его кастует). Не знаю, какой ему выставить. Кто бы за меня покурил ФизМиГ хотя бы для тех заклинаний, которые делаем? Prayer можно кастовать на боевые машины. По логике мы "благословляем" тех, кто ими управляет: скорость машин всё равно не увеличивается, а увеличение атаки и защиты можно повесить на прибавку параметров "обслуживающего персонала". Или как понимать иначе, что Молитву можно кастовать на машины? Поэтому я считаю, что и Disease пусть можно будет кастовать на боевые машины. А вот Aging пусть нельзя будет кастовать на боевые машины: тут мы ухудшаем живучесть самой техники ("старим", что нонсенс), а не тех, кто ею управляет. * * * UPD: Раздал иммунитеты новым Poison, Disease, Aging и Fear (пока попробовал хайхуком, но, по-хорошему, придётся ставить лоухуки для универсальности). У Poison теперь такие же иммунитеты, как у абилки. Disease, Aging и Fear не действуют на нежить. Aging и Fear - на боевые машины. Fear - заклинание разума. UPD: Что ж, Fear - таким, как, мне кажется, его задумывали разработчики, - почти готов. Осталось только написать функцию оценки для AI. Можно ещё подумать над тем, чтобы убрать ответку на Эксперте Земли. Теперь Fear работает и для AI. Отряды под этим заклинанием не могут атаковать. Я подумал, что ставить рукопашников в защитную стойку вместо атаки - это скучно. Поэтому они ходят так, как если бы не хотели атаковать врага врукопашную. Стрелкам, мне кажется, лучше всего просто защищаться. Невероятно, но вот я почти вернул в игру заклинание, которое заинтересовало в 2006-м году, и благодаря наработкам многих поклонников игры, смог реализовать свою давнюю мечту |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2