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

  #41  
Старый 02.11.2019, 16:27
ImPasha
Познавший АНТИЧАТ
Регистрация: 28.10.2017
Сообщений: 1,778
С нами: 4495573

Репутация: 183


По умолчанию

Простенькая функция, которая позволяет рисовать поле для ввода в ImGUI с текстовой подсказкой на нём. Подсказка пропадает, если пользователь выделяет поле для ввода нажатием на него, либо вводит какую-либо информацию. Может быть проблема с Y-смещением, рекомендуется использовать стандартный стиль ImGUI.

C++:





Код:
static
bool
InputTextWithPH
(
const
char
*
placeholder
,
const
char
*
text
,
char
*
buf
,
size_t buf_size
,
ImGuiInputTextFlags flags
=
0
,
ImGuiInputTextCallback callback
=
(
ImGuiInputTextCallback
)
0
,
void
*
user_data
=
(
void
*
)
0
)
{
ImVec2 cursor
[
2
]
;
cursor
[
0
]
=
ImGui
::
GetCursorPos
(
)
;
bool
result
=
ImGui
::
InputText
(
text
,
buf
,
buf_size
,
flags
,
callback
,
user_data
)
;
if
(
placeholder
!=
NULL
&&
strlen
(
placeholder
)
>
0
)
{
if
(
!
ImGui
::
IsItemActive
(
)
&&
strlen
(
buf
)
==
0
)
{
cursor
[
1
]
=
ImGui
::
GetCursorPos
(
)
;
ImGui
::
SetCursorPos
(
ImVec2
(
cursor
[
0
]
.
x
+
5
,
cursor
[
0
]
.
y
+
2
)
)
;
ImGui
::
Text
(
placeholder
)
;
ImGui
::
SetCursorPos
(
cursor
[
1
]
)
;
}
}
return
result
;
}
// Пример использования
InputTextWithPH
(
u8
"Любой текст"
,
"##t1"
,
testText
,
sizeof
testText
)
;


В новых версиях ImGUI есть стандартная функция InputTextWithHint, использовать лучше её!
 
Ответить с цитированием

  #42  
Старый 21.04.2020, 19:09
loganhackerdff
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами: 4633764

Репутация: 148


По умолчанию

Получает название клавиши по id

C++:





