
15.08.2021, 15:45
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от loganhackerdff
похоже что это раздел только для меня, чувствую себя тупым, ну да ладно,
кароче я юзаю sampapi ирисую чамсы вот так:
C++:
Код:
if
(
m_bChams
&&
g
::
pDXDevice
)
{
DWORD dwCONSTANT
{
0
}
,
dwARG2
{
0
}
,
dwCULL
{
0
}
;
g
::
pDXDevice
->
GetRenderState
(
D3DRS_CULLMODE
,
&
dwCULL
)
;
g
::
pDXDevice
->
GetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
&
dwCONSTANT
)
;
g
::
pDXDevice
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
&
dwARG2
)
;
g
::
pDXDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
D3DCULL_CW
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
0xFFFFFFFF
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
D3DTA_CONSTANT
)
;
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
*
(
void
*
*
*
)
pPlayer
->
m_pPed
->
m_pGameEntity
)
[
18
]
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;
g
::
pDXDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
dwCULL
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwCONSTANT
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
)
;
}
}
Перед этим проверка всего что можно для педа
C++:
Код:
(
player
&&
player
->
m_pPed
&&
player
->
DoesExist
(
)
&&
player
->
m_pPed
->
DoesExist
(
)
&&
player
->
m_pPed
->
m_pGamePed
&&
player
->
m_pPed
->
m_pGameEntity
)
выглядит как будто наговнокожено но всё равно вылетают exceptions на строке после
C++:
Код:
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
*
(
void
*
*
*
)
pPlayer
->
m_pPed
->
m_pGameEntity
)
[
18
]
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;
пример кода взят отсюда: https://github.com/Stickey21/Stealth-Remastered/blob/origin/Stealth Remastered/Features/Visuals.cpp#L269
CEntityRender:
Код:
using
CEntity__Render
=
void
(
__thiscall
*
)
(
::
CEntity
*
)
;
reinterpret_cast
(
0x59F180
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;
chams:
Код:
DWORD dwCONSTANT
,
dwARG0
,
dwARG1
,
dwARG2
;
struct
CPed
*
pPed
=
pSAMP
->
g_Players
->
m_pObject
[
i
]
->
m_pPlayer
->
m_pPed
->
m_pGamePed
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
&
dwCONSTANT
)
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
&
dwARG0
)
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
&
dwARG1
)
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
&
dwARG2
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
floatToHex
(
colors
->
PlayerChamsColor
)
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
D3DTA_CONSTANT
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
D3DTA_CONSTANT
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
D3DTA_CONSTANT
)
;
pPed
->
Render
(
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwCONSTANT
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
dwARG0
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
dwARG1
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
)
;
|
|
|

15.08.2021, 15:52
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов( 0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:
C:
Код:
sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}
C++:
Код:
{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast
(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast
(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
pPixelShader
)
;
}
C++:
Код:
pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;
|
|
|

15.08.2021, 15:55
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от kin4stat
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов(0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:
C:
Код:
sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}
C++:
Код:
{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast
(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast
(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
pPixelShader
)
;
}
C++:
Код:
pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;
а как понять что рисуется полигон из модели педа
|
|
|

15.08.2021, 15:55
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от loganhackerdff
а как понять что рисуется полигон из модели педа
Адрес который я дал - вызов DrawIndexedPrimitive из пайплайна рендера педов
|
|
|

16.08.2021, 17:23
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от kin4stat
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов( 0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:
C:
Код:
sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}
C++:
Код:
{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast
(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast
(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
pPixelShader
)
;
}
C++:
Код:
pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;
я сделал шейдер с расширение .hlsl как ресурс его вроде добавил
но код крашит
C++:
Код:
HRSRC hsrc
=
FindResourceW
(
g
::
instance
,
MAKEINTRESOURCEW
(
101
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
g
::
instance
,
hsrc
)
)
;
g
::
pDXDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
m_d3d9Shader
)
;
В дебугере hsrc = NULL shader тоже
ошибки ещё сыпит если шейдер в проекте в сборке
|
|
|

16.08.2021, 17:34
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от loganhackerdff
я сделал шейдер с расширение .hlsl как ресурс его вроде добавил
но код крашит
C++:
Код:
HRSRC hsrc
=
FindResourceW
(
g
::
instance
,
MAKEINTRESOURCEW
(
101
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
g
::
instance
,
hsrc
)
)
;
g
::
pDXDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
m_d3d9Shader
)
;
В дебугере hsrc = NULL shader тоже
ошибки ещё сыпит если шейдер в проекте в сборке
PixelShader 2.0 ставь в настройках компилятора
|
|
|

16.08.2021, 19:04
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от loganhackerdff
я сделал шейдер с расширение .hlsl как ресурс его вроде добавил
но код крашит
C++:
Код:
HRSRC hsrc
=
FindResourceW
(
g
::
instance
,
MAKEINTRESOURCEW
(
101
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
g
::
instance
,
hsrc
)
)
;
g
::
pDXDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
m_d3d9Shader
)
;
В дебугере hsrc = NULL shader тоже
ошибки ещё сыпит если шейдер в проекте в сборке
шейдер не компилиться, онлайн компилятором тоже
|
|
|

16.08.2021, 19:13
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от loganhackerdff
шейдер не компилиться, онлайн компилятором тоже
Какая ошибка?
|
|
|

16.08.2021, 19:14
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от Musaigen
Какая ошибка?
в визуалке dxc.exe вернуло 1 в онлайн компиляторе
я не шарю игрался только с opengl шейдерами
|
|
|

26.08.2021, 21:22
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от kin4stat
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов( 0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:
C:
Код:
sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}
C++:
Код:
{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast
(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast
(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast
(
shader
)
,
&
pPixelShader
)
;
}
C++:
Код:
pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;
а может знаешь пайплайн рендера авто?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|