PDA

Просмотр полной версии : подмена txd


arekaj
21.05.2025, 12:54
как подменить txd в момент инициализации скрипта? с hud.txd на hud2.txd например или определённый элемент внутри hud.txd

arekaj
24.05.2025, 19:42
up

tanksoftik
26.05.2025, 15:44
C++:






void
__cdecl
CHudInitialise
(
)
{
int
txd
;
// esi
CSprite2d
*
v1
;
// edi
char
*
*
v2
;
// esi
int
i
;
// ebx
txd
=
CTxdStore
::
AddTxdSlot
(
"hud"
)
;
CTxdStore
::
LoadTxd
(
txd
,
"MODELS\\HUD2.TXD"
)
;
CTxdStore
::
AddRef
(
txd
)
;
CTxdStore
::
PushCurrentTxd
(
)
;
CTxdStore
::
SetCurrentTxd
(
txd
)
;
v1
=
CHud
::
Sprites
;
v2
=
(
char
*
*
)
(
0x8D128C
)
;
i
=
6
;
do
{
v1
->
SetTexture
(
*
v2
,
v2
[
1
]
)
;
v2
+=
2
;
v1
=
(
v1
+
4
)
;
--
i
;
}
while
(
i
)
;
CTxdStore
::
PopCurrentTxd
(
)
;
CHud
::
ReInitialise
(
)
;
}
class
HookCHudInitialise
{
public
:
HookCHudInitialise
(
)
{
patch
::
RedirectCall
(
0x5BD76F
,
CHudInitialise
)
;
}
;
}
CHudInitialisePlugin
;

arekaj
26.05.2025, 17:09
C++:






void
__cdecl
CHudInitialise
(
)
{
int
txd
;
// esi
CSprite2d
*
v1
;
// edi
char
*
*
v2
;
// esi
int
i
;
// ebx
txd
=
CTxdStore
::
AddTxdSlot
(
"hud"
)
;
CTxdStore
::
LoadTxd
(
txd
,
"MODELS\\HUD2.TXD"
)
;
CTxdStore
::
AddRef
(
txd
)
;
CTxdStore
::
PushCurrentTxd
(
)
;
CTxdStore
::
SetCurrentTxd
(
txd
)
;
v1
=
CHud
::
Sprites
;
v2
=
(
char
*
*
)
(
0x8D128C
)
;
i
=
6
;
do
{
v1
->
SetTexture
(
*
v2
,
v2
[
1
]
)
;
v2
+=
2
;
v1
=
(
v1
+
4
)
;
--
i
;
}
while
(
i
)
;
CTxdStore
::
PopCurrentTxd
(
)
;
CHud
::
ReInitialise
(
)
;
}
class
HookCHudInitialise
{
public
:
HookCHudInitialise
(
)
{
patch
::
RedirectCall
(
0x5BD76F
,
CHudInitialise
)
;
}
;
}
CHudInitialisePlugin
;





радар становится полностью чёрный после подмены

https://forum.antichat.xyz/attachments/28609926/