[CODE]
GetKeyNameTextA
(
(
MapVirtualKeyA
(
KEYID
,
MAPVK_VK_TO_VSC
)

 
Ответить с цитированием

  #43  
Старый 10.05.2020, 02:00
DarkP1xel
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами: 6791977

Репутация: 183


По умолчанию

WallHack для оружия.:





Код:
auto
weaponWallHack
(
const
bool
bStatus
)
const
->
void
{
void
*
pRenderWeapon
{
reinterpret_cast

(
0x732F3F
+
0x1
)
}
;
if
(
bStatus
)
{
std
::
memset
(
pRenderWeapon
,
0x0
,
0x1
)
;
}
else
{
std
::
memcpy
(
pRenderWeapon
,
"\x01"
,
0x1
)
;
}
return
;
}


Цитата:
Сообщение от Спойлер  




 
Ответить с цитированием

  #44  
Старый 10.05.2020, 11:19
imring
Флудер
Регистрация: 03.08.2016
Сообщений: 2,363
С нами: 5145387

Репутация: 183


По умолчанию

Цитата:
Сообщение от DarkP1xel  

WallHack для оружия.:





Код:
auto
weaponWallHack
(
const
bool
bStatus
)
const
->
void
{
void
*
pRenderWeapon
{
reinterpret_cast

(
0x732F3F
+
0x1
)
}
;
if
(
bStatus
)
{
std
::
memset
(
pRenderWeapon
,
0x0
,
0x1
)
;
}
else
{
std
::
memcpy
(
pRenderWeapon
,
"\x01"
,
0x1
)
;
}
return
;
}


Цитата:
Сообщение от Спойлер  


C++:





Код:
inline
void
weaponWallHack
(
bool
bStatus
)
{
*
reinterpret_cast

(
0x732F3F
+
0x1
)
=
!
bStatus
;
}


и та функа точно работает? ибо я пробовал - не работает.
 
Ответить с цитированием

  #45  
Старый 10.05.2020, 12:33
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Цитата:
Сообщение от DarkP1xel  

WallHack для оружия.:





Код:
auto
weaponWallHack
(
const
bool
bStatus
)
const
->
void
{
void
*
pRenderWeapon
{
reinterpret_cast

(
0x732F3F
+
0x1
)
}
;
if
(
bStatus
)
{
std
::
memset
(
pRenderWeapon
,
0x0
,
0x1
)
;
}
else
{
std
::
memcpy
(
pRenderWeapon
,
"\x01"
,
0x1
)
;
}
return
;
}


Цитата:
Сообщение от Спойлер  


Краши вызывает.
 
Ответить с цитированием

  #46  
Старый 10.05.2020, 13:29
DarkP1xel
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами: 6791977

Репутация: 183


По умолчанию

Ну так это пример, можешь в cheat engine заюзать, а в коде надо будет снять защиту с памяти

чо за нубы
 
Ответить с цитированием

  #47  
Старый 10.05.2020, 14:03
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Так коль уже вылаживаешь код, то со всеми махинациями давай, а не только его часть)
 
Ответить с цитированием

  #48  
Старый 04.07.2020, 15:01
p1cador
Участник форума
Регистрация: 19.03.2014
Сообщений: 222
С нами: 6395080

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

Gets actor struct by handle externally (can be optimized).

(this is actually an analogue of 0A96: $ActorStruct = actor $PLAYER_ACTOR struct cleo opcode)

C++:





Код:
uintptr_t
getPedStructByActorHandle
(
uintptr_t handle
)
{
/*
        0054FF90 | 8B4C24 04                | mov ecx,dword ptr ss:[esp+4]                       |mov ecx, handle
        0054FF94 | 8B15 9044B700            | mov edx,dword ptr ds:[B74490]                      |mov edx, *0xB74490
        0054FF9A | 53                       | push ebx                                           |push 0
        0054FF9B | 56                       | push esi                                           |push 04600026
        0054FF9C | 8B72 04                  | mov esi,dword ptr ds:[edx+4]                       |mov esi, *(edx+4)
        0054FF9F | 8BC1                     | mov eax,ecx                                        |mov eax, handle
        0054FFA1 | C1F8 08                  | sar eax,8                                          |sar handle, 8
        0054FFA4 | 8A1C30                   | mov bl,byte ptr ds:[eax+esi]                       |mov bl, (eax + esi
        0054FFA7 | 5E                       | pop esi                                            |
        0054FFA8 | 3AD9                     | cmp bl,cl                                          |
        0054FFAA | 5B                       | pop ebx                                            |
        0054FFAB | 75 0B                    | jne gta_sa.54FFB8                                  |
        0054FFAD | 8B0A                     | mov ecx,dword ptr ds:[edx]                         |mov ecx, **0xB74490
        0054FFAF | 69C0 C4070000            | imul eax,eax,7C4                                   |handle *= 0x7c4
        0054FFB5 | 03C1                     | add eax,ecx                                        |eax += ecx
        0054FFB7 | C3                       | ret                                                |
        0054FFB8 | 33C0                     | xor eax,eax                                        |
        0054FFBA | C3                       | ret                                                |
        */
uintptr_t ecx
=
handle
;
uintptr_t edx
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0xB74490
,
&
edx
,
sizeof
(
uintptr_t
)
,
0
)
;
uintptr_t esi
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
edx
+
4
)
,
&
esi
,
sizeof
(
uintptr_t
)
,
0
)
;
uintptr_t eax
=
ecx
;
eax
=
eax
>>
8
;
unsigned
char
bl
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
eax
+
esi
)
,
&
bl
,
sizeof
(
unsigned
char
)
,
0
)
;
if
(
bl
==
(
ecx
&
0x000000FF
)
)
{
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
edx
)
,
&
ecx
,
sizeof
(
uintptr_t
)
,
0
)
;
eax
*=
0x7c4
;
eax
+=
ecx
;
return
eax
;
}
else
{
return
0
;
}
}


Returns a vector of streamed ped's structures externally:

C++:





[CODE]
std
::
vector

getStreamedPeds
(
)
{
std
::
vector

peds
;
uintptr_t v1
;
ReadProcessMemory
(
hProcess
(
LPVOID
)
0xB74490
,
&
v1
,
sizeof
(
uintptr_t
)
,
0
)
;
v1
+=
0x4
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
v1
,
&
v1
,
sizeof
(
uintptr_t
)
,
0
)
;
for
(
uintptr_t v2
=
0
;
v2
=
0
&&
handle



Gets ped bone position externally

A working vartant, but it can and should be optimized.

PS this-> read () is ReadProcessMemory()

C++:





Код:
#pragma once
static
DWORD CRUTCH_LOCAL_VARIABLE
=
0
;
RpHAnimHierarchy
*
GtaSA
::
RpSkinAtomicGetHAnimHierarchy
(
const
RpAtomic
*
atomic
)
// 0x7C7540
{
/*
007C7540 | 8B4424 04                | mov eax,dword ptr ss:[esp+4]       |
007C7544 | 8B0D A478C900            | mov ecx,dword ptr ds:[C978A4]      |
007C754A | 8B0401                   | mov eax,dword ptr ds:[ecx+eax]     |
007C754D | C3                       | ret                                |
*/
uintptr_t eax
=
(
uintptr_t
)
atomic
;
uintptr_t ecx
=
this
->
read

(
0xC978A4
)
;
eax
=
this
->
read

(
eax
+
ecx
)
;
return
(
RpHAnimHierarchy
*
)
eax
;
}
void
GtaSA
::
RpClumpForAllAtomics
(
RpClump
*
clump
,
void
*
callback
,
void
*
data
)
{
/*
00749B70 | 8B4424 04                | mov eax,dword ptr ss:[esp+4]       |
00749B74 | 53                       | push ebx                           |
00749B75 | 55                       | push ebp                           |
00749B76 | 56                       | push esi                           |
00749B77 | 57                       | push edi                           |
00749B78 | 8D78 08                  | lea edi,dword ptr ds:[eax+8]       |
00749B7B | 8B40 08                  | mov eax,dword ptr ds:[eax+8]       |
00749B7E | 3BC7                     | cmp eax,edi                        |
00749B80 | 74 1E                    | je gta_sa.749BA0                   |
00749B82 | 8B5C24 1C                | mov ebx,dword ptr ss:[esp+1C]      |
00749B86 | 8B6C24 18                | mov ebp,dword ptr ss:[esp+18]      |
00749B8A | 8B30                     | mov esi,dword ptr ds:[eax]         |
00749B8C | 83C0 C0                  | add eax,FFFFFFC0                   |
00749B8F | 53                       | push ebx                           |
00749B90 | 50                       | push eax                           |
00749B91 | FFD5                     | call ebp                           |
00749B93 | 83C4 08                  | add esp,8                          |
00749B96 | 85C0                     | test eax,eax                       |
00749B98 | 74 06                    | je gta_sa.749BA0                   |
00749B9A | 3BF7                     | cmp esi,edi                        |
00749B9C | 8BC6                     | mov eax,esi                        |
00749B9E | 75 EA                    | jne gta_sa.749B8A                  |
00749BA0 | 8B4424 14                | mov eax,dword ptr ss:[esp+14]      |
00749BA4 | 5F                       | pop edi                            |
00749BA5 | 5E                       | pop esi                            |
00749BA6 | 5D                       | pop ebp                            |
00749BA7 | 5B                       | pop ebx                            |
00749BA8 | C3                       | ret                                |
*/
uintptr_t eax
=
(
uintptr_t
)
clump
;
uintptr_t edi
=
eax
+
8
;
eax
=
this
->
read

(
eax
+
8
)
;
if
(
eax
==
edi
)
{
eax
=
(
uintptr_t
)
clump
;
// 00749BA0 | 8B4424 14                | mov eax,dword ptr ss:[esp+14]      |
}
else
{
uintptr_t ebx
=
(
uintptr_t
)
data
;
// ????    // 00749B82 | 8B5C24 1C    | mov ebx, dword ptr ss: [esp+1C]
uintptr_t ebp
=
(
uintptr_t
)
callback
;
// 00749B86 | 8B6C24 18    | mov ebp, dword ptr ss: [esp + 18]
uintptr_t esi
=
this
->
read

(
eax
)
;
// 00749B8A | 8B30        | mov esi, dword ptr ds: [eax]
eax
+=
0xFFFFFFC0
;
// actually its a minus
/* callback start */
/*
        00734A20 | 8B4424 04                | mov eax,dword ptr ss:[esp+4]       |
        00734A24 | 50                       | push eax                           |
        00734A25 | E8 162B0900              | call gta_sa.7C7540                 |
        00734A2A | 8B4C24 0C                | mov ecx,dword ptr ss:[esp+C]       |
        00734A2E | 8901                     | mov dword ptr ds:[ecx],eax         |
        00734A30 | 83C4 04                  | add esp,4                          |
        00734A33 | 33C0                     | xor eax,eax                        |
        00734A35 | C3                       | ret                                |
        */
eax
=
(
uintptr_t
)
RpSkinAtomicGetHAnimHierarchy
(
(
const
RpAtomic
*
)
eax
)
;
// 00734A25 | E8 162B0900 | call gta_sa.7C7540 |
CRUTCH_LOCAL_VARIABLE
=
eax
;
// the next code - instead of 00734A2A...00734A2E instructions
eax
^=
eax
;
/* callback end */
if
(
eax
==
0
)
{
eax
=
(
uintptr_t
)
clump
;
}
else
{
std
::
cout

read

(
edx
+
0x10
)
;
edx
=
this
->
read

(
edx
+
0x4
)
;
uintptr_t ecx
=
0
;
if
(
edx
==
0
)
{
// just return
std
::
cout

read

(
esi
)
)
{
ecx
++
;
esi
+=
0x10
;
}
else
{
eax
=
ecx
;
break
;
}
}
while
(
ecx
!=
edx
)
;
}
return
eax
;
}
RwMatrix
*
GtaSA
::
RpHAnimHierarchyGetMatrixArray
(
RpHAnimHierarchy
*
hierarchy
)
{
/*
    007C5120 | 8B4424 04                | mov eax,dword ptr ss:[esp+4]       |
    007C5124 | 8B40 08                  | mov eax,dword ptr ds:[eax+8]       |
    007C5127 | C3                       | ret                                |
    */
uintptr_t eax
=
(
uintptr_t
)
hierarchy
;
eax
=
this
->
read

(
eax
+
8
)
;
return
(
RwMatrix
*
)
eax
;
}
void
GtaSA
::
vectorMult
(
uintptr_t edx
,
uintptr_t esi
,
uintptr_t ecx
)
{
float
ecxReaded
[
3
]
;
this
->
readBuf
(
ecx
,
4
*
3
,
(
void
*
)
ecxReaded
)
;
uintptr_t eax
=
(
uintptr_t
)
esi
;
// ecx = ecx;
float
st0
=
this
->
read

(
eax
+
0x20
)
;
st0
*=
ecxReaded
[
2
]
;
float
st1
=
st0
;
st0
=
this
->
read

(
eax
+
0x10
)
;
st0
*=
ecxReaded
[
1
]
;
st1
+=
st0
;
// ? 0059C8A7 | DEC1                    | faddp st(1),st(0)                  |
st0
=
this
->
read

(
eax
)
;
st0
*=
ecxReaded
[
0
]
;
st1
+=
st0
;
// ? 0059C8AD | DEC1                    | faddp st(1),st(0)                  |
st0
=
st1
;
st0
+=
this
->
read

(
eax
+
0x30
)
;
// ? 0059C8AF | D840 30                 | fadd st(0),dword ptr ds:[eax+30]   |
(
(
float
*
)
(
edx
)
)
[
0
]
=
st0
;
st0
=
this
->
read

(
eax
+
0x24
)
;
st0
*=
ecxReaded
[
2
]
;
st1
=
st0
;
st0
=
this
->
read

(
eax
+
0x4
)
;
st0
*=
ecxReaded
[
0
]
;
st1
+=
st0
;
//    0059C8C5 | DEC1                    | faddp st(1),st(0)                  |
//st0 = st1; //    0059C8C5 | DEC1                    | faddp st(1),st(0)                  |
st0
=
this
->
read

(
eax
+
0x14
)
;
st0
*=
ecxReaded
[
1
]
;
st1
+=
st0
;
st0
=
st1
;
st0
+=
this
->
read

(
eax
+
0x34
)
;
(
(
float
*
)
(
edx
)
)
[
1
]
=
st0
;
st0
=
this
->
read

(
eax
+
0x28
)
;
st0
*=
ecxReaded
[
2
]
;
st1
=
st0
;
st0
=
this
->
read

(
eax
+
0x8
)
;
st0
*=
ecxReaded
[
0
]
;
st1
+=
st0
;
// 0059C8E1 | DEC1                    | faddp st(1),st(0)                  |
st0
=
this
->
read

(
eax
+
0x18
)
;
st0
*=
ecxReaded
[
1
]
;
st1
+=
st0
;
st0
=
st1
;
st0
+=
this
->
read

(
eax
+
0x38
)
;
// ? 0059C8AF | D840 30                 | fadd st(0),dword ptr ds:[eax+30]   |
//ecx = eax;
//this->write(ecx, edx); // 0059C8F4 | 8911                    | mov dword ptr ds:[ecx],edx         |
//edx =
(
(
float
*
)
(
edx
)
)
[
2
]
=
st0
;
}
//-------------------------------------------------------------------
void
GtaSA
::
getBonePosition
(
uintptr_t pedStruct
,
Vector3
*
buf
,
unsigned
int
boneId
,
bool
updateSkinBones
)
{
uintptr_t esi
=
pedStruct
;
uintptr_t eax
=
0
;
eax
=
this
->
read

(
esi
+
0x474
)
;
if
(
updateSkinBones
)
{
std
::
cout

read

(
esi
+
0x18
)
;
// 005E42A9 | 8B4E 18                  | mov ecx,dword ptr ds:[esi+18]      |
eax
=
(
uintptr_t
)
GetAnimHierarchyFromSkinClump
(
(
RpClump
*
)
ecx
)
;
// 0x734A40
uintptr_t edi
=
eax
;
// 005E42B2 | 8BF8                     | mov edi,eax                        |
if
(
edi
==
0
)
{
// 005E42BF | 8B46 14                  | mov eax,dword ptr ds:[esi+14]      |
std
::
cout

x
=
this
->
read

(
eax
)
;
buf
->
y
=
this
->
read

(
eax
+
4
)
;
buf
->
z
=
this
->
read

(
eax
+
8
)
;
}
}
else
{
std
::
cout

read

(
esi
+
0x14
)
;
// ped struct
eax
=
eax
+
eax
*
2
;
uintptr_t ecx
=
eax
*
4
+
0x8D13A8
;
// IM STOPPED HERE
float
res
[
3
]
;
//uintptr_t edx = (uintptr_t)(res);
// push ecx
// push esi
// push edx
// call func 0x0059C890(edx, esi, ecx)
vectorMult
(
(
uintptr_t
)
res
,
esi
,
ecx
)
;
buf
->
x
=
res
[
0
]
;
// *(float*)(edx);
buf
->
y
=
res
[
1
]
;
//*(float*)(edx + 4);
buf
->
z
=
res
[
2
]
;
//*(float*)(edx + 8);
//float* firstMatrix = (float*)this->readBuf(16, edx);
//edx = LOCAL_VAR_ADDR
// push esi
// push edx
// call matrix multiply // 005E4303 | E8 8885FBFF             | call gta_sa.59C890                 |
/*float res[16];

            float arg1[16];
            this->readBuf(ecx, 4 * 4 * 4, arg1);
            ecx = (uintptr_t)arg1;

            float arg2[16];
            this->readBuf(esi, 16*4, arg2);

            ::vec3mx(arg1, arg1, res);
            uintptr_t edx = (uintptr_t)res;

            /*
            buf->x = *(float*)(edx);
            buf->y = *(float*)(edx + 4);
            buf->z = *(float*)(edx + 8);*/
}
}
}
 
