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

Post Reply 
Threaded Mode | Linear Mode
Новая реализация виртуальной файловой системы
» Тестирование
Author Message
Berserker Offline
Administrators

Posts: 16657
Post: #50

Тут дело не в виртуальной файловой системе, скорее всего. Все pac-и подгружаются вместе с lod-ми и формируют одну таблицу архивов. Скорее всего GrayFace или авторы оригинального редактора вместо цикла линейного поиска по архивам ищут только в одном конкретном лоде.

$4DACE6 — здесь лежит указатель на таблицу лодов.
Нужно прибавить к указателю 99(макс число поддерживаемых архивов - 1) * 400. Получим ссылку на последний lod/pac.

Оттуда цикл вызова 4E48F0 (проверка ресурса в архиве) с вычитанием 400 из указателя на каждом шаге. Как только что-то нашлось или достигли конца — выходим.

Скорее всего, уже есть готовая функция в редакторе, но в оригинальной игре повторяющиеся циклы в каждой функции загрузки ресурса определённого типа.

Code:
function FindFileLod (const FileName: string; out LodPath: string): boolean;
const
  MAX_LOD_COUNT = 100;

type
  PLod = ^TLod;
  TLod = packed record
    Dummy: array [0..399] of byte;
  end;

var
  Lod: PLod;
  i:   integer;

begin
  Lod := Ptr(integer(ppointer($4DACE6)^) + sizeof(TLod) * (MAX_LOD_COUNT - 1));
  // * * * * * //
  result := false;
  i      := MAX_LOD_COUNT - 1;

  while not result and (i >= 0) do begin
    if ppointer(Lod)^ <> nil then begin
      result := FileIsInLod(FileName, Lod);
    end;

    if not result then begin
      Dec(Lod);
      Dec(i);
    end;
  end;

  if result then begin
    LodPath := pchar(integer(Lod) + 8);
  end;
end; // .function FindFileLod


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


Messages In This Thread
Новая реализация виртуальной файловой системы - Berserker - 09.05.2019, 01:27
RE: Новая реализация виртуальной файловой системы - Algor - 09.05.2019, 02:26
RE: Новая реализация виртуальной файловой системы - fireman - 09.05.2019, 05:43
RE: Новая реализация виртуальной файловой системы - daemon_n - 09.05.2019, 08:22
RE: Новая реализация виртуальной файловой системы - wessonsm - 09.05.2019, 10:12
RE: Новая реализация виртуальной файловой системы - daemon_n - 09.05.2019, 13:29
RE: Новая реализация виртуальной файловой системы - PerryR - 09.05.2019, 10:19
RE: Новая реализация виртуальной файловой системы - Elmore - 09.05.2019, 14:25
RE: Новая реализация виртуальной файловой системы - Berserker - 09.05.2019, 15:20
RE: Новая реализация виртуальной файловой системы - wessonsm - 09.05.2019, 19:16
RE: Новая реализация виртуальной файловой системы - igrik - 09.05.2019, 15:31
RE: Новая реализация виртуальной файловой системы - XEPOMAHT - 09.05.2019, 16:04
RE: Новая реализация виртуальной файловой системы - Algor - 09.05.2019, 18:37
RE: Новая реализация виртуальной файловой системы - daemon_n - 09.05.2019, 20:02
RE: Новая реализация виртуальной файловой системы - Berserker - 09.05.2019, 22:45
RE: Новая реализация виртуальной файловой системы - Algor - 10.05.2019, 14:23
RE: Новая реализация виртуальной файловой системы - igrik - 10.05.2019, 14:05
RE: Новая реализация виртуальной файловой системы - Berserker - 10.05.2019, 17:36
RE: Новая реализация виртуальной файловой системы - igrik - 11.05.2019, 03:28
RE: Новая реализация виртуальной файловой системы - igrik - 10.05.2019, 18:16
RE: Новая реализация виртуальной файловой системы - Berserker - 11.05.2019, 03:08
RE: Новая реализация виртуальной файловой системы - Berserker - 11.05.2019, 04:44
RE: Новая реализация виртуальной файловой системы - Berserker - 11.05.2019, 17:45
RE: Новая реализация виртуальной файловой системы - Berserker - 12.05.2019, 02:57
RE: Новая реализация виртуальной файловой системы - SyDr - 12.05.2019, 11:30
RE: Новая реализация виртуальной файловой системы - Berserker - 12.05.2019, 14:14
RE: Новая реализация виртуальной файловой системы - Berserker - 12.05.2019, 15:42
RE: Новая реализация виртуальной файловой системы - SyDr - 12.05.2019, 20:06
RE: Новая реализация виртуальной файловой системы - Berserker - 13.05.2019, 01:32
RE: Новая реализация виртуальной файловой системы - Berserker - 14.05.2019, 19:47
RE: Новая реализация виртуальной файловой системы - wessonsm - 15.05.2019, 07:54
RE: Новая реализация виртуальной файловой системы - Berserker - 15.05.2019, 14:51
RE: Новая реализация виртуальной файловой системы - AlexeevAV - 22.05.2019, 11:46
RE: Новая реализация виртуальной файловой системы - Berserker - 22.05.2019, 14:48
RE: Новая реализация виртуальной файловой системы - Berserker - 24.05.2019, 14:28
RE: Новая реализация виртуальной файловой системы - Berserker - 25.05.2019, 19:22
RE: Новая реализация виртуальной файловой системы - daemon_n - 25.05.2019, 21:01
RE: Новая реализация виртуальной файловой системы - Berserker - 25.05.2019, 21:42
RE: Новая реализация виртуальной файловой системы - Berserker - 25.05.2019, 23:00
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 15:54
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 17:09
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 17:21
RE: Новая реализация виртуальной файловой системы - daemon_n - 26.05.2019, 19:56
RE: Новая реализация виртуальной файловой системы - Berserker - 26.05.2019, 20:29
RE: Новая реализация виртуальной файловой системы - RDV - 02.12.2019, 19:54
RE: Новая реализация виртуальной файловой системы - Berserker - 02.12.2019, 20:56
RE: Новая реализация виртуальной файловой системы - RDV - 02.12.2019, 21:14
RE: Новая реализация виртуальной файловой системы - Berserker - 02.12.2019, 21:33
RE: Новая реализация виртуальной файловой системы - XEPOMAHT - 22.11.2021, 13:57
RE: Новая реализация виртуальной файловой системы - Berserker - 22.11.2021 15:47
RE: Новая реализация виртуальной файловой системы - RoseKavalier - 22.11.2021, 16:28

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group