IPB

Здравствуйте, гость ( Вход | Регистрация )

9 страниц V  « < 6 7 8 9 >  
Reply to this topicStart new topic
> Обсуждение моддинга, технические подробности
Etoprostoya
сообщение 12 Jul 2011, 17:55
Сообщение #141

Etoslozhnostatus
Сообщений: 8 763
Спасибо сказали: 16437 раз




Цитата(MasterOfPuppets @ 12 Jul 2011, 18:00) *
27) Новые монстры (включая Дьяка) генерируются на случайной карте вместе со стандартными.

А что за новый монстр Дьяк? smile.gif


--------------------
- Да ну!?
- Horn of the Argali гну!
Go to the top of the pageAdd Nick
 
+Quote Post
dik X.B.
сообщение 12 Jul 2011, 21:15
Сообщение #142

Choziain Veteras
Сообщений: 348
Спасибо сказали: 180 раз




Я в Восторге!

Особо +5000!
>7) У артефактов на карте свои особенности поднятия, регулируемые спец. таблицей и параметром AR:V (хотя планируется не только это). Большинство поднимается спокойно и без шума, но крутые/особенные артефакты могут требовать деньги, Лидерство, Мудрость или даже могут охраняться.
>9) Реализация отрицательной Удачи (уполовинивание урона, анимация и звук) – встроенная.
>12) Во избежание перекрывания настроек другими модами и наоборот, при запуске MoP.exe он прописывает себе отдельную ветку реестра (HKEY_LOCAL_MACHINE\SOFTWARE\New Life of Heroes\Heroes of Might and Magic III\MoP).
Мод не требует предварительного запуска h3wog.exe. Можно его копировать на флэшку и спокойно давать знакомым без сопутствующих инструкций. Проверено на свеженькой Винде Келлера.
>17) При захвате Заброшенной Шахты внешний вид её преобразуется в вид шахты, производящей соответствующий ресурс.
>18) Встроена раздача на старте карты машин героям, ранее имеющим БМ в стартовой армии (теперь машина не заменяет 2-ой слот, а идёт в довесок), а также удаление у всех героев Катапульт.
>45) Встроено: при повышении уровня для получения экспертной магии какой-либо школы нужно обладать экспертной Мудростью. В противном случае будет предложен другой навык.

Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 12 Jul 2011, 21:52
Сообщение #143

допустим, мяў
Сообщений: 24 165
Спасибо сказали: 13533 раза




Все кроме 18 - я тоже в восторге!
А с Катапультой я бы поступил как в Кингс Баунти - если кто помнит, её нужно было вообще купить!
Иначе - иди, бери город, но без Катапульты!


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 12 Jul 2011, 21:54
Сообщение #144

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20610 раз




Дык один хрен наличие катапульты-орудия не привязано к катапульте-артефакту.
Go to the top of the pageAdd Nick
 
+Quote Post
magoth
сообщение 12 Jul 2011, 21:56 (Сообщение отредактировал magoth - 12 Jul 2011, 22:04)
Сообщение #145

Immortal
Сообщений: 995
Спасибо сказали: 549 раз




MasterOfPuppets,

Хорошая работа. good.gif
Не понравился лишь этот пункт, слишком все в разброс:
Цитата
[...]
21) Новые кнопки карты приключений:
[...]


Может вам сделать примерно такое расположение дополнительных кнопок, оно более симметричное, и законченное что-ли?!

Зы, Также думаю что нужно немного осветлить цвет у рисунков кнопок прокрутки и справки. Слишком яркий черный цвет выбивается из общего стиля этого окна. имхо
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 12 Jul 2011, 23:27
Сообщение #146

допустим, мяў
Сообщений: 24 165
Спасибо сказали: 13533 раза




Зачем качать отдельную dll? Может она и интересна, но суть мода ведь не раскроет?


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 13 Jul 2011, 10:46 (Сообщение отредактировал MasterOfPuppets - 13 Jul 2011, 11:46)
Сообщение #147

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2378 раз




Цитата(FCst1 @ 12 Jul 2011, 23:48) *
Как выйду в icq - обязательно передам.

Ну тогда сразу апдейт тебе в спину.
Поставил ещё хук на здания орды, а то они пролетали. Правда, есть одно но: нельзя ставить (через UN:T) в двеллинги, имеющие орды, существа не того уровня, что сам двеллинг. Но, надеюсь, никому это и не нужно.
Хотя всё же исправлю когда-нибудь…

