Ниже будут описаны основые функции и процедуры ERA. Более полная технической документации располагается в каталоге Игра\Tools\Era\, или же вы можете задать конкретные вопросы непосредственно на официальном форуме проекта.
PROCEDURE Hook (HandlerAddr: POINTER; HookType: INTEGER; PatchSize: INTEGER; CodeAddr: POINTER); STDCALL;HookType = HOOKTYPE_BRIDGE,
при котором низкоуровневый переходник к высокоуровневой функции будет сгенерирован автоматически.PROCEDURE Hook_X (Context: PHookHandlerArgs): LONGBOOL; STDCALL;
PROCEDURE ApiHook; STDCALL;BRIDGE),
что позволяет вызывать также и оригинальные функции, минуя установленные перехватчики.PROCEDURE ClearAllIniCache; STDCALL;PROCEDURE ClearIniCache; STDCALL;PROCEDURE ExecErmCmd (CmdStr: PCHAR); STDCALL;ExecErmCmd('IF:L^Hello, World!^;');
PROCEDURE ExtractErm; STDCALL;PROCEDURE FatalError (Err: PCHAR); STDCALL;PROCEDURE FireEvent (EventName: PCHAR; {n} EventData: POINTER; DataSize: INTEGER); STDCALL;EventData указывает на блок параметров события (если есть), а DataSize определяет размер этого блока.
Посредством данного механизма можно передавать обработчикам ценную информацию о событии.PROCEDURE FireErmEvent (EventID: INTEGER); STDCALL;PROCEDURE ForceTxtUnload (Name: PCHAR); STDCALL;FUNCTION GetButtonID (ButtonName: PCHAR): INTEGER; STDCALL;Экран кнопки;Уникальное имя кнопки;DEF кнопки;X;Y;Ширина;Высота;Длинное описание;Короткое описание;Код горячей клавиши
, где[Экран кнопки] может принимать одно из следующих значений:
Advmap (для карты приключений)Town (для города)Hero (для экрана героя)Heroes (для экрана встречи героев)Battle (для экрана битвы)Dummy (если кнопка не используется)Hero;SecSkills.ScrollUp;ScrollUp.def;300;303;12;44;sss.scroll_up;sss.scroll_up;38
PROCEDURE GetGameState (VAR GameState: TGameState); STDCALL;FUNCTION GetRealAddr (Addr: POINTER): POINTER; STDCALL;PROCEDURE KillThisProcess; STDCALL;FUNCTION LoadImageAsPcx16 (FilePath, PcxName: PCHAR; Width, Height, MaxWidth, MaxHeight, ResizeAlg: INTEGER): {OU} Heroes.PPcx16Item; STDCALL;FUNCTION LoadTxt (Name: PCHAR): {n} PTxtFile; STDCALL;PROCEDURE NameColor (Color32: INTEGER; Name: PCHAR); STDCALL;NameColor($000000, 'bl'); теперь можно использовать {~bl}...{~} для чёрного текста
FUNCTION PatchExists (Name: STRING): BOOLEAN; STDCALL;FUNCTION PluginExists (Name: STRING): BOOLEAN; STDCALL;FUNCTION ReadSavegameSection (DataSize: INTEGER; {n} Dest: POINTER; SectionName: PCHAR): INTEGER; STDCALL;PROCEDURE WriteSavegameSection (DataSize: INTEGER; {n} Data: POINTER; SectionName: PCHAR); STDCALL;FUNCTION ReadStrFromIni (Key, SectionName, FilePath, Res: PCHAR): BOOLEAN; STDCALL;Res. При первом же чтении ini-файл анализируется, кэшируется и дальнейшие запросы приводят к выборкам из ассоциативного массива,
которые происходят очень быстро и без обращения к жёсткому диску.FUNCTION WriteStrToIni (Key, Value, SectionName, FilePath: PCHAR): BOOLEAN; STDCALL;FUNCTION RecallAPI (Context: PHookHandlerArgs; NumArgs: INTEGER): INTEGER; STDCALL;PROCEDURE RedirectFile (OldFileName, NewFileName: PCHAR); STDCALL;PROCEDURE GlobalRedirectFile (OldFileName, NewFileName: PCHAR); STDCALL;PROCEDURE RedirectMemoryBlock (OldAddr: POINTER; BlockSize: INTEGER; NewAddr: POINTER); STDCALL;PROCEDURE RegisterHandler (Handler: TEventHandler; EventName: PCHAR); STDCALL;PROCEDURE ReloadErm; STDCALL;PROCEDURE SaveEventParams; STDCALL;PROCEDURE RestoreEventParams; STDCALL;FUNCTION SaveIni (FilePath: PCHAR): BOOLEAN; STDCALL;PROCEDURE WriteAtCode (Count: INTEGER; Src, Dst: POINTER); STDCALL;