Wake of Gods Forum | Форум Во Имя Богов

Full Version: Typhon v. 2.9
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Я это и имел в виду:
Quote:меняет и старую структуру
Правда, едва не затупил, поставив сначала хук на 732CCFh, а не на 732CE1h.
Превосходно Rolleyes
Я попробую тогда немного поиграть с включённым Тифоном + посмотрю, действительно ли изумрудная башня глючит. Было бы замечательно включить такой инструмент в базовую поставку Эры в качестве обязательного. Перестанут работать моды с аметистом, но их ведь можно будет преобразовать при желании.
(25.11.2017 17:55)Berserker Wrote: [ -> ]посмотрю, действительно ли изумрудная башня глючит.
Проверял. Реально глючит и вылетает из-за команды UN:N, хотя она использует не прямой адрес структуры монстров, а указатель. Страннота. Попробую сегодня разобраться.
(25.11.2017 15:41)Berserker Wrote: [ -> ]Можно будет попробовать инструмент в базовую поставку интегрировать, только вопрос совместимости всё же попробовать решить.

Тогда стоит обратить внимание на Dwellings.dll, на который гавкает и Касперский, и Аваст. Понятно, что можно внести в исключения, но ведь можно сделать так, что бы этого не требовалось?
Она вызывает 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 в любой процесс).
MOP, подскажи, пожалуйста, ещё. Если предполагается, что будет несколько модов, использующих Тифон, то они все будут биться за общие ресурсы с настройками монстров, заклинаний, городов, так? Эти настройки частично в файлах mop, которые можно было бы на лету генерировать, если знать структуру (кол-во записей * размер записи?). Частично в файлах текстовых — имена и описания. Верно?

Если бы в теории Тифон вызывал функции Эры: LoadMopFile, LoadMopTxtFile, которые бы генерировали эти файлы из множества других по принципу модульности (сборки из оригинала и только добавленных/изменённых), то можно было бы использовать несколько модов на базе Тифона?
(25.11.2017 18:08)Berserker Wrote: [ -> ]Она вызывает GetMonName:
Это понятно. Сама команда по отдельности работает совершенно нормально. Но в !?FU10909 происходит какая-то хрень, так что при закрытии последнего диалога в Башне вместо имени монстра возвращается -1.
Фух, исправил. Дело было в резервации ссылок на строки для UN:G1 с 0 в качестве последнего параметра. Я отрубил вообще это копирование в MoP, ибо мне никогда оно не нужно, а по слепому методу сделал так же и в Тифоне. Добавил три таблицы, изменил адреса и лимиты. Изумрудная Башня больше не вылетает.
Берс, если тестируешь, то придётся перезапускать, ибо копирование ссылок на строки идёт в инструкции.
НУ что, где там ещё баги?
Image: Challenge_Accepted.png
(25.11.2017 18:16)Berserker Wrote: [ -> ]MOP, подскажи, пожалуйста, ещё. Если предполагается, что будет несколько модов, использующих Тифон, то они все будут биться за общие ресурсы с настройками монстров, заклинаний, городов, так? Эти настройки частично в файлах mop, которые можно было бы на лету генерировать, если знать структуру (кол-во записей * размер записи?). Частично в файлах текстовых — имена и описания. Верно?

Если бы в теории Тифон вызывал функции Эры: LoadMopFile, LoadMopTxtFile, которые бы генерировали эти файлы из множества других по принципу модульности (сборки из оригинала и только добавленных/изменённых), то можно было бы использовать несколько модов на базе Тифона?
Понятно, куда ты клонишь, но я не знаю, возможно ли это. Это различать стандартных и добавленных как-то надо, а ведь и старых тоже люди правят. Ещё править скрипты и плагины под сгенерированные на лету номера. Да и лимит существ не такой большой - 1000 или максимум 1024 (из-за хранения типа существа в 10-битовой ячейке).
В общем, фантастика, на мой взгляд.
Quote:Фух, исправил.
Молодца! А то по коду хоть убей всё чисто )

Quote:НУ что, где там ещё баги?
Накопаем! Spiteful

Quote:В общем, фантастика, на мой взгляд.
А можешь на вскидку сказать структуру основных mop-файлов. Там просто структуры городов/монстров * кол-во?
Ага, сам же и нашёл. В конце функции загрузки параметров существ надо было mov dword [27F9A34h], 0 поставить, иначе все имена сбиваются как при рестарте, так и при загрузке сейва.
Вот теперь с именами всё.
(25.11.2017 21:18)Berserker Wrote: [ -> ]А можешь на вскидку сказать структуру основных mop-файлов. Там просто структуры городов/монстров * кол-во?
Нет, там всё не так, как на самом деле. И даже структура файла существ нигде не зафиксирована.
Quote:Вот теперь с именами всё.
Перекачивать по ссылкам в первом посте? )

Quote:Нет, там всё не так, как на самом деле. И даже структура файла существ нигде не зафиксирована.
Суровая школа )) В теории я могу хранить стандартные mop-файлы настроек, брать mop-bin файлы с разными именами из модов в виде патчей на оригинал (размеры то фиксированные?) и создавать на лету общие файлы *.mop, которые скармливать Тифону через АПИ. Если что, думаю копать в подобную сторону. Там и нужна-то только приблизительная страктура в виде смещений и размеров блоков.
(25.11.2017 23:01)Berserker Wrote: [ -> ]Перекачивать по ссылкам в первом посте? )
Да.
(25.11.2017 23:01)Berserker Wrote: [ -> ]Там и нужна-то только приблизительная страктура в виде смещений и размеров блоков.
Просплюсь, отдохну - может, нарою.
Хорошо, спасибо Ab
Структура MonstersSetup.mop:
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
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Reference URL's