Я сначала сделал изменение существ в слотах через процедуру, но потом решил лучше оформить в ERM-команду. И более привычно скриптописцам-старожилам, и не портит v1, и все типы переменных поддерживает.
Функцию, впрочем, основываясь на исходнике, легко может накатать тот, кому нужно пользоваться длл-кой без скриптов.

Цитата(hippocamus @ 12 Jul 2011, 23:27) *
Зачем качать отдельную dll? Может она и интересна, но суть мода ведь не раскроет?

Так это и не было сначала частью мода. Делалось как подарок TPM, а уже потом я решил и себе на всякий случай встроить.

Цитата(magoth @ 12 Jul 2011, 22:56) *
Может вам сделать примерно такое расположение дополнительных кнопок, оно более симметричное, и законченное что-ли?!

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

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


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery

Go to the top of the pageAdd Nick
 
+Quote Post
Algor
сообщение 13 Jul 2011, 16:06
Сообщение #148

-
Сообщений: 1 073
Спасибо сказали: 1529 раз




Цитата(MasterOfPuppets @ 12 Jul 2011, 17:00) *
[b]37)Теперь есть 5%-ый шанс, что в клетке карты закопан артефакт класса от T до R...Артефакты в клетках определяются на старте карты.

И это сделал человек, не так давно рьяно сопротивлявшийся "случайности" в героях и не любивший задротство и сэйв/лоад...
Убери в опцию, как минимум.

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


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Aleee
сообщение 13 Jul 2011, 16:19
Сообщение #149

Immortal
Сообщений: 2 149
Спасибо сказали: 697 раз




Цитата(Algor @ 13 Jul 2011, 16:06) *
И это сделал человек, не так давно рьяно сопротивлявшийся "случайности" в героях и не любивший задротство и сэйв/лоад...
Убери в опцию, как минимум.

Save/Load в этом случае не помогут.

5% - не такой уж маленький шанс, чтобы не попробовать превратить карту в подобие огородов моей несчастной (в смысле сосдества с милыми подземными существами) бабушки. Возможно, стоит наложить ограничение как раз на класс артефактов.
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 13 Jul 2011, 17:12
Сообщение #150

😸🧡✊✌️
Сообщений: 16 618
Спасибо сказали: 3604 раза




Кстати, не всюду копать можно. Обидно будет, если копать нельзя, а там внезапно клинок армагеддона.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 18 Jul 2011, 14:42 (Сообщение отредактировал MasterOfPuppets - 18 Jul 2011, 16:55)
Сообщение #151

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2378 раз




Не забывайте, что на то, чтобы первый раз копнуть, нужно выйти из города, потом переждать ещё день... Кто будет рестартить игру с таким мизерным шансом достать из земли артефакт, да ещё и крутой? И сейв-лоад тоже будет горьким трудом. А карта "как после бомбёжки" - это только эстетика. Я бы даже сказал, будет смешно на это поглядеть.
К тому же, раскопки - противовес человека той самой неконтролируемой скупке ИИ артефактов в ТА и ЧР. К тому же, у ИИ бесконечные ресурсы.
Меня устраивает.

Залатал всякие дырки в отрисовке пункта «E» шаблона DL (там чуть ли не половина параметров в вог-функции перепутана), сделал (через задницу, но стабильно) получение введенного текста в z-переменную от любого такого пункта в диалоге. Также можно ограничивать не просто ширину элемента, но и длину введённого текста.
Потом сделал поддержку русской раскладки. Довольно дилетантски: хук на вызовы sub_4EC7C0. В хуке – вызов её, затем получение имени текущей раскладки (GetKeyboardLayoutNameA). Если оно равно 00000419 – замена вводимого символа на русский из специальной таблицы, основываясь на смещении, равном машкоду введённого символа. Если кто знает лучший способ – можете посоветовать. Я ж ламер.
А под клэшовский «Bankrobber» украл прямо из HiRez.dll длиннокод вставки текста из буфера обмена и запилил в недавно начатую MoP.dll.
Всё это, конечно, не только к DL применимо, но и ко всем исконным игровым диалогам со вводом. Например, ввод имён игроков для хот-сита.
Так что можно, наконец, избавиться от ограниченных вог-диалогов, которые только тем и удерживали, что вводом букофф.
Остаётся крохотная бяка: при вводе/стирании текста в DL где-то работает какая-то жирная воговская функция, заметно тормозящая действие. Надо выпилить.
Первые плоды:


Решил не париться с созданием шаблонов для рандомок, а предоставить выбор шаблона игроку, наподобие HD. В MoP.ini есть теперь секция, имеющая вид:
[RMG Template]
TxtFileName=rmg.txt
Ну и всё какбэ ясно. Перед генерацией рандомки (не обязательно перед запуском игры) пишите туда имя нужного вам файла, который вы положили в data или в лод – и все.
По умолчанию, как видно, стоит оригинальный текстовик.
В поставку шаблоны не входят.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery

Go to the top of the pageAdd Nick
 
+Quote Post
Algor
сообщение 19 Jul 2011, 14:52 (Сообщение отредактировал Algor - 19 Jul 2011, 14:53)
Сообщение #152

-
Сообщений: 1 073
Спасибо сказали: 1529 раз




Цитата(tolich @ 19 Jul 2011, 13:25) *
По крайней мере, от размеров армии это время не зависит: вообще без армии герой копает ровно столько же времени, сколько с тысячей крестьян.


"По крайней мере, от размеров армии" не зависит очень много вещей, таких как расходы на еду, затраты маны на левитацию/полет и пр. и пр. - это и называется "игровой условностью".

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


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Haart of the Aby...
сообщение 19 Jul 2011, 18:16
Сообщение #153

Рыцарь в лесу.
Сообщений: 4 509
Спасибо сказали: 6350 раз




Цитата
первичная цель любой армии - сражения.
Даже тех двух феечек, что даются герою-разведчику для разгона (и чтобы в случае внезапного нападения он успел сделать ноги, пожертвовав этими двумя феечками — в этом их главное преимущество над полным отсутствием армии там, где последнее легально)?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 01 Aug 2011, 15:59
Сообщение #154

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2378 раз




Цитата(Algor @ 19 Jul 2011, 11:33) *
И да... опцию, уберите это в опцию. Хотя бы до второго релиза, а там будет видно оставлять вшитым наглухо или нет.

Ну сделал опцией.
На квартиру к автору следующего предложения по опциональности в ближайшие сутки будет направлен наряд НКВД, после чего он будет в скорейшем порядке отправлен по этапу на Колыму.
Да, у нас тут такая шуточка ходит: "Вот ведь жалко - и сослать-то тебя некуда...".


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery

Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 01 Aug 2011, 16:21
Сообщение #155

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20610 раз




Цитата
после чего он будет в скорейшем порядке отправлен по этапу на Колыму.

К тебе на стажировку?
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 01 Aug 2011, 19:39
Сообщение #156

😸🧡✊✌️
Сообщений: 16 618
Спасибо сказали: 3604 раза




Именно, колымить на него. spiteful.gif


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 06 Aug 2011, 13:57 (Сообщение отредактировал MasterOfPuppets - 06 Aug 2011, 14:05)
Сообщение #157

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2378 раз




Ну да. Я асматик (кхе-кхе).
Метод ужасен, но для меня главное - результат, а не удобство. А скорость, компактность и стабильность асм даёт по максимуму.

Цитата
Оп, дак это еще и у МоР'a сорцы стащить можно будет?

Не, этого вы никогда не увидите. tongue.gif

Длл-кой больше, длл-кой меньше. Выпилил EraUtils.dll, написав вместо неё свои расово ассемблерные, ультракомпактные и супермогучие функции по выделению/освобождению памяти, загрузке/сохранению файлов.
И как-то сразу после этого мод стал постабильнее... А, что я сказал? shok.gif Ну да, у мода есть пара-тройка багов, но все они (слава сотоне!) связаны со скриптами, а не с экзешником. Так вот, я написал эти функции, потому что краши с шансом 1/7-1/10 на старт карты постоянно указывали на EraUtils.dll, а места в скрипте вечно показывались разные. Убив на отловку бага целые месяцы, но так и не выяснив причины, решил сделать всё по-своему.
Тем не менее, я не обвиняю Берса в том, что длл содержит ошибки. Может, её поведение в моде чем-то нарушается.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery

Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 06 Aug 2011, 14:36 (Сообщение отредактировал MasterOfPuppets - 06 Aug 2011, 14:40)
Сообщение #158

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2378 раз




