MOP
Posts: 1468
|
Я это и имел в виду:
Quote:меняет и старую структуру
Правда, едва не затупил, поставив сначала хук на 732CCFh, а не на 732CE1h.
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
(This post was last modified: 25.11.2017 17:49 by MOP.)
|
|
25.11.2017 17:46 |
|
Ethereal
Posts: 362
|
(25.11.2017 15:41)Berserker Wrote: Можно будет попробовать инструмент в базовую поставку интегрировать, только вопрос совместимости всё же попробовать решить.
Тогда стоит обратить внимание на Dwellings.dll, на который гавкает и Касперский, и Аваст. Понятно, что можно внести в исключения, но ведь можно сделать так, что бы этого не требовалось?
(This post was last modified: 25.11.2017 18:05 by Ethereal.)
|
|
25.11.2017 18:03 |
|
Berserker
Posts: 16657
|
Она вызывает GetMonName:
Code:
char *GetMonName(int number,int oneMORE)
{
#include "templ.h"
char *zret;
int shifter;
if(oneMORE) shifter=4; else shifter=0;
__asm{
mov ecx,number //??? = тип монстра
lea edx,[8*ecx]
sub edx,ecx
lea ecx,[ecx+4*edx]
mov edx,0x6747B0
mov edx,[edx]
add edx,shifter
mov eax,[edx+4*ecx+0x14] //-> название монстра ед число
// mov ecx,[edx+4*ecx+18] -> название монстра мн число
mov zret,eax
}
RETURN(zret)
}
Ethereal, либо Мастера попросим добавить туда мусора или подключить стандартных библиотек, либо придётся упаковывать чем-то и проверять. Но что-то делать точно, жалобы отовсюду, как на мой загрузчик AngelRun (но с тем-то понятно, подгрузка любой dll в любой процесс).
|
|
25.11.2017 18:08 |
|
Berserker
Posts: 16657
|
MOP, подскажи, пожалуйста, ещё. Если предполагается, что будет несколько модов, использующих Тифон, то они все будут биться за общие ресурсы с настройками монстров, заклинаний, городов, так? Эти настройки частично в файлах mop, которые можно было бы на лету генерировать, если знать структуру (кол-во записей * размер записи?). Частично в файлах текстовых — имена и описания. Верно?
Если бы в теории Тифон вызывал функции Эры: LoadMopFile, LoadMopTxtFile, которые бы генерировали эти файлы из множества других по принципу модульности (сборки из оригинала и только добавленных/изменённых), то можно было бы использовать несколько модов на базе Тифона?
|
|
25.11.2017 18:16 |
|
MOP
Posts: 1468
|
Фух, исправил. Дело было в резервации ссылок на строки для UN:G1 с 0 в качестве последнего параметра. Я отрубил вообще это копирование в MoP, ибо мне никогда оно не нужно, а по слепому методу сделал так же и в Тифоне. Добавил три таблицы, изменил адреса и лимиты. Изумрудная Башня больше не вылетает.
Берс, если тестируешь, то придётся перезапускать, ибо копирование ссылок на строки идёт в инструкции.
НУ что, где там ещё баги?
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
(This post was last modified: 25.11.2017 20:20 by MOP.)
|
|
25.11.2017 19:58 |
|
MOP
Posts: 1468
|
(25.11.2017 18:16)Berserker Wrote: MOP, подскажи, пожалуйста, ещё. Если предполагается, что будет несколько модов, использующих Тифон, то они все будут биться за общие ресурсы с настройками монстров, заклинаний, городов, так? Эти настройки частично в файлах mop, которые можно было бы на лету генерировать, если знать структуру (кол-во записей * размер записи?). Частично в файлах текстовых — имена и описания. Верно?
Если бы в теории Тифон вызывал функции Эры: LoadMopFile, LoadMopTxtFile, которые бы генерировали эти файлы из множества других по принципу модульности (сборки из оригинала и только добавленных/изменённых), то можно было бы использовать несколько модов на базе Тифона?
Понятно, куда ты клонишь, но я не знаю, возможно ли это. Это различать стандартных и добавленных как-то надо, а ведь и старых тоже люди правят. Ещё править скрипты и плагины под сгенерированные на лету номера. Да и лимит существ не такой большой - 1000 или максимум 1024 (из-за хранения типа существа в 10-битовой ячейке).
В общем, фантастика, на мой взгляд.
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
|
|
25.11.2017 20:04 |
|
Berserker
Posts: 16657
|
Quote:Фух, исправил.
Молодца! А то по коду хоть убей всё чисто )
Quote:НУ что, где там ещё баги?
Накопаем!
Quote:В общем, фантастика, на мой взгляд.
А можешь на вскидку сказать структуру основных mop-файлов. Там просто структуры городов/монстров * кол-во?
|
|
25.11.2017 21:18 |
|
MOP
Posts: 1468
|
Ага, сам же и нашёл. В конце функции загрузки параметров существ надо было mov dword [27F9A34h], 0 поставить, иначе все имена сбиваются как при рестарте, так и при загрузке сейва.
Вот теперь с именами всё.
(25.11.2017 21:18)Berserker Wrote: А можешь на вскидку сказать структуру основных mop-файлов. Там просто структуры городов/монстров * кол-во?
Нет, там всё не так, как на самом деле. И даже структура файла существ нигде не зафиксирована.
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
(This post was last modified: 25.11.2017 21:44 by MOP.)
|
|
25.11.2017 21:42 |
|
Berserker
Posts: 16657
|
Quote:Вот теперь с именами всё.
Перекачивать по ссылкам в первом посте? )
Quote:Нет, там всё не так, как на самом деле. И даже структура файла существ нигде не зафиксирована.
Суровая школа )) В теории я могу хранить стандартные mop-файлы настроек, брать mop-bin файлы с разными именами из модов в виде патчей на оригинал (размеры то фиксированные?) и создавать на лету общие файлы *.mop, которые скармливать Тифону через АПИ. Если что, думаю копать в подобную сторону. Там и нужна-то только приблизительная страктура в виде смещений и размеров блоков.
|
|
25.11.2017 23:01 |
|
MOP
Posts: 1468
|
(25.11.2017 23:01)Berserker Wrote: Перекачивать по ссылкам в первом посте? )
Да.
(25.11.2017 23:01)Berserker Wrote: Там и нужна-то только приблизительная страктура в виде смещений и размеров блоков.
Просплюсь, отдохну - может, нарою.
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
|
|
25.11.2017 23:03 |
|
MOP
Posts: 1468
|
Структура MonstersSetup.mop:
Данные - размер (умножаем на тысячу для всех существ) - смещение в файле настроек
Code:
Боевой деф 16 ; 0
Озвучка 5 ; +16000
Флаги 4 ; +21000
Уровень 1 ; +25000
Город 1 ; +26000
Контрудары 1 ; +27000
Всегда положительная Мораль 1 ; +28000
Всегда положительная Удача 1 ; +29000
Тип снаряда (НЕ используется) 1 ; +30000
Уровень баллистики 1 ; +31000
Смертельный удар 1 ; +32000
Облако Смерти и Огненный Шар 1 ; +33000
Шпионаж 1 ; +34000
Страх 1 ; +35000
Бесстрашие 1 ; +36000
Нет штрафа преград 1 ; +37000
Магическая аура 1 ; +38000
Огненный щит 1 ; +39000
Атака с возвратом 1 ; +40000
Снижение цены заклинаний для хозяина 1 ; +41000
Повышение цены заклинаний для врага 1 ; +42000
Превращение в Трансформаторе Скелетов 4 ; +43000
Апгрейд 4 ; +47000
Свойства при атаке1 1 ; +51000
Свойства при атаке2 1 ; +52000
Магические свойства1 1 ; +53000
Магические свойства2 1 ; +54000
Магические свойства3 1 ; +55000
Иммунитет 1 ; +56000
Гномье сопротивление 1 ; +57000
Големное сопротивление 1 ; +58000
Заклинание 1 ; +59000
Ненависть 1 ; +60000
Кавалерийский бонус 1 ; +61000
Иммунитет к кав. бонусу 1 ; +62000
Регенерация, очки HP 4 ; +63000
Регенерация, шанс 1 ; +67000
Атака тремя головами 1 ; +68000
Кража маны 2 ; +69000
Магический канал 1 ; +71000
Волшебное зеркало 1 ; +72000
Снайперство 1 ; +73000
Стрельба вплотную 1 ; +74000
Уменьшение защиты врага 1 ; +75000
Возрождение 1 ; +76000
Атака стаей (НЕ используется) 1 ; +77000
Атака всех, мимо кого проносится (НЕ используется) 1 ; +78000
Атака всех мимо проносящихся (НЕ используется) 1 ; +79000
Превентивный контрудар 1 ; +80000
Ответный выстрел 1 ; +81000
Цвет луча при стрельбе 1 ; +82000
Запрещён для генерации 1 ; +83000
Оглушение (НЕ используется) 1 ; +84000
{
Dword Цена_в_дереве
Dword Цена_в_ртути
Dword Цена_в_камнях
Dword Цена_в_сере
Dword Цена_в_кристаллах
Dword Цена_в_драг_камнях
Dword Цена_в_золоте
Dword Fight_Value
Dword AI_Value
Dword Прирост 84 ; +85000
Dword Доп_прирост
Dword Здоровье
Dword Скорость
Dword Атака
Dword Защита
Dword Мин_урон
Dword Макс_урон
Dword Боезапас
Dword Заклинания
Dword Мин_кол_во_на_карте
Dword Макс_кол_во_на_карте
}
Структура CrAnim 84 ; +169000
Защита от стрел 1 ; +253000
Ammo.mop - названия снарядов, 16 байт на существо.
ImposedSpells.mop - наложенные заклинания, 3 заклинания + 3 уровня, всего 6 байт на существо.
DefenseBonus.mop - бонус защиты при вставании в оборону, 1 байт на существо.
Lang. Первый байт - язык редактора и игры (0 - английский, 1 - русский). Следом слово для хранения типа существа, которое было выбрано перед закрытием программы (будет открыто при следующем запуске).
TownsSetup.mop:
Code:
Древо построек 8 байт * 44 здания * 9 городов ; 0
Основные обитатели города 4 байта * 7 уровней * 2 грейда * 9 городов ; +3168
Альтернативные обитатели города 4 байта * 7 уровней * 2 грейда * 9 городов ; +3672
Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
|
|
26.11.2017 09:21 |
|