Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Master of Puppets (v.3.07 Battery)
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
MasterOfPuppets
Пройдёт.
Sandris
Предложил бы Магов и Архимагов так же превращать в Личей через Некротрон и создать Друидов и Архидруидов (Великих Друидов) либо как альтерветку у Оплота (5-й юнит), либо как нейтралов (их так же завязать на превращение в Личей).

Haart of the Abyss
Цитата(Sandris @ 28 Sep 2016, 01:56) *
Предложил бы Магов и Архимагов так же превращать в Личей через Некротрон и создать Друидов и Архидруидов (Великих Друидов) либо как альтерветку у Оплота (5-й юнит), либо как нейтралов (их так же завязать на превращение в Личей).


Цитата(MasterOfPuppets @ 12 Sep 2016, 17:43) *
Если это домашняя модификация, то вполне можно смириться с тем, что Патер останется специалистом и по монахам, и по гипогрифам. Либо же можно залезть в папку Sources и пересобрать MoP.bak, изменив параметры в файле Specializations.txt.
Вообще, я потерял интерес к альтерветкам и потому сделал их опцией и не добавил в Battery ни одну, оставив это занятие пользователям. Сам играю, выключив её.


Собственно, я вот что хочу сказать. Я не знаю, почему сам ты потерял интерес к альтерветкам (и было бы интересно узнать), но трудно спорить, что удачное их исполнение — одна из фишек мода, как и редактор городов/существ. Так что было бы неплохо, если бы ты обеспечил полную поддержку тем игрокам, которые хотят с ними поиграться — для которой сейчас как раз недостаёт либо работы специализаций по существам по принципу "замок+уровень", а не конкретного существа, либо редактора специализаций героев, аналогичного трём уже имеющимся редакторам. Так-то и про замковые постройки всегда можно было предложить поменять текстовики.

За всю Одессу не скажу, но я, скорее всего, освоившись в МоПе-как-он-есть и начав реально использовать инструментарий, начну с _увеличения_ числа альтернатив за счёт правки статов (и принадлежности) нейтралов и вноса их в города (ну там, воров-разбойников в Замок…). Тут то, что в МоПе много существ с новыми и тактически интересными способностями, очень в тему; вообще дизайн добавленных существ в основном на высоте (кроме первоуровневого мяса ассорти — всякие лесовики-пауки-токлофены на карте спокойно могли бы быть просто гоблинами, имхо) — хотя это и не сразу видно за их, гм, эклектичным графоном (те же разбойники — первый удар-возвратный пехотинец, интересная и относительно новая тактическая ниша, но смотреть на них очень неудобно; постараюсь привыкнуть, чё). Я понимаю, что это не совсем то, для чего они любовно создавались и настраивались, но хоцца стратегических выборов, вот.




Цитата(Sandris @ 28 Sep 2016, 01:56) *
Предложил бы (…) создать Друидов и Архидруидов (Великих Друидов) либо как альтерветку у Оплота (5-й юнит), либо как нейтралов (их так же завязать на превращение в Личей).
Лучше предлагать более конкретно — не просто название/образ, но и предполагаемую фишку, и в идеале готовую анимацию.



Цитата
Надо будет удалить строку "Latest Executed ERM Receiver" в крашлоге к следующему патчу.
Ну, факт в любом случае в том, что отдельные хвосты от ЕРМ в работе мода остались. Отказ переключения между стрелковым/ближним боем работать во время битвы с другим игроком (даже компом), например… Я скорее не очень понимаю такого стеснения на этот счёт.

P. S. Кстати, а как в редакторе существ портрет существа менять? Не очень понял на этот счёт — есть только поле для боевого дефа, но он разве портрет включает?
XEPOMAHT
Цитата(Лорд Хаарт @ 28 Sep 2016, 09:54) *
Так что было бы неплохо, если бы ты обеспечил полную поддержку тем игрокам, которые хотят с ними поиграться — для которой сейчас как раз недостаёт либо работы специализаций по существам по принципу "замок+уровень", а не конкретного существа, либо редактора специализаций героев, аналогичного трём уже имеющимся редакторам. Так-то и про замковые постройки всегда можно было предложить поменять текстовики.

За всю Одессу не скажу, но я, скорее всего, освоившись в МоПе-как-он-есть и начав реально использовать инструментарий, начну с _увеличения_ числа альтернатив за счёт правки статов (и принадлежности) нейтралов и вноса их в города (ну там, воров-разбойников в Замок…).


Исходники от MoP используй - там можно хоть все города забить альтернативами (только перекос в балансе от этого будет катастрофический, поэтому мне хватило установки по 1 альтернативы на город), создавать для этого инструментарий для моддеров не требуется: кто захочет - сможет разобраться в том что есть, т.к. данные исходников содержат комментарии, по которым не сложно понять о том, где что и куда менять (по адресам из исходников можно управлять альтернативами через ERM, если кому-то слишком сложно делать через exe напрямую).

Цитата(Лорд Хаарт @ 28 Sep 2016, 09:54) *
P. S. Кстати, а как в редакторе существ портрет существа менять? Не очень понял на этот счёт — есть только поле для боевого дефа, но он разве портрет включает?


Папка "pic", формат JPG. Имя = id монстра. Естественно, что там портрет заменится только в редакторе. В самой игре - по старинке.
MasterOfPuppets
Плохая идея. Исходники проекта невозможно использовать, пока он развивается. К тому же, я не кладу в патчи обновлённые версии сорцев, это будет сделано лишь в финальном фиксе Battery. Что получит Лорд Хаарт, если перекомпилирует WERD и mop.bak на свой лад? Неисправленную версию от восьмого сентября, тупиковую ветвь эволюции, несовместимую с любым вышедшим патчем. Оно надо?
MasterOfPuppets
Цитата(Лорд Хаарт @ 28 Sep 2016, 10:54) *
Я не знаю, почему сам ты потерял интерес к альтерветкам (и было бы интересно узнать),

Причина 1: стартовые армии героев. Непонятно, что с ними делать. Кто-то предлагает конвертёр, кто-то - автозамену (где? когда?), но при этом надо ещё думать о ИИ, да и всё равно все варианты костыльны. В принципе, это не такая уж большая проблема, "не та" стартовая армия просто используется в качестве единичек, отвлекающих стрелков, и постепенно уничтожается либо продаётся на Кресте Бафомета на пользу "той самой" армии.
Причина 2: в рандоме невозможно предугадать, каких внешних жилищ рядом с замком будет больше - основных или альтернативных. Выбрав не ту ветвь, потом можно крепко пожалеть. К тому же, даже если альтернативы выключены, эти фактически нейтральные жилища мешают появлению тех, что нужно.
Причина 3 (главная) - альтерветки очень трудно сбалансировать. А из-за человеческого фактора они создаются несколько более мощными, чем оригинальные существа ("добавлю-ка я в свою любимую башню снежных кошек, достали эти неповоротливые големы" - это я про себя). В итоге теряется сам смысл понятия "альтернатива".

Цитата(Лорд Хаарт @ 28 Sep 2016, 10:54) *
но трудно спорить, что удачное их исполнение — одна из фишек мода, как и редактор городов/существ.

Спасибо на добром слове.
Я подумаю, что можно сделать со специализациями, сейчас они вообще не предполагают возможности изменения.
Haart of the Abyss
Ага. Вопрос, собственно, не о том, что я могу замоддить со внешними инструментами, компилятором, декомпилятором (ну для патчей) и напильником - а о том, как развивать встроенный юзер-френдли инструментарий мода.

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


Я не имею права требовать от Мастера - "встроил инструментарий, теперь допиливай его" - но инструментарий, превосходящий копание в ресурсах и исходниках и по совместимости, и по доступности/порогу вхождения (что таки тоже фактор) - положительная фишка, и чем он полнофункциональнее, тем приятнее он для той части игроков, которой приятно им пользоваться, так что его поддержке я буду рад.

Upd. Отвечал до твоего второго ответа, а сейчас уже из метро выбегаю.
XEPOMAHT
Цитата(Лорд Хаарт @ 28 Sep 2016, 11:51) *
Может, я хочу карту под МоП сделать? Да ещё и, страшно сказать, сюжетную? Про новую Финаксийскую империю? И мне хочется, чтобы игрок играл с определёнными настройками монстров и городов - чтобы грифонятня строилась без ГМ, а в башне лучников нанимались воры?


В MoP вроде бы не была отрублена поддержка встроенных вог-скриптов пользовательских карт. Написание скриптов в редакторе карты наверное единственное решение в данном случае, так же как это делали картоделы в WoG.
SerAlexandr
Цитата(MasterOfPuppets @ 27 Sep 2016, 16:49) *
Пройдёт.

А может быть это не есть хорошо и стоит выдавать пресловутое "Заклинание не подействует ни на кого"? Каст же теряется... И мана.
MasterOfPuppets
Цитата(Лорд Хаарт @ 28 Sep 2016, 12:51) *
Ага. Вопрос, собственно, не о том, что я могу замоддить со внешними инструментами, компилятором, декомпилятором (ну для патчей) и напильником - а о том, как развивать встроенный юзер-френдли инструментарий мода.

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


Я не имею права требовать от Мастера - "встроил инструментарий, теперь допиливай его" - но инструментарий, превосходящий копание в ресурсах и исходниках и по совместимости, и по доступности/порогу вхождения (что таки тоже фактор) - положительная фишка, и чем он полнофункциональнее, тем приятнее он для той части игроков, которой приятно им пользоваться, так что его поддержке я буду рад.

Upd. Отвечал до твоего второго ответа, а сейчас уже из метро выбегаю.

По идее, картодел, если хочет расширенных возможностей, должен будет к карте прилагать DLL с таким же названием и экспортируемой процедурой CallWerdTrigger, WERD её подрузит и внесёт необходимые изменения при старте карты. Но ничего этого пока не сделано, потому что сама картина того, как картоделы будут писать WERD-плагины, кажется трудновообразимой.
Цитата(XEPOMAHT @ 28 Sep 2016, 13:06) *
В MoP вроде бы не была отрублена поддержка встроенных вог-скриптов пользовательских карт.

А вот этого я и сам не помню. Вроде всё отрубал. В любом случае, даже включенный, ERM в MoP будет колченогий. Ну !!MA, допустим, будет работать, потому что я сам её адаптировал для первой версии мода, ещё пользовавшейся ERM. То же с !!UN:A и большинством команд. Но вот под новые заклинания команды вообще не правились, так что !!BM:G, !!HE:M и !!UN:J0 явно в пролёте.

Цитата(SerAlexandr @ 28 Sep 2016, 13:09) *
А может быть это не есть хорошо и стоит выдавать пресловутое "Заклинание не подействует ни на кого"? Каст же теряется... И мана.

Скорее всего, добавлю проверку на флаг и действие Кольца Левитации, чтоб не возникало вопросов.
MasterOfPuppets
Интересненькое дело: чтобы запретить колдовство Притяжения впустую (если нет подходящих существ) на любом уровне колдовства - надо выставить ему флаг "Массовое на эксперте". Ну или "Цель - отряд".
Ладно, ввёл для него индивидуальную проверку, чтобы и оставить массовость на любом уровне школы, и корректно запрещать колдовство, если нет никого подходящего.
MasterOfPuppets
Кстати, о картодельстве. Буквально вчера в группе у нас объявился мапмейкер и выложил две большие карты, адаптированные им под MoP. Адаптированные - да не совсем. Ничего пока об этих картах сказать не могу, так как не помню, когда в последний раз проходил авторку, да и времени нет сейчас на это. Тем не менее, я проведу анализ на совместимость, исправлю типы и подтипы объектов и включу эти карты в ближайший патч - пусть игроки потестят.
Sandris
Что сделать, чтобы в Тавернах появлялись только герои фракции (как для людей, так и для ИИ) ?
MasterOfPuppets
Эмм, плагин сделать. Хотя два героя одной фракции в Таверне не всегда ведь возможны.

Решено: в следующий патч будет добавлен Framework (среда разработки) WERD-плагинов. Таковой присутствовал в закрытой бета-версии, но был удалён в релизе из-за того, что для его развития потребуется много данных и нормальное оформление команд. Что ж, будем развиваться постепенно. Если уж в исходниках WERD люди разбираются, то чего бы плагины не забацать? Говорят, каков бы ни был язык, если человеку сильно надо - он напишет код.
В зависимости от того, где будет находиться плагин - в папке "Plugins" или "MoP_Maps", он будет работать для всей игры или для конкретной карты (для этого плагин должен иметь такое же название). В остальном никакой разницы не будет.
Коли MoP всё больше сравнивают с новым WoG - пойдём навстречу и дадим кое-какую замену ERM.
Haart of the Abyss
Цитата(XEPOMAHT @ 28 Sep 2016, 13:06) *
В MoP вроде бы не была отрублена поддержка встроенных вог-скриптов пользовательских карт. Написание скриптов в редакторе карты наверное единственное решение в данном случае, так же как это делали картоделы в WoG.



Цитата(MasterOfPuppets @ 28 Sep 2016, 13:26) *
По идее, картодел, если хочет расширенных возможностей, должен будет к карте прилагать DLL с таким же названием и экспортируемой процедурой CallWerdTrigger, WERD её подрузит и внесёт необходимые изменения при старте карты. Но ничего этого пока не сделано, потому что сама картина того, как картоделы будут писать WERD-плагины, кажется трудновообразимой.



Цитата(MasterOfPuppets @ 28 Sep 2016, 22:03) *
Решено: в следующий патч будет добавлен Framework (среда разработки) WERD-плагинов.

