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

  #1  
Старый 05.08.2020, 15:05
manukhov
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами: 4254200

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

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

Если я все правильно понял, то
Код:
(DWORD*)(*pInfo + SAMP_SETTINGS)
Преобразует *pInfo+SAMP_SETTINGS в DWORD*, после идет +0x27, а из-за арифметики указателей, это получается 0x27 * 4, и потом идет разыменование.
Возможно ты еще с преобразованиями накосячил, пока с телефонам, не совсем удобно смотреть
Также возможно у тебя DWORD задейфанен в 8 байт, а не в 4. Я однажды из-за этого час искал где приколы возникли

нашел где ошибка. Вместо

C++:





Код:
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
moduleBase
+
SAMP_INFO
)
,
&
pInfo
,
sizeof
(
pInfo
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
+
0x38
)
,
&
ShowNameTags
,
sizeof
(
ShowNameTags
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
+
0x2F
)
,
&
ThroughWalls
,
sizeof
(
ThroughWalls
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
+
0x27
)
,
&
fDistance
,
sizeof
(
fDistance
)
,
nullptr
)
;


Должно быть что-то типа такого:

C++:





Код:
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
moduleBase
+
SAMP_INFO
)
,
&
pInfo
,
sizeof
(
pInfo
)
,
nullptr
)
;
DWORD pSettings
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
)
,
&
pSettings
,
sizeof
(
pSettings
)
,
NULL
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pSettings
+
0x38
)
,
&
ShowNameTags
,
sizeof
(
ShowNameTags
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pSettings
+
0x2F
)
,
&
ThroughWalls
,
sizeof
(
ThroughWalls
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pSettings
+
0x27
)
,
&
fDistance
,
sizeof
(
fDistance
)
,
nullptr
)
;

Спасибо, вижу, я не обратил внимания. Но не заработало(

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

Также возможно у тебя DWORD задейфанен в 8 байт, а не в 4. Я однажды из-за этого час искал где приколы возникли
Это как? Я размерность нигде не указывал
 
Ответить с цитированием

  #2  
Старый 05.08.2020, 15:09
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

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

Спасибо, вижу, я не обратил внимания. Но не заработало(

Это как? Я размерность нигде не указывал
У меня тоже левых дефайнов не было, а оказалось что где-то есть
 
Ответить с цитированием

  #3  
Старый 05.08.2020, 15:23
manukhov
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами: 4254200

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

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

У меня тоже левых дефайнов не было, а оказалось что где-то есть
Обэма взломал комп и задефайнил пока тебя не было
 
Ответить с цитированием

  #4  
Старый 07.08.2020, 17:52
SKIC
Познающий
Регистрация: 03.05.2016
Сообщений: 64
С нами: 5277893

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

Как включить курсор Windows и заморозить управление? Подобно когда заходишь в меню паузы.
 
Ответить с цитированием

  #5  
Старый 07.08.2020, 18:33
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

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

Как включить курсор Windows и заморозить управление? Подобно когда заходишь в меню паузы.
C++:





Код:
// SAMP 0.3.7-R1
#define SAMP_MISC_INFO                    = 0x21A10C
#define SAMP_FUNC_TOGGLECURSOR                = 0x9BD30
#define SAMP_FUNC_CURSORUNLOCKACTORCAM        = 0x9BC10
void
ToggleCursor
(
bool
state
)
{
//state - 1 on; 0 off
if
(
iInputEnabled
)
//is Input Active Check
return
;
void
*
obj
=
*
(
void
*
*
)
(
dwSAMPAddr
+
SAMP_MISC_INFO
)
;
(
(
void
(
__thiscall
*
)
(
void
*
,
int
,
bool
)
)
(
dwSAMPAddr
+
SAMP_TOGGLECURSOR
)
)
(
obj
,
state
?
3
:
0
,
!
state
)
;
if
(
!
state
)
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
dwSAMPAddr
+
SAMP_CURSORUNLOCKACTORCAM
)
)
(
obj
)
;
}


Для блокировки управления в wndProc добавить return
 
Ответить с цитированием

  #6  
Старый 07.08.2020, 18:42
SKIC
Познающий
Регистрация: 03.05.2016
Сообщений: 64
С нами: 5277893

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

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

C++:





Код:
// SAMP 0.3.7-R1
#define SAMP_MISC_INFO                    = 0x21A10C
#define SAMP_FUNC_TOGGLECURSOR                = 0x9BD30
#define SAMP_FUNC_CURSORUNLOCKACTORCAM        = 0x9BC10
void
ToggleCursor
(
bool
state
)
{
//state - 1 on; 0 off
if
(
iInputEnabled
)
//is Input Active Check
return
;
void
*
obj
=
*
(
void
*
*
)
(
dwSAMPAddr
+
SAMP_MISC_INFO
)
;
(
(
void
(
__thiscall
*
)
(
void
*
,
int
,
bool
)
)
(
dwSAMPAddr
+
SAMP_TOGGLECURSOR
)
)
(
obj
,
state
?
3
:
0
,
!
state
)
;
if
(
!
state
)
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
dwSAMPAddr
+
SAMP_CURSORUNLOCKACTORCAM
)
)
(
obj
)
;
}


Для блокировки управления в wndProc добавить return
Это для SAMP а мне для одиночки.

@FYP, можешь пожалуйста дать код своего showCursor из moonloader. ну пожалуйста.
 
Ответить с цитированием

  #7  
Старый 07.08.2020, 22:06
DarkP1xel
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами: 6791977

Репутация: 183


