HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.07.2025, 23:14
ToffyX64
Новичок
Регистрация: 29.12.2023
Сообщений: 1
С нами: 1251490

Репутация: 1
По умолчанию

Всем привет!

Работаю над тем, чтобы подключить поддержку enhanced IMG archives из fastman92 limit adjuster в MTA.

Она поддерживает шифрование архивов и активируеться и .ini файле: Enable handling of new enhanced IMG archives = 1

В исходнике limit adjuster есть публичные функции для работы с этими архивами:


публичные функции из FLA:





Код:
// Returns true if handling of enhanced IMG archives is enabled
F92_LA_API
bool
F92_LA_CONVENTION
IsHandlingOfEnhancedIMGarchivesEnabled
(
)
;
// Loads CD directory in GTA SA. Works only if enhanced IMG archives are enabled!
F92_LA_API
void
F92_LA_CONVENTION
LoadCdDirectoryInGTASA
(
const
tImgDescriptorInGTASA
*
pIMGdescriptor
,
int
imgId
,
tGTASAimgLoadingCall
*
pLoadingCall
)
;


ну и я поставил хук на функцию gta, которая отвечает за подгрузку IMG архивов ( LoadCdDirectory )

теперь архивы читает, но уже при входе в игру возникают краши при загрузке моделей.

Чесно говоря, я думаю что проблема где-то в парамитрах которые я передаю, менял их но лучше от этого не стало.

Вот ссылка на код экспортных функций от FLA и струкрур - https://github.com/fastman92/fastman92_limit_adjuster/blob/master/fastman92 limit adjuster/fastman92 limit adjuster/Source files/ForOtherProjects/FLA_required/Exports.h

Может есть кто-то, кто работал с этой шифровкой и знает в чем проблема. Вот мой код использования LoadCdDirectoryInGTASA от FLA

Код функци хука:





Код:
typedef
void
(
__stdcall
*
ptrLoadCdDirectoryInGTASA
)
(
const
tImgDescriptorInGTASA
*
pIMGdescriptor
,
int
imgId
,
tGTASAimgLoadingCall
*
pLoadingCall
)
;
ptrLoadCdDirectoryInGTASA LoadCdDirectoryInGTASA
=
nullptr
;
bool
MyOnSpecialEntry
(
tImgFastman92GTASAdirectoryEntry
*
pEntry
,
void
*
pUserData
)
{
return
false
;
}
bool
MyOnEntry
(
tImgFastman92GTASAdirectoryEntry
*
pEntry
,
void
*
pStreamingInfo
,
bool
isFileSizeSetUp
,
void
*
pUserData
)
{
if
(
pEntry
==
nullptr
||
pStreamingInfo
==
nullptr
||
pUserData
==
nullptr
)
return
false
;
return
true
;
}
void
LoadCdDirectory_Hooked
(
char
const
*
ArchiveName
,
int
archiveID
)
{
tImgDescriptorInGTASA descriptor
=
{
}
;
strncpy
(
descriptor
.
m_name
,
ArchiveName
,
sizeof
(
descriptor
.
m_name
)
-
1
)
;
descriptor
.
m_name
[
sizeof
(
descriptor
.
m_name
)
-
1
]
=
'\0'
;
descriptor
.
m_bRegister
=
1
;
descriptor
.
m_lsn
=
0
;
tGTASAimgLoadingCall loadingCall
=
{
}
;
loadingCall
.
dwSize
=
sizeof
(
tGTASAimgLoadingCall
)
;
loadingCall
.
pUserData
=
nullptr
;
loadingCall
.
ReadEntry
=
nullptr
;
loadingCall
.
OnSpecialEntry
=
nullptr
;
loadingCall
.
OnEntry
=
&
MyOnEntry
;
MessageBoxA
(
NULL
,
buffer
,
"[REPORT-1.2] LoadCdDirectory_Hooked"
,
MB_ICONWARNING
|
MB_CANCELTRYCONTINUE
|
MB_DEFBUTTON2
)
;
LoadCdDirectoryInGTASA
(
&
descriptor
,
archiveID
,
&
loadingCall
)
;
}
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.