Картина возможная, но действительно требующая от картодела хорошо разобраться (подобно ЕРМ-скриптам и, насколько я понимаю, пока что даже оккультнее хотя бы из-за меньшего объёма доступной документации и примеров); и хотя превращение плагинов во что-то доступное — инициатива крутая, она больше того, о чём я спрашивал (и мне видится весьма масштабной по объёму требуемых работ, если по уму делать). Я мыслил менее масштабно — в целом вёл речь не об аналоге полностью скриптованных ЕРМ-карт Вога, а скорее о "просто сюжетных" картах, аналогичных по общему ходу игры Дыхательским (с возможностями МоПа, естественно), но с донастройкой с помощью редакторов городов/существ, передающейся по принципу "картодел у себя поковырялся в редакторе, получил нужный файл настроек, включил в комплект с картой", что требует на порядки меньше усилий и от картодела, и от конечного юзера.
MasterOfPuppets
Да тут тоже не будет никаких проблем. Достаточно будет в плагине указать путь к файлу настроек и вызвать функцию, причём в любой момент игры. Типа: LoadMonstersSetup "MoP_Maps/MyMonSetup.mop".

Касательно возможностей. Вот накарябал простейший рабочий пример:

Код
include '..\WERD\header.asm'

_MapInstruction
        Message MyString, Type_Msg_MES, Pic_MoP, Pic_Древо_Знаний

_RightMouseClickOnAdvMap
        Message "Big Brother is watching you!", Type_Msg_MES, Pic_Art, ART_Глаз_Наблюдателя

_LeftMouseClickOnAdvMap
     .if [MyData] <> 0; если сообщение до этого не было показано
        DisableClick
        Set MyData, 0; больше не показывать
        Message "Уху-ху-ху! Сейчас я сделаю Дьяволов непобедимыми!", Type_Msg_MES, Pic_MoP, Pic_Бродячий_Волшебник
        Set MyVar, 666
        SetMonParam CR_Дьявол, Здоровье, 1000000,\
                    CR_Дьявол, Атака, [MyVar],\
                    CR_Дьявол, Защита, 1000
     .endif

_RightMouseClickOnAdvMap
        Message "Back to School...", Type_Msg_MES, Pic_Art, ART_Диплом_Магистра, Pic_MoP, Pic_Big_Книга_Мудрости_Астих_ду_Нила
        ret; завершить обработку кода данного триггера для данного плагина

_RightMouseClickOnAdvMap
; это сообщение не будет показано, так как триггер завершился
        Message "Kill` Em All!", Type_Msg_MES, Pic_Art, ART_Клинок_Армагеддона

END_CODE

; DATA
MyString db 'Hello, World', 0

SAVE_DATA:
MyData dd 1; инициализирована для первого показа сообщения
END_SAVE_DATA:

; Global Variables
Dword MyVar


Что здесь к чему.
- Любой WERD-плагин прежде всего начинается с заголовка include '..\WERD\header.asm', иначе это не плагин. Файл header.asm - это каркас DLL.
- Далее идут триггеры, обозначенные как _MapInstruction, _RightMouseClickOnAdvMap, _LeftMouseClickOnAdvMap и т. д. Если мнемоника триггера не нравится, пользователь может её переопределить в начале текста. Например, любитель ERM может написать "!?CM fix _RightMouseClickOnAdvMap" - и всё, пользоваться ради бога знакомой ему мнемоникой !?CM. При этом старая мнемоника никуда не денется.
Триггеры располагаются в произвольном порядке и могут повторяться.
- После каждого триггера идут команды. В образце представлены Message (показ сообщения), DisableClick (отключить стандартную реакцию при клике), Set (установка переменной), SetMonParam (установить параметр монстра).
- Если триггер завершить командой ret, то другие аналогичные триггеры в этом плагине не сработают.
- END_CODE - конец секции кода. Обязательная строка.
- ; DATA - вообще-то это комментарий, но он написан для указания того, что после кода идут инициализированные пользователем данные плагина - строки, таблицы, что угодно. Впрочем, как видим, строки можно пропускать в функцию и непосредственно.
- SAVE_DATA, END_SAVE_DATA - между двумя этими метками располагаются данные, которые требуется сохранить в игре для данного плагина. Если ничего не надо - можно убрать. Секция сохранения специально располагается между данными и глобальными переменными, чтобы можно было сохранить и то, и другое.
- ; Global Variables - тоже комментарий, указующий на то, что в конце плагина идут глобальные переменные.

Естественно, обработка плагина происходит после WERD, так что он может отменять вносимые ею изменения.
Любые константы тоже можно легко переопределять. Например, написать команду: ART_Глаз_Наблюдателя = EyeOfTheBeholder. Всё, ещё одно имя для артефакта-166.

Что конкретно происходит в этом плагине для игрока - наверное, уже понятно. Но на всякий случай объясню.
На старте карты видим это сообщение:

При ПКМ на карте видим эти сообщения:


При ЛКМ на карте видим всего один раз это сообщение

после чего Дьяволы получают миллион здоровья, 666 Атаки и 1000 Защиты.
Haart of the Abyss
Цитата(MasterOfPuppets @ 28 Sep 2016, 12:50) *
Причина 1: стартовые армии героев. Непонятно, что с ними делать. Кто-то предлагает конвертёр, кто-то - автозамену (где? когда?), но при этом надо ещё думать о ИИ, да и всё равно все варианты костыльны. В принципе, это не такая уж большая проблема, "не та" стартовая армия просто используется в качестве единичек, отвлекающих стрелков, и постепенно уничтожается либо продаётся на Кресте Бафомета на пользу "той самой" армии.
Помимо очевидных вариантов (конвертация всякая) — предложу, как мне кажется, самый изящный в отношении ИИ: пусть каждый игрок-компьютер на старте карты (или при воскрешении, если это "мёртвый" игрок возродился — эта фича осталась в моде, да?) делает выбор альтернатив за каждый замок в игре, получает соответствующие варианты жилищ в свои стартовые замки и соответствующих существ в армии героев, и в дальнейшем строит в подконтрольных городах только выбранные ветки. Это позволяет АИ не слабеть от дробления и даёт неплохое приближение к вероятному поведению игрока-человека.

В отношении игрока-человека проблему составляют только первый и второй уровни (но как минимум на второй лично я альтернативы ставить хочу, так что права не решать её это не даёт); и тоже не смертельную, учитывая, что в таверны и так приходят герои с "чужими" войсками и дисперсия между Цитаделью, у которой у стартового героя волки, а в таверне боровы, и Цитаделью, которой пришли только волки (или только боровы) — не сильно выше дисперсии между Цитаделью в СоДе, которой в таверну пришли два родных героя, и Цитаделью, куда пришёл один родной и один еретик (или вообще некромант). В худшем случае (хочется играть через одну ветку, все стартовые войска принадлежат другой) игроку добавляется выбор — собирать многочисленный кулак из городских войск неприятной ему ветки+стартовых войск этой ветки или малочисленный кулак только из приятной ему ветки, прикрытый "неприятными" стартовыми войсками; не уверен, что это так плохо.

Цитата
Причина 2: в рандоме невозможно предугадать, каких внешних жилищ рядом с замком будет больше - основных или альтернативных. Выбрав не ту ветвь, потом можно крепко пожалеть. К тому же, даже если альтернативы выключены, эти фактически нейтральные жилища мешают появлению тех, что нужно.
Если это серьёзная проблема (спавн "своих" внешних жилищ, а не нейтральных, вроде бы и так не гарантирован, а жилища альтерветки вряд ли хуже нейтральных; ну и да, полезностьразведкиБашнясобзорнойбашнейопятьрулит; но я недостаточно шарю, чтобы адекватно оценить роль этого фактора) — то можно к переключателю улучшенных/неулучшенных существ во внешних жилищах (тоже решение похожей проблемы, я полагаю?) добавить переключатель альтерветок.

