Current time: 09.05.2024, 16:35 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследования игрового формата карт
» технические вопросы
Author Message
Berserker Offline
Administrators

Posts: 16508
Post: #61

Формат файлов кампаний:

Code:
Heroes 3 Campaign (h3c) format after unpacking (gz).
=================================
byte    = 1 byte (0..255)
word    = 2 bytes (0..65535)
integer = 4 bytes (-2147483648..2147483647)
boolean = 1 byte (0 = false, 1 = true)
---------------------------------
const
  (* Hardcoded in camptext.txt, differs for each campaign index. Number of zones in current campaign *)
  NUM_ZONES = ?;

var
  Header: THeader;
  Zones:  array NUM_ZONES of TZone;
  Maps:   array NUM_ZONES of TMap | None;

type
  TString = record
    Length: integer;
    Value:  array Length of char;
  end;

  THeader = record
    GameVersion:             integer = 5 (Armageddon Blade) | 6 (WoG);
    CampaignInd:             byte; // Index of campaign (from 0), see camptext.txt
    CampaignName:            TString;
    CampaignDesc:            TString; // Description
    UserCanSelectDifficulty: boolean;
    MusicTheme:              byte;
  end; // THeader

  TZonePrologue = record
    HasPrologue: boolean;

    if HasPrologue then
      VideoId: byte;
      MusicId: byte;
      Text:    TString;
    end;
  end;

  TZoneEpilogue = record
    HasEpilogue: boolean;

    if HasEpilogue then
      VideoId: byte;
      MusicId: byte;
      Text:    TString;
    end;
  end;

  TStartingOpts = record
    OptsType: byte; // StartingBonus = 1, CrossoverHero = 2, InitialHero = 3

    if OptsType = 1 then
      PlayerColor: byte;
      NumBonuses:  byte;
      Bonuses:     array NumBonuses of record
        BonusType: byte;

        if Bonuses = 0 (spell) then
          Hero:  word; 65023 for most powerful hero
          Spell: byte;
        end;

        if Bonuses = 1 (creature) then
          Creature: word;
          Number:   word;
        end;

        if Bonuses = 3 (artifact) then
          Hero: word;
          Art:  word;
        end;

        if Bonuses = 4 (spell scroll) then
          Hero:  word;
          Spell: byte;
        end

        if Bonuses = 5 (primary skills) then
          Hero:       word;
          PrimSkills: array 4] of byte;
        end;

        if Bonuses = 6 (secondary skill) then
          Hero:     word;
          SecSkill: byte;
          Level:    byte;
        end;

        if Bonuses = 7 (resource) then
          Resource: byte;
          Quantity: integer;
        end;
      end; // Bonuses
    end; // if

    if OptsType = 2 then
      PlayerColor: byte;
      ZoneIndex:   byte;
    end;
  end; // .TStartingOpts

  TZone = record
    FileName:           TString;
    FileSize:           integer;
    RequiredZones:      byte; // Zone prerequisites; bitmask: 1 bit for each zone
    ZoneColor:          byte;
    DifficultyLevel:    byte;
    RegionRmbText:      TString; // Right mouse button hint
    Prologue:           TZonePrologue;
    Epilogue:           TZoneEpilogue;
    HeroesRetain:       byte; // Bitmask of Experience (bit 0), Primary Skills (bit 1), Secondary Skills (bit 2), Spells (bit 3), Artifacts (bit 4)
    CrossoverCreatures: array of 19 bytes; // 1 bit for every creature. Creature ID: 0..159
    CrossoverArts:      array of 18 bytes; // 1 bit for every artifact. Artifact ID: 0..143
    StartingOpts:       TStartingOpts;
  end;

  TMap = unpacked h3m (gz) map


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
14.07.2019 23:59
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Исследования игрового формата карт - MaGoth - 07.07.2011, 23:13
Исследования игрового формата карт - hippocamus - 08.07.2011, 00:08
RE: ERA II - MaGoth - 08.07.2011, 00:17
RE: ERA II - hippocamus - 08.07.2011, 00:22
RE: ERA II - MaGoth - 08.07.2011, 00:30
RE: Исследование героев - Berserker - 08.07.2011, 00:48
RE: Исследование героев - MaGoth - 08.07.2011, 00:56
RE: Исследование героев - etoprostoya - 08.07.2011, 00:59
RE: Исследование героев - MaGoth - 08.07.2011, 01:10
RE: Исследование героев - etoprostoya - 08.07.2011, 01:17
RE: Исследование героев - MaGoth - 08.07.2011, 01:24
RE: Исследование героев - etoprostoya - 08.07.2011, 01:26
RE: Исследование героев - MaGoth - 08.07.2011, 01:28
RE: Исследование героев - baratorch - 08.07.2011, 08:32
RE: Исследование героев - etoprostoya - 08.07.2011, 10:10
RE: Исследование героев - MaGoth - 08.07.2011, 13:14
RE: Исследование героев - FallenAngel - 09.07.2011, 14:09
RE: Исследование героев - hippocamus - 11.07.2011, 13:18
RE: Исследование героев - AKuHAK - 13.08.2011, 22:59
RE: Исследование героев - Berserker - 13.08.2011, 23:19
RE: Исследование героев - etoprostoya - 13.08.2011, 23:37
RE: Исследование героев - AKuHAK - 14.08.2011, 01:01
RE: Исследование героев - etoprostoya - 14.08.2011, 01:04
RE: Исследование героев - AKuHAK - 14.08.2011, 01:08
RE: Исследование героев - AKuHAK - 14.08.2011, 02:19
RE: Исследование героев - Flashback - 14.08.2011, 14:07
RE: Исследование героев - etoprostoya - 14.08.2011, 14:22
RE: Исследование героев - AKuHAK - 14.08.2011, 16:23
RE: Исследование героев - hippocamus - 18.08.2011, 21:46
RE: Исследование героев - etoprostoya - 18.08.2011, 22:02
RE: Исследование героев - AKuHAK - 19.08.2011, 01:22
RE: Исследование героев - hippocamus - 19.08.2011, 02:01
RE: Исследование героев - baratorch - 19.08.2011, 08:38
RE: Исследование героев - AKuHAK - 19.08.2011, 21:46
RE: Исследование героев - AKuHAK - 10.09.2011, 22:20
RE: Исследование героев - solitaire345 - 14.09.2011, 22:14
RE: Исследование героев - Sav - 25.09.2011, 22:57
RE: Исследование героев - Berserker - 26.09.2011, 00:36
RE: Исследование героев - Sav - 26.09.2011, 02:18
RE: Исследование героев - hippocamus - 02.10.2011, 15:14
RE: Исследование героев - Berserker - 02.10.2011, 15:23
RE: ERA II - hippocamus - 28.11.2013, 21:10
RE: ERA II - Berserker - 28.11.2013, 21:45
RE: ERA II - hippocamus - 28.11.2013, 21:56
RE: ERA II - Sav - 28.11.2013, 22:08
RE: ERA II - Berserker - 28.11.2013, 23:14
RE: ERA II - Sav - 28.11.2013, 23:24
RE: ERA II - Berserker - 28.11.2013, 23:55
RE: ERA II - Sav - 29.11.2013, 00:08
RE: ERA II - Berserker - 29.11.2013, 00:17
RE: ERA II - hippocamus - 29.11.2013, 19:59
RE: ERA II - GrayFace - 29.11.2013, 21:42
RE: ERA II - Berserker - 30.11.2013, 02:41
RE: ERA II - AKuHAK - 30.11.2013, 04:05
RE: ERA II - fireman - 27.01.2014, 16:10
RE: ERA II - Bes - 27.01.2014, 17:29
RE: ERA II - hippocamus - 02.02.2014, 00:07
RE: ERA II - Berserker - 02.02.2014, 01:34
RE: ERA II - hippocamus - 04.02.2014, 23:45
RE: ERA II - Berserker - 05.02.2014, 01:13
RE: Исследование героев - Berserker - 14.07.2019 23:59
RE: Вопросы по моддингу - feanor - 27.04.2021, 12:39
RE: Вопросы по моддингу - daemon_n - 27.04.2021, 14:19
RE: Вопросы по моддингу - feanor - 27.04.2021, 16:17
RE: Вопросы по моддингу - XEPOMAHT - 27.04.2021, 17:29
RE: Вопросы по моддингу - feanor - 28.04.2021, 11:36
RE: Вопросы по моддингу - XEPOMAHT - 28.04.2021, 14:40

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group