По умолчанию

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

Это для SAMP а мне для одиночки.
@FYP, можешь пожалуйста дать код своего showCursor из moonloader. ну пожалуйста.
Псевдокод функции включения курсора SA-MP'a.:





Код:
int
__thiscall
ToggleCursor
(
stMiscInfo
*
this
,
int
cursorMode
,
int
hideCursor
?
)
{
int
result
;
// eax
stMiscInfo
*
v4
;
// esi
result
=
cursorMode
;
v4
=
this
;
switch
(
cursorMode
)
{
case
2
:
UnProtectMemmory
(
(
void
*
)
0x541DF5
,
5
)
;
MEMORY
[
0x541DF5
]
=
0x90909090
;
MEMORY
[
0x541DF9
]
=
0x90u
;
GTA
::
patch
::
enableCursor
(
)
;
MEMORY
[
0xB73424
]
=
0
;
MEMORY
[
0xB73428
]
=
0
;
MEMORY
[
0x541BD0
]
(
)
;
MEMORY
[
0x541DD0
]
(
)
;
UnProtectMemmory
(
(
void
*
)
0x6194A0
,
1
)
;
MEMORY
[
0x6194A0
]
=
0xC3u
;
result
=
(
(
int
(
__stdcall
*
)
(
IDirect3DDevice9
*
,
signed
int
)
)
pDevice
->
vtbl
->
ShowCursor
)
(
pDevice
,
1
)
;
v4
->
iCursorMode
=
2
;
break
;
case
1
:
if
(
this
->
iCursorMode
!=
1
)
{
UnProtectMemmory
(
(
void
*
)
0x541DF5
,
5
)
;
result
=
0x90909090
;
MEMORY
[
0x541DF5
]
=
0x90909090
;
MEMORY
[
0x541DF9
]
=
0x90u
;
v4
->
iCursorMode
=
1
;
}
break
;
case
3
:
if
(
this
->
iCursorMode
!=
3
)
{
GTA
::
patch
::
enableCursor
(
)
;
MEMORY
[
0xB73424
]
=
0
;
MEMORY
[
0xB73428
]
=
0
;
MEMORY
[
0x541BD0
]
(
)
;
MEMORY
[
0x541DD0
]
(
)
;
UnProtectMemmory
(
(
void
*
)
0x6194A0
,
1
)
;
MEMORY
[
0x6194A0
]
=
0xC3u
;
result
=
(
(
int
(
__stdcall
*
)
(
IDirect3DDevice9
*
,
signed
int
)
)
pDevice
->
vtbl
->
ShowCursor
)
(
pDevice
,
1
)
;
v4
->
iCursorMode
=
3
;
}
break
;
case
4
:
if
(
this
->
iCursorMode
!=
4
)
{
sub_1009BB20
(
)
;
MEMORY
[
0xB73424
]
=
0
;
MEMORY
[
0xB73428
]
=
0
;
MEMORY
[
0x541BD0
]
(
)
;
MEMORY
[
0x541DD0
]
(
)
;
result
=
UnProtectMemmory
(
(
void
*
)
0x6194A0
,
1
)
;
MEMORY
[
0x6194A0
]
=
0xC3u
;
v4
->
iCursorMode
=
4
;
}
break
;
default
:
if
(
!
cursorMode
&&
this
->
iCursorMode
)
{
this
->
field_59
=
hideCursor
?
!=
0
?
0
:
0xA
;
result
=
(
(
int
(
__stdcall
*
)
(
IDirect3DDevice9
*
,
_DWORD
)
)
pDevice
->
vtbl
->
ShowCursor
)
(
pDevice
,
0
)
;
v4
->
iCursorMode
=
0
;
}
break
;
}
return
result
;
}
 
Ответить с цитированием

  #8  
Старый 08.08.2020, 02:08
sqdxi
Новичок
Регистрация: 08.08.2020
Сообщений: 1
С нами: 3035061

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

1) Не могли бы подсказать в чем ошибка? (Суть скрипта, чтобы при виде пикапа(иконки зеленого домика"1273" нажимал alt+enter)

В каком формате закидывать в корень? .lua?

Код:

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
 
Ответить с цитированием

  #9  
Старый 08.08.2020, 17:19
trefa
Флудер
Регистрация: 05.02.2015
Сообщений: 2,141
С нами: 5929676

Репутация: 183


По умолчанию

[QUOTE="sqdxi"]

1) Не могли бы подсказать в чем ошибка? (Суть скрипта, чтобы при виде пикапа(иконки зеленого домика"1273" нажимал alt+enter)
В каком формате закидывать в корень? .lua?
Код:

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
 
Ответить с цитированием

  #10  
Старый 09.08.2020, 00:21
bab0n
Познающий
Регистрация: 06.11.2015
Сообщений: 95
С нами: 5535607

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

В попытках работы с .ini пробую такой код:

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


C++:





Код:
void
CALLBACK
testik
(
std
::
string param
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"Start"
)
;
std
::
fstream
sets
(
"settings.ini"
,
std
::
ios
::
out
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Файл открыт"
)
;
sets

getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Записан аргумент"
)
;
sets
.
close
(
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Файл закрыт"
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"End"
)
;
}


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


C++:





Код:
SF
->
getSAMP
(
)
->
registerChatCommand
(
"test"
,
testik
)
;


Но ничего не работает, краша нет, всё выводиться что должно в сампе, но файл не заполняется.

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






Хочу услышать любые советы и предположения, сразу говорю что в Cpp я не так давно, и многие локальные фразы могу не понять
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.