Цитата
Причина 3 (главная) - альтерветки очень трудно сбалансировать. А из-за человеческого фактора они создаются несколько более мощными, чем оригинальные существа ("добавлю-ка я в свою любимую башню снежных кошек, достали эти неповоротливые големы" - это я про себя). В итоге теряется сам смысл понятия "альтернатива".
А вот это — с одной стороны, очень мощный аргумент, с другой, зависит от того, кто делает: тот, кто этих же существ добавлял (скажем, ты) или тот, кто играется с перетасовкой уже имеющихся в игре, чтобы они плотнее вошли в игровой процесс в виде альтернатив (скажем, я). У второго подверженности фаворитизму будет меньше, мне кажется; желания постоянно использовать альтернативы, когда я их запилю, у меня нет — отчасти даже наоборот, всё-таки оригинальный графон приятнее глазу, а альтернативы пускай армии компа разнообразнее и непредсказуемее делают. Если ты не возражаешь — я потом поделюсь результатами, вдруг подаст идеи.

Големы не так уж слабы, чтобы однозначно проигрывать более быстрым существам. Кто играл в Герои 2, очень мотивирующие присмотреться и к троечным големам в новом свете (как минимум дать им шанс) — может заметить, что и в тройке они одни из лучших существ третьего уровня по тем статам, которые не скорость. В ситуациях, когда она не проблема (а это не только гарнизонные бои, но даже ранние или дополнительно-зачисточные армии из мастер-гремлинов+улучшенных големов), можно ВДРУГ заметить, что с уроном как у грифонов и малой подверженностью сокращению размера стека они могут вламывать, вламывать и вламывать… В Дыхании/Хоте, по крайней мере, в МоПе пока не распробовал (но распространение существ с боевыми заклинаниями может им скорее на пользу сыграть).
Так что более хлипкие, но быстрые кошки — не такая уж однозначная альтернатива. Разве что с уроном ты немного перебрал… *смотрит на кошек внимательнее, чем когда первый раз их обкатывал* Окей, ты дохрена перебрал с уроном, у половины четвёртого уровня он меньше при меньшем приросте. -.- На пять ХП меньше, чем у големов, не компенсируют в два раза больший урон, чем у них же, когда он у них для своего уровня и так большой (равный по среднему значению с грифонами и уступающий только ледяным элементалям… У которых он тоже ниже кошачьего).
Но это фиксится. Просто не перегибай так. У меня в таких случаях обычно как раз инстинкт — смотреть на аналоги (здесь — существ того же уровня из разных замков; у кошек урон архимагов получился вместо адекватного уровню) и не выделяться на их фоне. И у тебя все остальные альтернативы, кроме, возможно, ещё гиппогрифов (которые частично балансируются тем, что обречены чаще монахов оказываться главной целью и больше дохнуть), на уровне (папонты и кошмары так даже умудрились попасть лично для меня в категорию "слабы по статам, в большинстве случаев играть через них не стоит").




---
Вопросы по функционалу донастройки:
— Отражается ли изменение стоимости построек в редакторе городов на стоимости возведения нового города в игре?
— Отражается ли изменение фракции и уровня существ в редакторе существ на их спавне в смешанных группа нейтралов? (грубо говоря — если я поставлю грифонам шестой уровень Оплота, они будут спавниться с зелёными драконами или с рыцарями?)
---
Мелкий баг, в котором я могу ошибаться: вроде бы колдовство Лепреконов игнорирует иммунитеты союзных существ. Зелёные драконы под Удачей у меня сейчас стоят.
---
Кстати, почему горгоны, змии и василиски перепутались местами? Проводилась какая-то работа с какими-то их свойствами (ульи?), потребовавшая перестановки их ID в качестве воркэраунда?


Цитата(XEPOMAHT @ 28 Sep 2016, 12:09) *
можно хоть все города забить альтернативами (только перекос в балансе от этого будет катастрофический, поэтому мне хватило установки по 1 альтернативы на город)

А в чём обязательный перекос в балансе, если не секрет? Что он весьма вероятен — я в курсе, ибо человеческий фактор, но принципиален ли?
MasterOfPuppets
Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
пусть каждый игрок-компьютер на старте карты (или при воскрешении, если это "мёртвый" игрок возродился — эта фича осталась в моде, да?) делает выбор альтернатив за каждый замок в игре, получает соответствующие варианты жилищ в свои стартовые замки и соответствующих существ в армии героев, и в дальнейшем строит в подконтрольных городах только выбранные ветки. Это позволяет АИ не слабеть от дробления и даёт неплохое приближение к вероятному поведению игрока-человека.

Так фактически и происходит, только армии те же:
Цитата(Manual)
Прирост альтернативных существ в городе увеличивается их собственными внешними жилищами.
ИИ выбирает стандартных или альтернативных существ случайным образом лишь единожды — при первой постройке определенного здания в городе определенного типа — и в дальнейшем придерживается своего выбора всю игру. Вероятность выбора альтернативы — 50%.
В городах, установленных с помощью редактора карт, альтернативы могут с вероятностью в 50% заменить стандартных существ в уже построенных жилищах. При этом одна и та же ветвь развития будет выбрана во всех городах одного типа, принадлежащих одному и тому же игроку. В нейтральных городах остаются стандартные существа.


Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
— Отражается ли изменение стоимости построек в редакторе городов на стоимости возведения нового города в игре?

В TwEdit нет возможности изменения цен построек. Я хотел это сделать, но вспомнил, что цены на основные строения едины для всех городов. Пришлось бы делать для каждого свои, опять перелопачивать exe -> стало лень. Тем более, что редактировать через текстовики можно.
Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
— Отражается ли изменение фракции и уровня существ в редакторе существ на их спавне в смешанных группа нейтралов? (грубо говоря — если я поставлю грифонам шестой уровень Оплота, они будут спавниться с зелёными драконами или с рыцарями?)

Да, конечно, влияет. Будут с драконами.
Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
Мелкий баг, в котором я могу ошибаться: вроде бы колдовство Лепреконов игнорирует иммунитеты союзных существ. Зелёные драконы под Удачей у меня сейчас стоят.

Действительно, странно. Сменил им тип колдовства со "случ. дружественного" на просто "дружественное" - теперь нормально. Тип заклинания остался случайным их трёх.
Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
Кстати, почему горгоны, змии и василиски перепутались местами? Проводилась какая-то работа с какими-то их свойствами (ульи?), потребовавшая перестановки их ID в качестве воркэраунда?

Это не я их переставил, а разработчики. К счастью, на ID ничего не завязано.
MasterOfPuppets
Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
Так что более хлипкие, но быстрые кошки — не такая уж однозначная альтернатива. Разве что с уроном ты немного перебрал… *смотрит на кошек внимательнее, чем когда первый раз их обкатывал* Окей, ты дохрена перебрал с уроном, у половины четвёртого уровня он меньше при меньшем приросте. -.- На пять ХП меньше, чем у големов, не компенсируют в два раза больший урон, чем у них же, когда он у них для своего уровня и так большой (равный по среднему значению с грифонами и уступающий только ледяным элементалям… У которых он тоже ниже кошачьего).
Но это фиксится. Просто не перегибай так.

Блин, я знал, что перебрал, но не думал, что настолько! Срочно понижаю им в патче урон до 5/5 и 5/6, а скорость обоим снижаю на 1 пункт.
Цитата(Лорд Хаарт @ 30 Sep 2016, 02:51) *
У меня в таких случаях обычно как раз инстинкт — смотреть на аналоги (здесь — существ того же уровня из разных замков; у кошек урон архимагов получился вместо адекватного уровню) и не выделяться на их фоне. И у тебя все остальные альтернативы, кроме, возможно, ещё гиппогрифов (которые частично балансируются тем, что обречены чаще монахов оказываться главной целью и больше дохнуть), на уровне (папонты и кошмары так даже умудрились попасть лично для меня в категорию "слабы по статам, в большинстве случаев играть через них не стоит").

Лучше всего была сбалансирована первая альтернатива: Ифриты <-> Пожары. При этом характеристики оригинальных существ брались за эталон, а альтернативных - подстраивались, их приходилось много раз снижать, потому что Пожары и Кошмары в WoG дико сильные. Проводились бои 1 на 1, 10 на 10, 100 на 100 и 1000 на 1000 - с одинаковыми параметрами бьющихся героев. Когда исход битвы стал совершенно непредсказуем, а победа - пирровой, тогда и прекратилась балансировка. НО! Всё это было до того, как я дал Ифритам-Султанам мощнейшую абилку - колдовать огненные заклинания. В RtL они колдовали трижды и были абсолютно невыносимы. Ни с какой армией я так не боялся встретиться, как с армией Инферно. Этот страх остался и сейчас, несмотря на то, что Султаны колдуют теперь лишь единожды за битву, а против безответности многих инферналов появилось противоядие в виде Экспертной Боевой Подготовки.
Кстати, добавление всем юнитам Инферно встроенной защиты от огня заметно повлияло на учащение колдовства его ИИ-героями площадных огненных заклинаний, в частности - Армагеддона. Расовая фишка и расовая магия - это, думаю, хорошо.

_______________

Сделал подгрузку плагина для определённой карты. Инициализация его происходит при старте карты и загрузке сейва. При этом проверяется наличие дескриптора возможно уже загруженной библиотеки (от этой или другой карты), если он уже есть - то удаляется с помощью FreeLibrary, затем грузится нужный. Так что можно апдейтить плагин без необходимости начинать игру заново (если переделка не меняет формат сохранения). Осталось сделать сообщение об отсутствии библиотеки, если сейв есть, а плагин карты куда-то подевался.
Удалил из условий компилирования константу LOAD_USER_PLUGINS - теперь плагины всегда грузятся. Система рассчитана на 1 WERD-плагин карты, 1000 WERD-плагинов из папки Plugins (все - для любой карты) и практически неограниченное количество обычных плагинов.
Sandris
Всплыло два вопроса:

1. Как добавить в Менеджер Портретов новые портреты героев (помимо тех, что уже присвоены). Попробовал включить в mop.lod и h3mopRUS.lod новые портреты с номерами от 156 и выше (mophl/s/x156...157...158...) - в Менеджере они не появились.

2. Как менять пол героя. К примеру, чтобы специализация "Джинны" была не у женского (как по умолчанию), а у мужского персонажа.
MasterOfPuppets
1. В мануале всё подробно расписано.
2. Либо через редактор карт, либо патчинг exe, либо плагин.
igrik
Цитата(MasterOfPuppets @ 29 Sep 2016, 08:25) *
Да тут тоже не будет никаких проблем. Достаточно будет в плагине указать путь к файлу настроек и вызвать функцию, причём в любой момент игры. Типа: LoadMonstersSetup "MoP_Maps/MyMonSetup.mop".
Касательно возможностей. Вот накарябал простейший рабочий пример:

MoP, и раскажи еще для нубов, таких как я в этом деле:
1. Как закомпилировать приведенный тобой код.
2. Как ты определяешь адрес куда вносить и как переводить в машинный код например "JLE MoP.005EE5F4"?
Код
1EE567 0F8E87000000;        JLE MoP.005EE5F4

Мне интересно - находишь ли ты пустые места (или освобождаешь) в exe, или ты как бы расширяешь свой exe. Или еще что-то, что например лично я не понимаю.
MasterOfPuppets
1. Завтра, скорее всего, выйдет патч с фреймворком. Вот там и можно будет скомпилировать. Для карты от Сергея Пеньшина уже готов демонстрационный плагин с кастом-диалогом, анимацией, звуками и нестандартными картинками в сообщениях. Исходник приложен.
2. Всё очень просто - OllyDbg. Ставлю breakpoint-ы на код или дамп, изучаю. Потом пишу правку в той же Олли, копирую как текст в Блокнот, правлю адреса под exe и получаю патч. Идой пользуюсь крайне редко, не для меня она...
Расширением exe я занимался на раннем этапе, поэтому MoP.exe больше по размеру, чем ТЕшный - в нём две дополнительные секции. В них есть немножко кода и данных, но я давно туда ничего не добавлял - по той причине, что открыл в exe поистине безграничные возможности по сдвигу и сокращению кода, в результате чего освобождаются многие килобайты пространства, чего мне с лихвой хватает. Посмотри в исходниках NOPS.txt - это запас мода на случай модификаций exe. А Reductions(1,2,3) - то, как эти нопы были добыты.
Sandris
Интересный баг) Стоит Колада в портале с моей стороны. Нападаю, убиваю. Она никуда не пропадает, но и не перемещается по карте, остается стоять все там же без армии. Нападал на нее еще раз 10 - все то же самое, после поражения она не двигается, сражается одним вором. Причем герои ИИ другой фракции свободно бегают через этот портал в обе стороны, как если бы ее там не было.

Другой баг - случайно зашел героем на Арену, которую ранее уже посещал (повторное получение опыта отключено). Герой стоит на клетке с Ареной, нажимаю на него (курсор со шлемом) - вылет из игры.

Сейв:
http://zalil.su/8813212

Краш-репорт:
igrik
Ну так а где сейвы?
Смысл от такого багрепорта.
Sandris
Цитата(igrik @ 02 Oct 2016, 10:03) *
Ну так а где сейвы?
Смысл от такого багрепорта.

Добавил.
MasterOfPuppets
Цитата(Sandris @ 02 Oct 2016, 11:01) *

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


MoP Patch v.3.04