Самовольно и не спросив человека, добавил Aleee в члены нашей команды. Думаю, за популяризацию мода на HC он того вполне заслуживает. А ещё перевод впереди.
Вообще, когда сам себя рекламируешь - появляется чувство гадливости. А вот когда кто-то другой, просто по собственному желанию - приятно.
Нас теперь трио. Надо бы уже и в турне отправляться...


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery

Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 06 Aug 2011, 15:01 (Сообщение отредактировал Berserker - 06 Aug 2011, 15:05)
Сообщение #159

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




EraUtils чиста как слеза ангела. Скорее всего у тебя где-то типичные ошибки работы с памятью (двойное освобождение, использование висячих указателей или перезапись в место больше блока памяти). В итоге это вызывает случайные вылеты рано или поздно. Вот код:

Код
LIBRARY EraUtils;
USES Win, Utils, Classes;

VAR
    Mem: Classes.TList;

FUNCTION MemAlloc (Size: INTEGER): POINTER; PASCAL;
BEGIN
    GetMem(RESULT, Size);
    Mem.Add(RESULT);
END; // .function MemAlloc

PROCEDURE MemFree (Ptr: POINTER); PASCAL;
BEGIN
    Mem.Delete(Mem.IndexOf(Ptr));
    FreeMem(Ptr);
END; // .procedure MemFree

PROCEDURE MemClear; PASCAL;
VAR
    (* TEMP *)
    i: INTEGER;
    
BEGIN
    FOR i:=0 TO Mem.Count - 1 DO BEGIN
        FreeMem(Mem[i]);
    END; // .for
    Mem.Clear;
END; // .procedure MemClear

FUNCTION FileToMem (Path: PCHAR): POINTER; PASCAL;
VAR
    S: STRING;
    hFile: INTEGER;
    Size: INTEGER;
    
BEGIN
    S:=Path;
    hFile:=Utils.FileOpen(S, Utils.fmOpenRead OR Utils.fmShareDenyWrite);
    IF hFile < 0 THEN BEGIN
        RESULT:=NIL; EXIT;
    END; // .if
    Size:=Win.GetFileSize(hFile, NIL);
    IF Size <= 0 THEN BEGIN
        RESULT:=NIL; EXIT;
    END; // .if
    GetMem(RESULT, Size);
    Mem.Add(RESULT);
    Utils.FileRead(hFile, RESULT^, Size);
    Utils.FileClose(hFile);
END; // .function FileToMem

PROCEDURE MemToFile (Path: PCHAR; Buf: POINTER; Num: INTEGER); PASCAL;
VAR
    S: STRING;
    hFile: INTEGER;
    
BEGIN
    Win.DeleteFile(Path);
    S:=Path;
    hFile:=Utils.FileCreate(S);
    IF hFile < 0 THEN BEGIN
        EXIT;
    END; // .if
    Utils.FileWrite(hFile, Buf^, Num);
    Utils.FileClose(hFile);
END; // .procedure MemToFile

EXPORTS
    MemAlloc, MemFree, MemClear, FileToMem, MemToFile;

BEGIN
    Mem:=Classes.TList.Create();
END.


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


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
MasterOfPuppets
сообщение 06 Aug 2011, 15:08 (Сообщение отредактировал MasterOfPuppets - 06 Aug 2011, 15:10)
Сообщение #160

Анти-Всë
Сообщений: 2 989
Спасибо сказали: 2378 раз




Так я и думал, что дело не в ней. Тем более, что её использование экзешником, а не скриптами, никогда не давало сбоя.
Просто ошибки ужас какие странные. Всегда указывает на выделение памяти скриптом, но всегда разный участок. Выпиливал участки, добавлял по одному, смотрел во все глаза до слёз - ничего не увидел. Закономерность всего одна: чем больше выделений - тем больше ошибок.
При запуске процесса через Олли она что-то шептала именно про EraUtils (не помню). Про Angel и пару других - ничего.


--------------------
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery

Go to the top of the pageAdd Nick
 
+Quote Post

9 страниц V  « < 6 7 8 9 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 11 May 2026 - 09:30
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика