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

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
void_17, Поля битвы при обработке топазом очень похожи на HD Edition - даже местами лучше
Они какой-то другой (похожей) программой обрабатывали
Кстати вот наводка - HD Edition хранят весь интерфейс с не перекраской цветов (синего как в оригинале) а отдельно изображения с другим цветом
Практически полностью разобрал combatManager, кроме полей, которые находятся по смещению от 0x13304 до 0x133CC.
upd.: Не обращайте внимания, я опять невнимательно посмотрел...
Завтра посмотрю, для чего поле unknown1.
Структура :
Code:
class combatManager : baseManager
{
  CNetMsgHandlerPause *netMsgHandlerPause;
  int iNextAction;
  int iNextActionExtra;
  int iNextActionGridIndex;
  int iNextActionGridIndex2;
  uchar iLastDrawGridShade[187];
  uchar iCurDrawGridShade[187];
  struct hexcell cell[187];
  int combatTerrain;
  int combatFringe;
  int iCombatCycleType;
  int iElevationOverlay;
  int iDoorStatus;
  uchar bMoatOn;
  uchar moatIsWide;
  Bitmap16Bit *SaveScreenPreGrid;
  Bitmap16Bit *SaveScreenPostGrid;
  Bitmap16Bit *combatMouseBackground;
  int bBackgroundDrawn;
  NewmapCell *EventCell;
  uchar OnMagicPlains;
  uchar OnCursedGround;
  uchar OnAntiMagicGarrison;
  uchar IsSurrounded;
  uchar OnBoats;
  uchar OnBeach;
  struct town *combatTown;
  struct hero *Heroes[2];
  int iSideSpellPower[2];
  uchar PlayDoh[2];
  uchar PlayYeah[2];
  uchar DohPlayedThisRound[2];
  uchar YeahPlayedThisRound[2];
  int cmbtHeroFrameType[2];
  int cmbtHeroFrameIndex[2];
  int cmbtHeroDataSet[2];
  ulong cmbtHeroLastFidgetTime[2];
  CSprite *cmbtHero[2];
  CSprite *cmbtHeroFlag[2];
  int cmbtHeroFlagFrame[2];
  SLimitData sCmbtHeroLimitData[2];
  SLimitData sCmbtHeroFlagLimitData[2];
  std::vector< SpellID > EagleEyeSpellLearned[2];
  uchar ArmyEffected[2][20];
  bool IsHuman[2];
  bool IsLocalHuman[2];
  int iPlayer[2];
  bool bArtifactCast[2];
  int bSpellsCast[2];
  int numArmies[2];
  armyGroup *ArmyGroups[2];
  army Armies[2][21];
///////////////////////
  int unknown1;
//////////////////////
  int turnSinceLastEnchanter[2];
  bool OnNativeTerrain[2];
  enum TCreatureType SummonedElemental[2];
  int SideRetreated;
  int currArmyGroup;
  int currArmyIndex;
  int currControl;
  int autoCombatOn;
  army *currTroop;
  uchar selectorOn;
  int selectorIndex;
  int highlighterOn;
  int highlighterIndex;
  int lastMoveToIndex;
  int lastCommand;
  int combatCommand;
  CSprite *CurLoadedSpellIcon;
  int CurLoadedSpellEffect;
  int CurSpellEffectFrame;
  TFortificationLevel fortificationLevel;
  int bBattleOver;
  TCombatWindow *mainWindow;
  int bCombatShowIt;
  iconWidget * iconWidgetWL[ 25 ];
  textWidget * textWidgetWL[ 25 ];
  enum type_combat_cursor attack_cursor[ 12 ];
  int attack_hex[ 12 ];
  enum type_combat_cursor last_attack_cursor;
  int iTtlCombatDirections;
  int iBackgroundFrame;
  bool bCreatureIsDead[2][20];
  bool bSomeCreaturesVanish;
  const char *cBkgName;
  combatManager::adjacency_array AdjacentIndex[187];
  uchar SaveBiggestExtent;
  int LimitToExtent;
  int ComputeExtentOnly;
  SLimitData Extent;
  int winner;
  int SkeletonsCreated;
  enum TCreatureType skeleton_type;
  Bitmap816 *NumberWindow;
  std::vector< combatManager::TObstacle > Obstacles;
  bool InPlacementPhase;
  int turn_number;
  int BattleTacticsAdvantage;
  bool DebugNoSpellLimit;
  bool DebugShowHiddenObjects;
  bool DebugShowBlockedHexes;
  combatManager::TArcher Archers[3];
  bool in_second_phase;
  int OriginalAttackSkill;
  int OriginalDefenseSkill;
  int OriginalPowerSkill;
  int original_mana;
  Bitmap816 *wallImages[18][5];
  int wallLevel[18];
  int wall_frame[18];
  type_point map_point;
  Bitmap816 *CombatCellGrid;
  Bitmap816 *CombatCellShaded;
  int ObstacleAnimationFrame;
  bool bCreatureEffect[2][20];
  bool bHeroEffect[2];
  bool bFlagEffect[2];
  bool bArcherEffect[3];
  bool any_action_taken;
  uchar creaturePath[187];
};
Code:
iconWidget* iconWidgetWL[25]; // 76244
textWidget* textWidgetWL[25]; // 76344
Ну и тупанул же я! Rolleyes

Действительно, я почему-то проморгал эти поля, хотя они очевидно там были.

Получается, combatManager разобран абсолютно полностью(кроме поля unknown1). Спустя стольких лет..
void_17, прекрасная работа!
А нет ли у кого-нибудь IDA версии 6.3 ?
Почему именно 6.3? Где ты такие раздачи то видел?
Вопрос не про то, кто какие раздачи видел. Поэтому если есть такая версия - то хорошо (и тогда можно и поговорить, зачем это нужно), остальные же разговоры - бессмыслица.
Мда... Не всё то виндовс, что висит...
igrik, 85
Reference URL's