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

Full Version: Вопросы по моддингу
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
(07.03.2014 05:01)Valery Wrote: [ -> ]Good
Image: t2hj.jpg
Thanks. I'll try it
(07.03.2014 05:01)Valery Wrote: [ -> ]Image: t2hj.jpg
It's work , thanks.

Но теперь новый баг. По клику на артефакт - вылезает окно:
Image: h3wmaped.png
Экзешник - стандартный, из дистриба Эры 2.4
https://dl.dropboxusercontent.com/u/5852...wmaped.exe
Читаемый адрес меняется от клика к клику.

При выходе из редактора - ошибка
Image: h3wmaped2.png

Что интересно - отдельный редактор от BlackPhantom'a такого себе не позволяет, но он не умеет работать с модами

На всякий случай: мод, с которым случаются эти чудеса - http://yadi.sk/d/Ui9paRu5K6HjB
Подскажите пожалуйста, где в памяти лежат значения, отвечающие за шанс раздачи стартовых армий героям.
Моя задача - сделать шанс появления второго и третьего стека равным нулю, потому что если зануляется число существ в этих стеках, то герои так и появляются с "0" существ.
100% шанс появления 2ого и 3го стеков
4C948F 9090909090
4C9497 90909090909090909090
4C950F 9090909090909090909090909090909090909090

Для 0-го, наверное, надо нулями забить.
Ivor, если я правильно помню, забить "нулями" в вопросе работы с памятью - это не "00", а другое значение...
скорее всего эфками FF
(13.03.2014 18:37)Arseniy Wrote: [ -> ]потому что если зануляется число существ в этих стеках, то герои так и появляются с "0" существ.

Как вариант:
Тип нужен -1, верно сказали (FF).
Спасибо.
Мне нужны адреса в памяти, скриптами я пользоваться не смогу.
Quote:100% шанс появления 2ого и 3го стеков
4C948F 9090909090
4C9497 90909090909090909090
4C950F 9090909090909090909090909090909090909090
Quote:Тип нужен -1, верно сказали (FF).
Не очень понятно. В каком типе лежат значения (char, short, int) ? Судя по тому, что FF, то short. Но сколько значений менять? Почему для каждого последующего стека нужно больше чисел задавать?
Можно ли менять тип юнитов? Проблема в том, что если занулить шансы второго и третьего стека, то палатки с баллистами тоже не будет раздаваться. Но у кого во втором стеке не баллиста, а существа, их тип не устраивает.
Еще появился вопрос, где задаются стартовые скиллы героев, специализации, стартовые заклинания? Короче, гора вопросов. Rolleyes
Quote:Еще появился вопрос, где задаются стартовые скиллы героев, специализации, стартовые заклинания? Короче, гора вопросов
Arseniy, если без ERM'a то ставьте IDA, качайте эту базу исходников и исследуйте
Не надо даже IDA. По тому, что там забито 90, понятно, что затёрты какие-то команды. Надо просто открыть дизасм и посмотреть что эти команды делали. А потом и исправить их на нужные.
Arseniy, FF - байт, FFFF - word, FFFFFFFF - dword.
Quote:FF - байт, FFFF - word, FFFFFFFF - dword.
Да, мне это очевидно.
Вопрос был, сколько байт писать по адресам:
4C948F
4C9497
4C950F
и почему.
Quote: ; стартовый адрес этой функции : 4C948F
; char __thiscall GenerateTavernHero(_MainStruct_ *this, int heroNum, int a3, char NoArmy)
GenerateTavernHero proc near

ArtNum= byte ptr -8
var_4= dword ptr -4
heroNum= dword ptr 8
a3= dword ptr 0Ch
NoArmy= dword ptr 10h

push ebp
mov ebp, esp
sub esp, 8 ; Integer Subtraction
mov edx, [ebp+heroNum] ; High
push ebx
mov eax, edx
push esi
shl eax, 6 ; Shift Logical Left
add eax, edx ; Add
lea esi, [edx+edx*2] ; Load Effective Address
shl esi, 3 ; Shift Logical Left
lea eax, [eax+eax*8] ; Load Effective Address
sub esi, edx ; Integer Subtraction
cmp CampaignGame, 0 ; Compare Two Operands
push edi
lea ebx, [ecx+eax*2] ; Load Effective Address
mov eax, HeroInfoTablePo
lea edi, [ebx+216B1h] ; Load Effective Address
lea esi, [eax+esi*4] ; Load Effective Address
jz short loc_004C9446 ; Jump if Zero (ZF=1)
Вот код функции, в которую это пишется. Но я совсем не силен в ассемблере.
(14.03.2014 13:10)Arseniy Wrote: [ -> ]Можно ли менять тип юнитов?
Да, можно. Для себя сделал так
67C7AC 67;Алкин 1-2-5
67C6EC 62;Вистан 1-2-2
67C698 68;Дракон 1-1-3
67C638 64;Брон 1-2-4
67C63C 6B;Брон 1-2-4
67C190 5D;Шива 1-2-5
67C1EC 58;Гретчин 1-1-3
67C248 5B;Креллион 1-2-4
67C2F8 54;Тираксор 1-2-2
67BF0C 4D;Geon 1-2-4
67BD40 4A;Shakti 1-1-3
67BB74 4F;Dace 1-2-5
67BAB4 46;Loreley 1-2-2
67B780 3C;Galtran 1-1-3
67B5B4 41;Moandor 1-2-5
67B558 3F;Vokial 1-2-4
67B4F4 38;Straker 1-2-2
67B1C0 33;Nimus 1-2-5
67B100 2A;Calh 1-2-2
67B050 2E;Ignaty 1-1-3
67AFF4 30;Marius 1-2-4
67ADCC 23;Teodor Golem > Mage
67AAEC 20;Torosar > Golem
67AAE8 1C;Torosar Gargoile > Gremlin
67A9D8 25;Thane Golem > Genie
67A974 1C;Пикедрам Gargoyle -> Gremlins
67A920 15;Aeris Elf > Pegasi
67A4D0 17;Ryland Elf > Dendr
67A410 0E;Ufretin Dwarf > Centaur
67A528 0E;Torgrim Dwarf > Centaur
67A24C 09;Inkham Griffon > Monk
679FC8 07;Sorsha: Griffon > Swordsman
679F68 00;Lord Haart: Archers->Pikemen
679E50 00;Valeska: 1-2-2

Quote:где задаются стартовые скиллы героев, специализации, стартовые заклинания?
Где-то рядом с этими значениями. Здесь, на DF2 или НС feanor или MOP выкладывали информацию об всех адресах стартовых героев
As Master of Puppets said:
   "679DD0h (279DD0h in exe, similar for SoD and all WoGs, but may not for HotA) - hero initial parameters. Array of dwords:
   1. Sex
   2. ?
   3. Class
   4. 1st skill
   5. 1st skill level
   6. 2nd skill
   7. 2nd skill level
   8. Spell book flag
   9. Spell number
   10. Creature type in first slot
   11. Creature type in second slot
   12. Creature type in third slot
   13. Pointer to small portrait name
   14. Pointer to large portrait name
   15. ?
   16-23. Always null.
Reference URL's