Ответить с цитированием

  #49  
Старый 15.07.2020, 11:55
loganhackerdff
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами: 4633764

Репутация: 148


По умолчанию

Проверяет на экране ли объект / пикап / 3dтекст

Без проверки на то что этот объект / пикап / 3dтекст существует

C++:





[CODE]
void
CalcScreenCoors
(
D3DXVECTOR3
*
vecWorld
,
D3DXVECTOR3
*
vecScreen
)
{
D3DXMATRIX
m
(
(
float
*
)
(
0xB6FA2C
)
)
;
DWORD
*
dwLenX
=
(
DWORD
*
)
(
0xC17044
)
;
DWORD
*
dwLenY
=
(
DWORD
*
)
(
0xC17048
)
;
vecScreen
->
x
=
(
vecWorld
->
z
*
m
.
_31
)
+
(
vecWorld
->
y
*
m
.
_21
)
+
(
vecWorld
->
x
*
m
.
_11
)
+
m
.
_41
;
vecScreen
->
y
=
(
vecWorld
->
z
*
m
.
_32
)
+
(
vecWorld
->
y
*
m
.
_22
)
+
(
vecWorld
->
x
*
m
.
_12
)
+
m
.
_42
;
vecScreen
->
z
=
(
vecWorld
->
z
*
m
.
_33
)
+
(
vecWorld
->
y
*
m
.
_23
)
+
(
vecWorld
->
x
*
m
.
_13
)
+
m
.
_43
;
double
fRecip
=
(
double
)
1.0
/
vecScreen
->
z
;
vecScreen
->
x
*=
(
float
)
(
fRecip
*
(
*
dwLenX
)
)
;
vecScreen
->
y
*=
(
float
)
(
fRecip
*
(
*
dwLenY
)
)
;
}
bool
IsPickOnScreen
(
int
p
)
{
D3DXVECTOR3 vecPos
;
vecPos
.
x
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pPickup
->
pickup
[
p
]
.
fPosition
[
0
]
;
vecPos
.
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pPickup
->
pickup
[
p
]
.
fPosition
[
1
]
;
vecPos
.
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pPickup
->
pickup
[
p
]
.
fPosition
[
2
]
;
D3DXVECTOR3 screenPos
;
CalcScreenCoors
(
&
vecPos
,
&
screenPos
)
;
if
(
screenPos
.
z

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
p
]
->
pGTAEntity
->
base
.
matrix
[
4
*
3
]
;
vecPos
.
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
p
]
->
pGTAEntity
->
base
.
matrix
[
4
*
3
+
1
]
;
vecPos
.
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
p
]
->
pGTAEntity
->
base
.
matrix
[
4
*
3
+
2
]
;
D3DXVECTOR3 screenPos
;
CalcScreenCoors
(
&
vecPos
,
&
screenPos
)
;
if
(
screenPos
.
z

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
p
]
.
fPosition
[
0
]
;
vecPos
.
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
p
]
.
fPosition
[
1
]
;
vecPos
.
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
p
]
.
fPosition
[
2
]
;
D3DXVECTOR3 screenPos
;
CalcScreenCoors
(
&
vecPos
,
&
screenPos
)
;
if
(
screenPos
.
z

 
Ответить с цитированием

  #50  
Старый 23.07.2020, 14:08
Const
Новичок
Регистрация: 28.10.2018
Сообщений: 28
С нами: 3970020

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

Устанавливает процент разброса пули:





Код:
void
SetSpreadMultiplier
(
float
fltMultiplier
)
{
*
reinterpret_cast

(
0x008D6114
)
=
fltMultiplier
/
20.00F
;
}


Примеры:





Код:
SetSpreadMultiplier
(
0.00F
)
;
// Установит процент разброса пули на 0 (разброса не будет).
SetSpreadMultiplier
(
50.00F
)
;
// Установит процент разброса пули на 50 (разброс будет в 2 раза меньше обычного).
SetSpreadMultiplier
(
100.00F
)
;
// Установит процент разброса пули на 100 (разброс останется неизмененным).
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.