! ВНИМАНИЕ: изменён формат сохранений ! Прежде чем устанавливать патч, строго рекомендуется завершить начатые игры !
[–] Исправлен баг оригинальной игры: если в городе нажать кнопку «Разделить существ», а потом попытаться перейти в другой город в списке — следовал вылет.
[–] Исправлен баг оригинальной игры: не тот def кнопки «Отмена» в диалоге разделения отряда.
[–] Исправлен баг: после поиска локаций на карте для возведения города сохранялась остаточная информация о том, что герой должен построить город.
[–] Притяжение теперь колдуется только на летающих существ или тех, что находятся под действием Кольца Левитации.
[–] Из крэшлога убрана строка "The Latest Executed ERM Receiver", ненужная в связи с отсутствием в моде ERM.
[–] Убрано запрет и сообщение WoG по ПКМ на кнопке «Защита» (в режиме нападения ИИ на человека) о том, что выбор режима для существа невозможен в битвах Human vs. Human.
[–] Клавишу «Q» больше нельзя активировать в битве Human vs. Human.
[–] Заклинания Лепрекона игнорировали некоторые иммунитеты существ.
[*] Детёнышам драконов запрещено получать опыт в Доме Ветеранов. Формальное объяснение — они ещё маленькие, практическое — с учётом того, что по достижении ранга «ас» детёныши автоматически эволюционируют во взрослые особи, такой способ получения драконов обходился в разы дешевле, чем в Форте-на-Холме.
[*] Урон Снежных и Ледяных Кошек снижен до 5-5 и 5-6 соответственно, скорость — до 7 и 8.
[*] Заменена графика Ящика Пандоры.
[+] Добавлен Framework – среда разработки WERD-плагинов, открывающих новую эпоху в развитии мода. Функционал пока очень сырой, документация отсутствует. Тем не менее, минимум, что может сделать рядовой пользователь — подгрузить свои собственные настройки существ/заклинаний/городов — как для игры в целом, так и для определённой карты (плагин игры должен находиться в каталоге Data/MoP/Plugins, плагин карты же должен иметь то же название, что и файл карты, и находиться с ним в каталоге MoP_Maps). Опытные же программисты хоть сейчас могут создавать продвинутые плагины, до неузнаваемости меняющие игру.
Папка «Framework» располагается в папке «Plugins», внутри же неё находится папка «USER», где лежат два демонстрационных примера-исходника.
[+] Добавлены три авторские карты от Сергея Пеньшина. К первой из них (World Enrot. War of the Continent. MoP v1.0) прилагается демонстрационный WERD-плагин, эффект которого можно увидеть сразу же в начале игры — звуки, анимация, прочие штучки-дрючки. Также этот плагин использует свои настройки существ, заклинаний и городов из папки с аналогичным карте названием.
Sandris
Цитата(MasterOfPuppets @ 02 Oct 2016, 14:55) *
Цитата(Sandris @ 02 Oct 2016, 11:01) *

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


В сейве игры оба бага - В подземелье в портале безвылазно "застряла" Колада, а при нажатии ПКМ на самой карте на любом из моих героев происходит вылет. Версия игры 3.03.
MasterOfPuppets
Цитата(Sandris @ 02 Oct 2016, 18:36) *
при нажатии ПКМ на самой карте на любом из моих героев происходит вылет. Версия игры 3.03.

Вот я и говорю - это тот же баг, что у Лорда Хаарта. В 3.04 вылечен.
С порталами надо посмотреть. Замечание не первое.
Iv
Цитата(Лорд Хаарт @ 28 Sep 2016, 09:54) *
те же разбойники — первый удар-возвратный пехотинец, интересная и относительно новая тактическая ниша, но смотреть на них очень неудобно;

Именно про новый деф для них я просил ещё N месяцев назад у Axolotlя, когда он спрашивал, какие новые монстры нужны.
Etoprostoya
Набрёл сегодня на одну раздачу, вспомнил про форум.
fireman
Etoprostoya, как-то очень плохо оформлена
baratorch
реквестирую МОР в. 4 совместимый с ХД
для совместимости с ХД и вообще с любыми другими сторонними модами нужно соблюдать ряд принципов:

1. в код игры писать только джампы или патчи существующих операндов-констант. Нет никаких причин писать что-то другое в код игры а не в длл.
поэтому существующий код мопа весь нужно поместить в длл. Следуя этому принципу не будет смысла двигать оригинальные функции по экзешнику (т.е. менять их адреса. Что, очевидно, крайне критично для совместимости).

2. стараться использовать тот же метод изменения (расширения) функционала, что используется при сабклассинге окон в WinApi
для этого лучше всего подходит сплайсинг функций, с вызовом засплайсенной функции внутри нашей.
т.е. имеем ... OriginalFunc(...) в коде героев.
ставим на нее сплайс хук, котрый выполняет нашу ... OurNewFunc(...) вместо ... OriginalFunc(...)
внутри же ... OurNewFunc(...) должна выглядеть в общем случае так:
... OurNewFunc(...)
{
// код
// вызов DefaultFunc(...) - вызов засплайсенной функции. DefaultFunc == OriginalFunc, если наш сплайс хук единственный на эту функцию, но если другой мод (или наш но в другм месте) засплайсил эту функцию раньше нашего то DefaultFunc должна быть == "PreviousNewFunc"
// код
}
patcher_x86 предоставляет инструмент - HiHook для удобной реализации такого метода модинга.
Этот метод модинга, к примеру, максимально подходит для расширения функционала окон: Если каждый мод добавляет по кнопке в окно, то в итоге мы видим окно со всеми добавленными кнопками.

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

4. В той или иной мере использовать pather_x86.dll
Вот, ты, MoP как-то спрашивал, нафига тебе патчер, если ты пишешь на асме.
Если не заботиться о совместимости со сторонними разработками, то, действительно, без него можно обойтись.
А так он кроме прочего фиксирует постановку всех патчей(/хуков) сделанных через себя и позволяет посмотреть дамп и лог патчей.
Дамп - это карта всех наложенных патчей, с указанием их адресов, размеров, типов и, что очень важно, собственников патчей.
при этом отражена очередность применения, т.е. если несколько патчей/хуков наложены в одно и то же место, мы это видим.
причем в логе и (начиная с версии патчера 4.0) в дампе отмечаются потенциальные несовместимости, когда патчи наложены друг на друга со смещением (не совпадают адреса или размеры) или когда не совпадают по типу, например на определенный адрес сначала поставлен хук (т.е джамп куда-то) а следом туда же поставлен патч операнда-константы оригинальной команды)
Пример: мод1 работает отлично, мод2 работает отлично, вместе - не работают (краш где-нибудь). Смотрим дамп, и сразу видим ГДЕ (вероятная) проблема. Это крайне удобно.
Т.е все патчи(/Хуки) нужно писать как минимум с помощью WritePacth (ну и WriteByte, WriteWord, WriteDword и WriteJmp), чтобы было видно куда вообще моп пишет.
Но мне кажется и HiHook ( и даже LoHook) патчера вполне пригодны для использования и с ассемблером. Т.к. во-первых позволяют автоматизировать процесс и не париться о том какой именно код они затирают при необходимости его выполнить. Если их не использовать, то нужно либо написать самому подобную функциональность, либо использовать индивидуальный подход к каждому месту, куда устанавливается хук, а не универсальный, что трудо-время-затратнее.
А во-вторых мы через патчер можем делать то, что вообще практически невозможно или весьма проблематично без него.
Например, на один адрес наложено 4 хука один поверх другого - с помощью патчера мы можем вызвать DefaultFunc любого из этих хуков. Мы можем отменять одни патчи, наложенные на один адрес, не трогая других. Так же мы можем обратиться к определенному хуку определенного мода, или менять поведение нашего кода в зависимости от того кто хозяин опредеоленного патча/хука.
Конечно без этого "во-вторых" вполне можно жить, но если вдруг понадобиться что-то такое, то вот оно - есть.

Благодаря патчеру и принципам модинга, к которым он обязывает, Sav, делая хоту и я, делая ХД, крайне редко взаимодействуем друг с другом по вопросам совместимости. Т.е. я смотрю код хоты, а сав код хд в крайне редких, исключительных случаях. И мой код в ХД в большинстве случаев вообще одинаков для Сод и Хота.

В текущем варианте Моп несовместим даже с графическими режимами ХД (даже с самыми простыми) и модными фильтрами, хотя в них хучатся в основном методы DirectDraw и по минимуму функции самих героев. Ибо даже тут ХД спотыкается о сдвиги оригинальных функций внутри кода и еще невесть обо что.
MasterOfPuppets
baratorch, мне давно понятна суть твоего патчера, и что для него, в принципе, неважно, на каком языке написан патч. Это замечательная вещь, кто бы спорил. И я был бы рад использовать её, но время - против. MoP был катастрофически несовместим с HD ещё тогда, когда и патчера не существовало. Теперь ситуация только осложнилась. На вынос всех модификаций exe в отдельную библиотеку уйдёт не один месяц, потребуется переделка Werd.dll, Drew.dll и ещё некоторых специальных файлов. Всё это задача для человека с кучей свободного времени, которым я не располагаю. К тому же, при подобных масштабах (а это фактически переделка заново ВСЕГО многолетнего труда) как пить дать от невнимательности повылезают глюки, которых придётся лечить ещё долгое время. Не нравится мне такая перспектива.
К тому же, думается, совместимость с HD одним лишь изменением метода модификации - не гарантирована.
Вот за что ещё я мог бы взяться - адаптировать HD под MoP, а не наоборот. Да и то не полностью - нужно чисто разрешение экрана, что-то сверх этого только породит конфликты.
MasterOfPuppets
Таки наскребли.

MoP Patch v.3.05

[–] Исправлена ошибка WERD-плагинов: перед вызовом процедуры CallWerdTrigger не сохранялся регистр ESI.
[–] Исправлена ошибка WERD-плагинов: стрельба раскачанных Кентавров и Капитанов Кентавров приводила к вылетам.
[–] Исправлено описание Арбалета в английской локализации (по описанию можно было подумать, что стреляющие дважды будут стрелять трижды).
[–] Исправлены подсказки к Университету в английской локализации (показывалась старая цена изучения навыка).
[–] Исправлен баг: не совсем те проценты опыта, получаемые за счёт Брака.
[–] Некоторая дополнительная адаптация карт под мод.
[–] Из способностей опыта Сказочного Дракона убран «Клон» (клонированию подвергались вражеские юниты).
[–] Ящики Пандоры были невидимыми в игре.
[*] Колпак Шута добавлен во вкладку запрета артефактов.
[+] В папку USER добавлен ещё один пример плагина, при компиляции дающий всем героям двойные очки передвижения (как опция в WoG).
[+] Добавлено отображение длительности заклинаний в цифрах непосредственно в окне существа на поле боя. Положительные заклинания выделяются зелёным цветом, негативные — красным. Заклинания, длительность которых не поддаётся чёткому прогнозу (Разрушающий Луч, Берсерк, Корни), вместо длительности выделяются знаком «~».

MasterOfPuppets
Возвращаясь к альтернативам.
Некоторые игроки были удручены тем, что в новой версии не было добавлено ни одной альтерветки (на что я ответил: "Добавляйте сами, ибо теперь это возможно"). На самом же деле, одну альтернативу я планировал добавить всё время разработки Battery, но... так и не решился. А всё потому, что она - первого уровня.
Проблема с её введением понятна сразу: если жилища второго уровня в городах на случайной карте не всегда отстроены, то жилища первого - обязательное содержание. Получается, что игрок в данном случае будет формально лишён выбора, с какими первоуровневиками ему начинать, практически же - ему придётся делать рестарт до успеха, но это, само собой, рак.
Каков максимально удобный способ решения этой проблемы?
tolich
Возможность в первый день игры однократно бесплатно и без потери дня постройки перестроить первый уровень на альтерветку, если она была построена генератором карты.
Raystlin
Цитата(tolich @ 04 Nov 2016, 12:47) *
Возможность в первый день игры однократно бесплатно и без потери дня постройки перестроить первый уровень на альтерветку, если она была построена генератором карты.


Расширяя мысль:
Первй вариант: Если город является столицей игрока, на дворе 1 день 1 недели 1 месяца, разрешить перестроить здание.
Второй вариант: Генерировать карты без здания первого уровня (если это возможно) и в 1 день 1 недели 1 месяца разрешить двойную постройку в городах игрока (если городов по шаблону генератора больше одного).
tolich
Цитата(Raystlin @ 04 Nov 2016, 14:47) *
Если город является столицей игрока, на дворе 1 день 1 недели 1 месяца, разрешить перестроить здание.
Кроме рандомок есть фиксы с рандомными городами. Не думаю, что имеет смысл ограничиваться столицей. Важный признак - здание построено генератором, а не игроком и не автором карты. Необязательно первый город, любой.
Цитата(Raystlin @ 04 Nov 2016, 14:47) *
Генерировать карты без здания первого уровня и в 1 день 1 недели 1 месяца разрешить двойную постройку в городах игрока (если городов по шаблону генератора больше одного).
Идея была в том, чтобы жилище первого уровня всегда было. Нельзя обязывать игрока строить это жилище, да ещё и за свои ресурсы.
Цитата(tolich @ 04 Nov 2016, 12:47) *
Возможность в первый день игры однократно бесплатно и без потери дня постройки перестроить первый уровень на альтерветку, если она была построена генератором карты.
Кстати: возможность также теряется при найме существ или любом строительстве. Возможно, стоит разрешать перестраивать и другие уровни, если они построены генератором, также бесплатно. Если автоматически построены два уровня с альтерветками, должна быть возможность перестроить оба в любом порядке.
feanor
я в свое время предлагал разбить ростер героев на две части, одной части дать альт1 в стартовую армию, второй альт2, исходя из выбора стартового героя, выставлять двелл в стартовом городе
tolich
Без стартового героя не сработает.
MasterOfPuppets
А что если так:
1. При старте карты запоминается, были ли построены жилища первого уровня в городах, принадлежащих человеку. С учётом апгрейженных зданий.
2. Все такие жилища, имеющие альтерветки, разрушаются. Таким образом, человек не сможет нанять существ по клику на иконке Форта в окне статуса или по клавише "R" (способы найма без входа в окно города).
3. При входе в экран города проверяем, было ли жилище на старте. Если было - предлагаем выбор существ.
4. Строим здание, населяя его выбранными существами. Бесплатно.
Преимущество в том, что не надо знать, построено здание в редакторе карт или генератором. Также не надо следить, чтобы игрок никого не нанял. Что будет со зданиями орды, разрушатся ли они вместе с жилищами - не знаю, но, думаю, разберусь с этим.
tolich
А почему тогда не предложить выбор существ на старте карты? Без тестов, перестроек и проверок.
Да, я предполагал, что в редакторе карты есть возможность выбора конкретной альтернативы, потому и предлагал оставить это на усмотрение картодела, а не игрока, как в четвёртых героях.
И да, под "удобнее" ты имел в виду для игрока же?
MasterOfPuppets
Цитата(tolich @ 05 Nov 2016, 11:25) *
А почему тогда не предложить выбор существ на старте карты? Без тестов, перестроек и проверок.

