IPB

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

8 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Инженерный анализ, Reverse Engineering
Чёртос-2 (Chorto...
сообщение 24 Sep 2007, 21:39 (Сообщение отредактировал Iv - 19 Oct 2012, 15:23)
Сообщение #1

The Unicode Man
Сообщений: 993
Спасибо сказали: 6 раз




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

Обсуждение в соответствующей теме.


--------------------
© 2005–2011 Чёртос-2
Go to the top of the pageAdd Nick
 
+Quote Post
sergroj
сообщение 28 Sep 2007, 21:30 (Сообщение отредактировал sergroj - 29 Sep 2007, 21:38)
Сообщение #2

В миру GrayFace
Сообщений: 2 528
Спасибо сказали: 816 раз




Таблица монстров состоит из таких структур: (одинакова для игры и редактора карт)
Код
   Town: int;
   Level: int;
   SoundName: PChar; // 4 буквы, с которых начинаются звуки монстра
   DefName: PChar;
   Flags: int;
   Name: PChar;
   PluralName: PChar;
   Features: PChar; // (описание способностей)
   CostWood: int;
   CostMercury: int;
   CostOre: int;
   CostSulfor: int;
   CostCrystal: int;
   CostGems: int;
   CostGold: int;
   FightValue: int;
   AIValue: int;
   Growth: int;
   HordeGrowth: int;
   HitPoints: int;
   Speed: int;
   Attack: int;
   Defence: int;
   DamageLow: int;
   DamageHigh: int;
   Shots: int;
   Spells: int;
   AdvLow: int;  // ?
   AdvHigh: int; // ?


В файле h3wog.exe таблица стандартных монстров находится по адресу $2703B8, а новые монстры - $31C188.

Таблица артефактов (проверял только в редакторе)
Код
   ArTraits: array[0..6] of int;
   CantAdd: int;

ArTraits я не описывал, но он полностью соответствует столбцам файла ArTraits.txt
CantAdd - если не 0, то в Редакторе карт артефакт не показывается в списке тех, которые можно дать герою, поставить наградой за задание провидца и т.п.


--------------------
ДНК банана на 50% состоит из человека.
Go to the top of the pageAdd Nick
 
+Quote Post
Irh
сообщение 29 Sep 2007, 15:03
Сообщение #3

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




sergroj, зачет!
Добавлю то, что известно мне.

1. Структура h3wog.exe 3,57
Как я понял, h3wog.exe представляет собой два склееных исполняемых файла - обычный heroes3.exe с определенными изменениями и некую DLL. Базовый адрес загрузки первого - 400000h, второго - 465000h, то есть байт в позиции А в h3wog.exe загружается по адресу:
400000 + А, если А < 29B000,
465000 + А, если А >= 29B000.
(на всеобъемность не претендую, там могут быть другие сегменты)

2. Массив дескрипторов существ
Массив параметров старых существ (SoD) хранится по адресу exe:2703B8 (mem:6703B8) и содержит 150d записей по 74h байта.
Массив параметров новых существ (WoG) хранится по адресу exe:2DE1C8 (mem:7431C8) и содержит 42d записи.
При инициализации (сразу после старта героев, до видеозаставки) эти массивы копируются в один общий массив длиной 192 записи, располагающийся по адресу mem:776F68 - видимо, он и используется в игре.

Структура записи:
DWORD мировоззрение (0 - замок);
DWORD уровень (0 - первый, 6 - седьмой, максимальный (даже у лазурных));
DWORD префикс звуковых файлов (указатель на Zero-terminated строку из 4-х символов);
DWORD имя дефа; (указатель на строку; например, "crgrif.def")
DWORD флаги; (см. ERM helр, !!MA:X)

указатели содержат адреса в памяти, а не в файле (см. п 1)

остальные параметры грузятся из файла или используются по-другому.

3. Копирование массивов
При инищиализации участок кода около 703812 копирует массивы по специальной таблице, находящейся по 745F90. Таблица состоит из записей вида:
DWORD pSrc; // откуда копировать
DWORD pDest; // куда
DWORD cbSize; // размер в байтах
последний элемент таблицы состоит из трех нулей.
Например, есть запись (6703B8, 776F68, 43F8) - копирование массива старых существ (адрес записи 746038).

4. Массив обитателей жилищ
По адресу 63D570 (копируется в 7AF0B0) лежит таблица обитателей генераторов существ (объект на карте) - массив двойных слов. Генератор - тип объекта 17, подтип объекта - индекс в этом массиве.

5. Огненный щит
За наличие огненного щита у султанов Эфритов ответственны две проверки:
:004225D6 837E3435 cmp dword ptr [esi+34], 00000035
:004225DA 740A je 004225E6
и
:00442E61 83793435 cmp dword ptr [ecx+34], 00000035
:00442E65 7507 jne 00442E6E
(35h - Султан-Эфрит). То есть, поменяв эти команды, можно снабдить встроенным огненным щитом другой контингент.

Обнаружены также проверки на тип существа для регенерации, отсоса 2х очков маны и ненависти.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
sergroj
сообщение 29 Sep 2007, 21:37
Сообщение #4

В миру GrayFace
Сообщений: 2 528
Спасибо сказали: 816 раз




1. На самом деле, Славин файл - это exe.
Для WoG 3.58f:
400000 + А, если А < 29C000,
465000 + А, если А >= 29C000.

2.
Для WoG 3.58f:
Массив новых существ стоит в exe по адресу 31C188
Остальное не проверял.


--------------------
ДНК банана на 50% состоит из человека.
Go to the top of the pageAdd Nick
 
+Quote Post
Чёртос-2 (Chorto...
сообщение 30 Sep 2007, 20:50 (Сообщение отредактировал Чёртос-2 (Chortos-2) - 30 Sep 2007, 23:31)
Сообщение #5

The Unicode Man
Сообщений: 993
Спасибо сказали: 6 раз




Всё для WoG 3.58f.

Все адреса указаны в шестнадцатиричной системе счисления и являются виртуальными адресами с image base (400000). Когда числа указаны в формате «от … до …», оба конца отрезка берутся включительно.


Таблица с типами стрелковых снарядов (стрел и т. п.) для стандартных существ

Хранится в адресах 00797BB8–00797C7B (неиспользующаяся оригинальная — 0043DBA4–0043DC34). На каждое существо отводится один байт с номером типа снаряда. Таблица начинается с лучника (существо № 2) и заканчивается неким существом № 197 (оригинальная — баллистой, существом № 146).


Имена изображений стрелковых снарядов (стрел и т. п.)

В адресах 0043DAAA–0043DB1C расположен оператор выбора (switch для любителей C‐подобных языков, case для любителей Pascal‐подобных). Он содержит 16 имен DEF‐файлов (для типов снаряда №№ 00–0Fh), плюс один дополнительный пункт, выполняемый по умолчанию, то есть для всех остальных типов снаряда. При запуске WoG код оператора изменяется так, чтобы для типа 01 совершался прыжок на 007649D0, где проводится проверка на драколича — если это существо № 196, используется изображение дыхания драколича, если нет — стандартное изображение стрелы лучника из замка.


SUB_L004F6C00, функция отображения сообщения

Код
enum msg_type: long
{
    MSG_OK = 1,
    MSG_YES_NO = 2,
    MSG_RIGHT_CLICK = 4,
};

// Display a message
fastcall void SUB_L004F6C00(const char *text, msg_type type, int, int, int, int, int, int, int, int, int, int);

// Example (taken from 004F879A):
SUB_L004F6C00("This game runs in 65536 color mode. You must switch the desktop to this mode before playing the game.", MSG_OK, -1, -1, -1, 0, -1, 0, -1, 0, -1, 0);
Есть идея, что таинственные аргументы −1 и 0 могут являться типами и подтипами изображений (как в ERM у !!IF:M и !!IF:Q).


SUB_L0050CEA0, функция смены курсора мыши

Код
enum pointer_type: long
{
    POINTER_DEFAULT,
    POINTER_ADVMAP,
    POINTER_COMBAT,
    POINTER_SPELL, // This is an animated pointer, subtype = frame index
    POINTER_ARTIFACT,
};

// Change the mouse pointer
pascal void SUB_L0050CEA0(pointer_type type, int subtype);


Непонятные функции

Код
// Get a text file from the bitmap LOD (details not found out yet)
// If unsuccessful (?), returns NULL
cdecl char *SUB_L0055BFE0(const char *filename);

// ?? Do something with a creature-related sound;
//    pattern like '%sshot.82M'
void SUB_L006179DE(void *, const char *pattern, int);

По адресу 00559390 что‑то делается с LOD‐файлами.


--------------------
© 2005–2011 Чёртос-2
Go to the top of the pageAdd Nick
 
+Quote Post
Irh
сообщение 04 Oct 2007, 21:52
Сообщение #6

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




Координаты строений в городе

по смещению 0x0028AA0c + (44 * Town + Area) * 6 содержится структура вида:
WORD frames
WORD x
WORD y

frames - число кадров в анимации (или состояний, как, например, для верфи)

См. форматы Т (Town Types), CMI (Item/area of the Town Screen)

Примеры:

TBTWTVRN.DEF - Tower Tavern (5) - (375, 278) = (0x177, 0x116)
*0x0028AC3C = 77 01 16 01

TBTWCSTL.def - Tower Fort(7) - (304, 0) = (0x130, 0)
*0x0028AC48 = 30 01 00 00

TBTWDW_0.def - Gremlins Dwelling (30) - (453, 221) = (0x1C5, 0xDD)
*0x0028ACD2 = C5 01 DD 00

Tower Mage Guild 1 (0) - (597, 82) = (0x255, 0x52)
*0x0028AC1E = 55 02 52 00

TBFRDW_0.DEF - Gnoll Dwelling (30) - (641, 168) = (0x281, 0xA8)
*0x0028B1FA = 81 02 A8 00

Поле frames
Castle:
00 0 Level 1 Mage Guild
00 1 Level 2 Mage Guild
0B 2 Level 3 Mage Guild
0B 3 Level 4 Mage Guild
00 4 Level 5 Mage Guild
00 5 Tavern
02 6 Shipyard (Castle, Fortress, Necropolis)
00 7 Fort
00 8 Citadel
00 9 Castle
0A 10 Village Hall
0A 11 Town Hall
0A 12 City Hall
0A 13 Capitol
00 14 Marketplace
00 15 Resource Silo
00 16 Blacksmith
14 17 Special Building: Lighthouse
00 18 Horde Building: Griffin Bastion
00 19 Upgraded Dwelling with Horde Building (see 18 for particulars)
02 20 ?
00 21 Special Building: Stables
00 22 Special Buildings: Brotherhood of the Sword
0A 23 Special Building: NFA: Waterfall
00 24 Horde Building 2: None

Fortress
00 0 Level 1 Mage Guild
00 1 Level 2 Mage Guild
15 2 Level 3 Mage Guild
00 3 Level 4 Mage Guild
00 4 Level 5 Mage Guild
15 5 Tavern
00 6 Shipyard (Castle, Fortress, Necropolis)
00 7 Fort
00 8 Citadel
15 9 Castle
00 10 Village Hall


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Irh
сообщение 12 Oct 2007, 22:23
Сообщение #7

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




Рекомендую редактор двоичных файлов 010 Editor. Там куча разных функций, и, в частности, С-подобный язык скриптов и описания шаблонов. Вот пример шаблона для h3wog.exe, содержащий некоторые массивы, относящиеся к строениям в городе:
(объявление переменной соответсвует чтению ее из текущего места в файле)
Код
// Common definitions

// Map memory pointer to file offset
DWORD MemToFile( DWORD p )
{
 return p < 0x69B000 ? p - 0x400000 : p - 0x465000;
}

// Pointer to zero-terminated string
typedef DWORD StringPtr <read=ReadStringPtr>;

string ReadStringPtr( StringPtr &p )
{
 return ReadString(MemToFile(p));
}

// Town screen areas DEF's
// TB##$$$$
// ## - Town code, $$$$ - Building code, ".DEF" omitted

FSeek(0x00243074);

struct
{
 StringPtr townBuildings[44];
} townsBuildings[9];

// Town screen areas outline and mask bitmaps
// TO#$$$$$ or TO##$$$$
// # - Town code, $ - Building code, ".pcx" omitted
// Used for TO*.pcx and TZ*.pcx

FSeek(0x0028A3DC);

struct
{
 StringPtr townBuildingOutlines[44];
} townsBuildingOutlines[9];


// Town building icons
// BO##$$$$.pcx
// # - Town code, $ - Building code

FSeek(0x002755B8);

struct
{
 StringPtr townBuildingIcons[44];
} townsBuildingIcons[9];

// Town screen areas placement

FSeek(0x0028AA0c);

struct AreaPos
{
 WORD frames; // Animation frames count or states count
 WORD x, y;
};

struct
{
 AreaPos buildingPositions[44] <read=ReadAreaPos>;
} townsBuildingPositions[9];

string ReadAreaPos( struct AreaPos &fxy )
{
 string s;
 SPrintf(s, "(%d, %d), %d frames", fxy.x, fxy.y, fxy.frames);
 return s;
}

// Buildings list per town, order seems arbitrary

enum <byte> TownArea
{
Mage1,
Mage2,
Mage3,
Mage4,
Mage5,
tavern,
shipyard,
fort,
citadel,
castle,
village_hall,
town_hall,
city_hall,
capitol,
marketplace,
silo,
blacksmith,
special1,
horde1,
horde1U,
Ship,
special2,
special3,
special4,
horde2,
horde2U,
Grail,
town_houses,
city_houses,
Capitol_houses,
dwelling1,
dwelling2,
dwelling3,
dwelling4,
dwelling5,
dwelling6,
dwelling7,
upgradeddwelling1,
upgradeddwelling2,
upgradeddwelling3,
upgradeddwelling4,
upgradeddwelling5,
upgradeddwelling6,
upgradeddwelling7,
};

FSeek(0x242EC4);

struct
{
 TownArea areas[44];
} townsAreas[9];


Здесь описаны спрайты, маски и иконки зданий, а также положение зданий. В массивах последней структуры перечислены номера строений соответсвующего города; порядок, по-видимому, случаен.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Irh
сообщение 12 Oct 2007, 22:54
Сообщение #8

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




В принципе, для добавления отображаемого спрайта строения нужно:
- Добавить свободный номер здания (0...43) в townsAreas
- Обеспечить спрайты и маски
- Задать позицию в townsBuildingPositions

Здание на экране появляется. Последствия этого еще предстоит исследовать...


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
major
сообщение 15 Nov 2007, 20:27
Сообщение #9

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




Регенерация существ

002F55C7 83F8 3C CMP EAX,3C //стражи
002F55CA 0F84 BB000000 JE 002F568B
002F55D0 83F8 3D CMP EAX,3D //привидения
002F55D3 0F84 B2000000 JE 002F568B
002F55D9 3D 90000000 CMP EAX,90 //тролли
002F55DE 0F84 A7000000 JE 002F568B
002F55E4 3D 9D000000 CMP EAX,9D //кошмарные гидры
002F55E9 0F84 92000000 JE 002F5681
где 3C, 3D, 90, 9D - номер существа в шестнадцатеричной системе

Для кошмарных гидр выполняется проверка вероятности регенерации
002F5681 E8 9A7EFFFF CALL 002ED520
002F5686 83F8 28 CMP EAX,28
где 28h = 40% вероятность. Ее можно убрать если вместо JE 002F5681 поставить JE 002F568B.

А вот тут находится количество срегенерированных жизней
002F55BC BA 32000000 MOV EDX,32
где 32h = 50 HP.


Атака с возвращением

002F57C6 83F8 48 CMP EAX,48 //гарпия
002F57C9 74 5D JE SHORT 002F5828
002F57CB 83F8 49 CMP EAX,49 //гарпия-ведьма
002F57CE 74 58 JE SHORT 002F5828
002F57D0 3D 9B000000 CMP EAX,9B //темный дракон
002F57D5 74 21 JE SHORT 002F57F8 //доп проверка двуклеточности

Для выбора режима нападения при нажатия правой кнопкой на защите (атаковать и вернуться или атаковать и остаться там)
002FA2D7 837D F0 48 CMP DWORD PTR SS:[EBP-10],48 //гарпия
002FA2DB 74 23 JE SHORT 002FA300
002FA2DD 837D F0 49 CMP DWORD PTR SS:[EBP-10],49 //гарпия-ведьма
002FA2E1 74 1D JE SHORT 002FA300
002FA2E3 817D F0 9B000000 CMP DWORD PTR SS:[EBP-10],9B //темный дракон
002FA2EA 74 14 JE SHORT 002FA300


Возрождение фениксов

002F587C 817E 34 83000000 CMP DWORD PTR DS:[ESI+34],83 //феникс
002F5883 74 38 JE SHORT 002F58BD
002F5885 817E 34 9E000000 CMP DWORD PTR DS:[ESI+34],9E //священный феникс
002F588C 74 1C JE SHORT 002F58AA

Подскажите плиз где идет проверка на высасывание маны привидениями и кастование заклинаний после атаки (единороги, зомби, медузы, василиски, стрекозы и т.д.)
Go to the top of the pageAdd Nick
 
+Quote Post
Irh
сообщение 17 Nov 2007, 15:49
Сообщение #10

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




Номер города, у которого Грааль дает все заклинания (0-8, другое значение означает "никакой", по умолчанию 08 - Сопряжение)
BYTE 0x005BE4F6 - влияет на изучение заклинаний героем
BYTE 0x005D743E - влияет на вид заклинания в гильдии
Проблема: остаются подсказки по щелчку/наведению мыши

---

*(DWORD *)0x00699538 + 0x21620 - адрес массива структур Героев
размер структуры 0x492
Т.е.
*(DWORD *)0x00699538 + 0x21620 + 0x492 - по этому адресу располагается структура Валески, и т.д.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Д'якон_*
сообщение 17 Nov 2007, 16:00
Сообщение #11







По указателю 0х004С2001 +224091

содержаться адреса с шагом 4 отвечающие за подсказку в гильдии
Go to the top of the pageAdd Nick
 
+Quote Post
Entuser
сообщение 22 Jan 2008, 11:10
Сообщение #12

Радиация!
Сообщений: 62
Спасибо сказали: 9 раз




7AD78 - тут в екзишнеке храниться число 5 - после загрузки изменяется на 34(HEX) - влияет на число загружаемых строк в ZCRTRAITS.
mem 007012A4 / file 29C2A4 - изменяет это значение и много других
Go to the top of the pageAdd Nick
 
+Quote Post
Чёртос-2 (Chorto...
сообщение 07 Mar 2008, 21:37 (Сообщение отредактировал Чёртос-2 (Chortos-2) - 07 Mar 2008, 21:41)
Сообщение #13

The Unicode Man
Сообщений: 993
Спасибо сказали: 6 раз




Функция проверяет, есть ли у героя заданный артефакт (перед вызовом в ecx кладётся указатель, видимо, на структуру героя):
CODE
unsigned __int8 __stdcall has_artifact_004D9420(int artifact_number)
{
char *hero_struct; // ecx@0
signed int body_slot_number; // eax@1
_DWORD *body_slot_pointer; // edx@1
signed int backpack_slot_number; // eax@4
_DWORD *backpack_slot_pointer; // ecx@4

body_slot_number = 0;
body_slot_pointer = hero_struct + 301;
while ( *body_slot_pointer != artifact_number )
{
++body_slot_number;
body_slot_pointer += 2;
if ( body_slot_number >= 19 ) // Nothing on the body? Look in the backpack then
{
backpack_slot_number = 0;
backpack_slot_pointer = hero_struct + 468;
while ( *backpack_slot_pointer != artifact_number )
{
++backpack_slot_number;
backpack_slot_pointer += 2;
if ( backpack_slot_number >= 64 )
return 0; // Backpack neither => found nothing
}
return 1; // Found the artifact in slot #backpack_slot_number
}
}
return 1; // Found the artifact in slot #body_slot_number
}
Код сгенерирован Hex-Rays (я переименовал переменные, указал типы указателей так, чтобы не было лишних приведений типов, и добавил комментарии, которые по-английски).

P. S. Чуть не забыл: если возвращается один, значит, артефакт есть, если ноль — значит, его нет. В оригинале наверняка возвращался тип bool.


--------------------
© 2005–2011 Чёртос-2
Go to the top of the pageAdd Nick
 
+Quote Post
major
сообщение 01 Jul 2008, 16:57
Сообщение #14

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




Бесстрашие

002F7C6C 817F 34 84000000 CMP DWORD PTR DS:[EDI+34],84 //лазурный дракон
002F7C73 74 46 JE SHORT 002F7CBB
002F7C75 817F 34 96000000 CMP DWORD PTR DS:[EDI+34],96 //верховный архангел
002F7C7C 7C 09 JL SHORT 002F7C87
002F7C7E 817F 34 C0000000 CMP DWORD PTR DS:[EDI+34],0C0 //сильванский кентавр
002F7C85 7C 34 JL SHORT 002F7CBB
т.е. бесстрашием обладают Лазурный дракон и диапазон существ от Верховного архангела (150) до командира Сопряжения (191).

Страх

002F7CEA 81FB 84000000 CMP EBX,84 //лазурный дракон
002F7CF0 74 75 JE SHORT 002F7D67
002F7CF2 81FB 99000000 CMP EBX,99 //антихрист
002F7CF8 74 6D JE SHORT 002F7D67
002F7CFA 81FB 9B000000 CMP EBX,9B //темный дракон
002F7D00 74 65 JE SHORT 002F7D67

002F7D16 813D 68218302 AE000000 CMP DWORD PTR DS:[2832168],0AE
002F7D20 7C 21 JL SHORT 002F7D43
002F7D22 813D 68218302 BF000000 CMP DWORD PTR DS:[2832168],0BF
002F7D2C 7F 15 JG SHORT 002F7D43
все командиры сопряжения (в качестве монстров видимо)
Go to the top of the pageAdd Nick
 
+Quote Post
major
сообщение 01 Jul 2008, 17:30 (Сообщение отредактировал major - 29 Jul 2008, 08:38)
Сообщение #15

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




Магическое зеркало

00048528 8179 34 86000000 CMP DWORD PTR DS:[ECX+34],86
0004852F 75 1E JNZ SHORT 0004854F
где 86h = 134 - Сказочный дракон


Атака огненным шаром

0003F72C 83F8 2D CMP EAX,2D
0003F72F 0F85 EA020000 JNZ 0003FA1F
где 2Dh = 45 - Магог


Атака облаком смерти

002FF990 83F8 40 CMP EAX,40 //лич
002FF993 74 12 JE SHORT 002FF9A7
002FF995 83F8 41 CMP EAX,41 //могущественный лич
002FF998 74 0D JE SHORT 002FF9A7
002FF99A 3D C4000000 CMP EAX,0C4 //драколич
002FF99F 74 06 JE SHORT 002FF9A7
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 04 Jul 2008, 11:37
Сообщение #16

пират с чёрной меткой
Сообщений: 23 596
Спасибо сказали: 12876 раз




А Драколич разве облаком смерти стреляет? Какой-то зелёной гадостью вроде...


--------------------
Давший быка на убой не выпросил и печень на жаркое.
Go to the top of the pageAdd Nick
 
+Quote Post
major
сообщение 04 Jul 2008, 12:50
Сообщение #17

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




Облако смерти + иногда травит
Go to the top of the pageAdd Nick
 
+Quote Post
major
сообщение 04 Jul 2008, 17:59
Сообщение #18

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




Таблица существ, в которые трансформируются существа в преобразователе скелетов, начинается по адресу 0024130C - соответствено первое существо Копейщик. Для каждого существа отведено 4 байта. Заканчивается это по адресу 0024154С - тролль.
Затем продолжается по адресу 0031DA14 - катапульта, вплоть до адреса 0031DAE0 - драколич.
Go to the top of the pageAdd Nick
 
+Quote Post
sergroj
сообщение 07 Jul 2008, 13:48
Сообщение #19

В миру GrayFace
Сообщений: 2 528
Спасибо сказали: 816 раз




24130C и 31DA14 - не постоянные адреса. На эти блоки где-то есть ссылки, при желании могу найти.


--------------------
ДНК банана на 50% состоит из человека.
Go to the top of the pageAdd Nick
 
+Quote Post
Чёртос-2 (Chorto...
сообщение 28 Sep 2008, 16:05
Сообщение #20

The Unicode Man
Сообщений: 993
Спасибо сказали: 6 раз




Цитата(FakerNeo @ 31 Jul 2008, 16:35)
атака 44065C - таблица для монстров начиная с 16h монстра
защита 4412D8 - начиная с 3Fh монстра.
Цитата(major @ 31 Jul 2008, 17:20)
Только в 44065C находятся наложения заклинаний на монстров, а в 4412D8 - уникальные способности, как я понял.
По аналогии нашел таблицу, включающую WOG существ.
mem332AD8 - наложение заклов
mem332A4C - способности
Цитата(major @ 31 Jul 2008, 18:52)
mem332СС4 - таблица сопротивляемости магии существ начинается с гнома 10h
магические способности существ начинается с Архангела 0Dh почему то по трем адресам 332990, 3328D4 и 332818.


--------------------
© 2005–2011 Чёртос-2
Go to the top of the pageAdd Nick
 
+Quote Post

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

 



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