Потому что это назойливо. Человек может генерировать карты в поисках каких-то своих условий, делать рестарты. Постоянные вопросы на старте меня дико раздражали ещё в WoG, поэтому я избавил от них MoP раз и навсегда.
Цитата(tolich @ 05 Nov 2016, 11:25) *
Да, я предполагал, что в редакторе карты есть возможность выбора конкретной альтернативы, потому и предлагал оставить это на усмотрение картодела, а не игрока, как в четвёртых героях.

Редактор карт модифицирован очень слабо.
Цитата(tolich @ 05 Nov 2016, 11:25) *
И да, под "удобнее" ты имел в виду для игрока же?

Конечно.
tolich
Проверить, был ли кто-то нанят, можно по числу существ меньше стартового. Это даже не нужно отслеживать.
Раз в редакторе нет возможности выбора альтерветки, стоит оставить это тоже игроку.
Цитата(tolich @ 04 Nov 2016, 12:47) *
Возможность в первый день игры однократно бесплатно и без потери дня постройки перестроить первый уровень на альтерветку, если она была построена генератором карты.
Возможность в первый день игры бесплатно и без потери дня постройки перестроить жилище существ любого уровня на альтерветку (при её наличии), если строительство в этом городе разрешено, а число существ равно начальному.

P.S. Может быть, имеет смысл разрешать бесплатную и без потери возможности строительства перестройку любого уровня в любой день игры, при части прироста скупленой, даже при том, что в этот день строительство уже было, если сохранять количество нанимаемых существ. То есть, нельзя нанять 14 зайцев и 14 кроликов, но можно 7 зайцев и 7 кроликов или 10 зайцев и 4 кролика. Если игрок хочет ослабить свою армию, нанимая разных существ в меньших количествах, это его право. Плюс лагяря беженцев, плюс захваченные города...
MasterOfPuppets
Для немногочисленных заинтересованных...
Код
macro TreasureChestArtifact x, y, l, var, ?
        {
     if ? eq
        GetMapItem x, y, l
        mov edx, var
        and edx,000003FFh
        and [eax + MapItem.контрольное_слово], 0FFFFFC00h
        or [eax + MapItem.контрольное_слово], edx
     else
        GetMapItem x, y, l
        mov eax, [eax + MapItem.контрольное_слово]
        and eax,000003FFh
        Set var, eax
     end if
        }

macro TreasureChestBonusNumber x, y, l, var, ?
        {
     if ? eq
        GetMapItem x, y, l
        mov edx, var
        and edx,0000000Fh
        shl edx,0Bh
        and [eax + MapItem.контрольное_слово], 0FFFF87FFh
        or [eax + MapItem.контрольное_слово], edx
     else
        GetMapItem x, y, l
        mov eax, [eax + MapItem.контрольное_слово]
        shr eax, 0Bh
        and eax,0000000Fh
        Set var, eax
     end if
        }

macro TreasureChestBonusType x, y, l, var, ?
        {
     if ? eq
        GetMapItem x, y, l
        mov edx, var
        and edx,1
        shl edx,0Ah
        and [eax + MapItem.контрольное_слово], 0FFFFFBFFh
        or [eax + MapItem.контрольное_слово], edx
     else
        GetMapItem x, y, l
        mov eax, [eax + MapItem.контрольное_слово]
        shr eax, 0Ah
        and eax, 1
        Set var, eax
     end if
        }


Примеры:
Код
; Получить бонус сундука в позиции 43/49/0 в [MyVar]:
        TreasureChestBonusNumber 43, 49, 0, [MyVar], ?
; Установить максимальный бонус:
        TreasureChestBonusNumber 43, 49, 0, 15
; Установить бонус = артефакт:
        TreasureChestBonusType [x], [y], [l], 1
; Установить артефактом Брелок Проворства:
        TreasureChestArtifact [x], [y], [l], ART_Брелок_Проворства


Ну и напоминаю, что для изменения имени команды необязательно лезть во фреймворк или копировать оттуда весь макрос. Гораздо проще объявить синоним:
Код
Установить_или_получить_артефакт_Сундука_Сокровищ fix TreasureChestArtifact
!!CH_A fix TreasureChestArtifact

        Установить_или_получить_артефакт_Сундука_Сокровищ [x], [y], [l], ART_Шлем_Тьмы
        !!CH_A [x], [y], [l], ART_Армилла
MasterOfPuppets
Завтра в 18:00 по московскому времени состоится стрим MoP на канале https://www.twitch.tv/flankemonk

Трансляция представит сравнение MoP с его предшественником - WoG, от которого мод далеко ушёл за прошедшие годы. Стрим будет особенно полезен людям, всё ещё не решившимся установить модификацию в силу каких-то предрассудков или заблуждений.
MasterOfPuppets
Опять о WERD-программировании.
Медленное развитие платформы обусловлено не только вялым интересом со стороны пользователей, но и тем, что прежде чем сооружать здание, мне надо определиться со стройматериалом: как будут оформлены команды, какие типы переменных будут использоваться и т. д. Довольно скоро я пришёл к выводу, что ХЕРОМАНТ прав - надо в определённом смысле приблизиться к ERM, чтобы была возможность без особых проблем конвертировать его скрипты в WERD-плагины, а также, что немаловажно - избавиться от многих вопросов пользователей, просто отсылая их к ERM-справочнику.

Следующим после !!CH предстояло сделать аналог !!FR. Тут же проблема: ресейвер имеет два параметра. Делать две отдельные команды - громоздко и непохоже на ERM. Вопросительный же знак в качестве отдельного параметра WERD-команды мне изначально не понравился, но прилепить его перед переменной как-то не получалось... до сего дня. Синтаксис команд поменялся и расширился:
Код
        CampfireBonus 59, 44, 0, ?[MyVar], 700; получить тип ресурса Костра на позиции 59/44/0 в переменную MyVar, установить количество в 700.
        CampfireBonus [X], [Y], [L], 5, d; установить типом ресурса Драг. Камни, количество не менять

Итоговый код плагинов, конечно же, не будет идти ни в какое сравнение по компактности с самой WERD, написанной с минимальным использованием макросов (что обусловлено необходимостью работы с отладчиком). Но это небольшая жертва ради удобства и комфорта написания кода. По скорости же ощутимой разницы вообще не будет.
MasterOfPuppets
Трансляция началась.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.