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

  #1  
Старый 14.09.2022, 21:45
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

Цитата:
Сообщение от MeG@LaDo[N] ^_^  

какой хукер юзать/как хукнуть функцию игры x64?
minhook

kthook

polyhook

продолжать? можно просто загуглить
 
Ответить с цитированием

  #2  
Старый 14.09.2022, 21:59
MeG@LaDo[N] ^_^
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами: 3059886

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

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

minhook
kthook
polyhook
продолжать? можно просто загуглить
продолжай.........
 
Ответить с цитированием

  #3  
Старый 16.09.2022, 09:01
sizeoftrickster
Участник форума
Регистрация: 28.07.2021
Сообщений: 138
С нами: 2524529

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

Ку прив, использую plugin-sdk, подскажите пожалуйста, как мне проверить на то, что объект коснулся чего угодно?

У меня обрабатывается это всё чудо в цикле, мне нужно, что-бы объект, когда косается чего-то, происходило действие, в данном случае удаление объекта, использовал z координату и проверял ее с 0.f, но мне кажется, что это неправильно, и я хочу понять, как мне сделать так, что-бы проверялось касание

C++:





[CODE]
if
(
obj
->
GetPosition
(
)
.
z



Для проверки объекта на касание использовал, ловил краш =)

C++:





Код:
// Crash
if
(
obj
->
TestCollision
(
)
)
{
// some actions...
}
 
Ответить с цитированием

  #4  
Старый 17.09.2022, 13:57
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

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

Ку прив, использую plugin-sdk, подскажите пожалуйста, как мне проверить на то, что объект коснулся чего угодно?
У меня обрабатывается это всё чудо в цикле, мне нужно, что-бы объект, когда косается чего-то, происходило действие, в данном случае удаление объекта, использовал z координату и проверял ее с 0.f, но мне кажется, что это неправильно, и я хочу понять, как мне сделать так, что-бы проверялось касание

C++:





Код:
if
(
obj
->
GetPosition
(
)
.
z

TestCollision
(
)
)
{
// some actions...
}

Хукни коллизию и доставай с esi/edi два касающихся объекта. kthook вполне с этим справится. Адрес можно найти в сурсах коллизии от фипа
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

Ку прив, использую plugin-sdk, подскажите пожалуйста, как мне проверить на то, что объект коснулся чего угодно?
У меня обрабатывается это всё чудо в цикле, мне нужно, что-бы объект, когда косается чего-то, происходило действие, в данном случае удаление объекта, использовал z координату и проверял ее с 0.f, но мне кажется, что это неправильно, и я хочу понять, как мне сделать так, что-бы проверялось касание

C++:





Код:
if
(
obj
->
GetPosition
(
)
.
z

TestCollision
(
)
)
{
// some actions...
}

C++:





Код:
kthook
::
kthook_naked hook
{
0x54BCEE
}
;
hook
.
set_cb
(
[
]
(
const
kthook
::
kthook_naked
&
hook
)
{
auto
for_obj
=
reinterpret_cast

(
hook
.
get_context
(
)
.
esi
)
;
auto
with_obj
=
reinterpret_cast

(
hook
.
get_context
(
)
.
edi
)
;
/*
    if (for_obj == my_obj || with_obj == my_obj) {
       
    }
    */
}
)
;
hook
.
install
(
)
;
 
Ответить с цитированием

  #6  
Старый 17.09.2022, 17:56
cort
Участник форума
Регистрация: 05.05.2021
Сообщений: 244
С нами: 2645089

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

как сделать бег к координатам ?
 
Ответить с цитированием

  #7  
Старый 18.09.2022, 07:52
Ltall
Новичок
Регистрация: 19.06.2022
Сообщений: 14
С нами: 2055431

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

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

как сделать бег к координатам ?
C++:





[CODE]
float
*
xCam
=
(
float
*
)
0xB6F258
;
DWORD
*
ptrActor
=
(
DWORD
*
)
0xB6F5F0
;
void
rotateCamToXY
(
float
x
,
float
y
)
{
DWORD
*
pActorMtrx
=
(
DWORD
*
)
(
(
*
ptrActor
)
+
0x14
)
;
CVector2D
pPos
(
*
(
float
*
)
(
(
*
pActorMtrx
)
+
0x30
)
,
*
(
float
*
)
(
(
*
pActorMtrx
)
+
0x34
)
)
;
CVector2D
cPos
(
*
(
float
*
)
(
0xB6F9CC
)
,
*
(
float
*
)
(
0xB6F9D0
)
)
;
float
ac
=
sqrt
(
pow
(
fabs
(
cPos
.
fX
-
x
)
,
2
)
+
pow
(
fabs
(
cPos
.
fY
-
y
)
,
2
)
)
;
float
alpha
=
asin
(
fabs
(
cPos
.
fX
-
x
)
/
ac
)
;
float
beta
=
acos
(
fabs
(
cPos
.
fX
-
x
)
/
ac
)
;
if
(
(
pPos
.
fX
>
x
)
&&
(
pPos
.
fY

x
)
&&
(
pPos
.
fY
>
y
)
)
*
xCam
=
beta
;
if
(
(
pPos
.
fX

y
)
)
*
xCam
=
(
alpha
+
(
1.57
)
)
;
if
(
(
pPos
.
fX

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

  #8  
Старый 19.09.2022, 12:17
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

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

как сделать бег к координатам ?
C++:





Код:
void
Camera
::
TurnToCoord
(
Vector3 vecObj
,
float
smooth
)
{
Vector3 playerPos
=
sdk
::
player
::
coordinate
(
)
;
Vector2 ViewAngle
=
sdk
::
camera
::
angle
(
)
;
Vector3 vec
=
vecObj
-
playerPos
;
Vector2 CameraAngle
=
Vector2
(
std
::
atan2
(
-
vec
.
Length2d
(
)
,
vec
.
z
)
*
0.1
,
std
::
atan2
(
-
vec
.
y
,
-
vec
.
x
)
)
;
Vector2 calcAngle
=
(
CameraAngle
-
ViewAngle
)
/
smooth
;
//чем больше смутч, тем плавнее
Utils
::
setCameraAngle
(
ViewAngle
+
calcAngle
)
;
}


Видел эту функцию на другом форуме
 
Ответить с цитированием

  #9  
Старый 18.09.2022, 21:12
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Посмотрел пару уроков по сф и решил сделать жоски скрипт с хуком синхры педа, сделал, ошибок при компиляции никаких нету, но хук как я понял не срабатывает.

main.cpp:





Код:
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
onSendPacket
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"abc"
,
[
]
(
std
::
string
)
{
AddChat
(
-
1
,
"Mamut_Rahal active"
)
;
actived
=
!
actived
;
}
)
;
//SF->getSAMP()->getPlayers()->GetActorHandleFromSAMPPlayerID(id);
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
;
AddChat
(
-
1
,
"Ну типа работа с синхрой бу Ега."
)
;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}


main.h:





Код:
#pragma once
#include "SAMPFUNCS_API.h"
#include "game_api.h"
bool
__stdcall
onSendPacket
(
stRakNetHookParams
*
param
)
;
static
bool
actived
=
false
;
#define AddChat SF->getSAMP()->getChat()->AddChatMessage
extern
SAMPFUNCS
*
SF
;


raknet.cpp (сам хук):





Код:
#include "main.h"
bool
__stdcall
onSendPacket
(
stRakNetHookParams
*
param
)
{
if
(
param
->
packetId
==
ID_PLAYER_SYNC
)
{
if
(
actived
)
{
BYTE packet
;
stOnFootData data
;
memset
(
&
data
,
0
,
sizeof
(
stOnFootData
)
)
;
//float pos = SF->getSAMP()->getPlayers()->GetOnFootData(2)->fPosition[3];
param
->
bitStream
->
ResetReadPointer
(
)
;
param
->
bitStream
->
Read
(
packet
)
;
param
->
bitStream
->
Read
(
(
PCHAR
)
&
data
,
sizeof
(
stOnFootData
)
)
;
data
.
fMoveSpeed
[
0
]
=
2.5f
;
data
.
fMoveSpeed
[
1
]
=
2.5f
;
data
.
fMoveSpeed
[
2
]
=
2.5f
;
param
->
bitStream
->
ResetWritePointer
(
)
;
param
->
bitStream
->
Write
(
(
PCHAR
)
packet
)
;
param
->
bitStream
->
Write
(
(
PCHAR
)
&
data
,
sizeof
(
stOnFootData
)
)
;
AddChat
(
-
1
,
"%f %f %f"
,
data
.
fMoveSpeed
[
0
]
,
data
.
fMoveSpeed
[
1
]
,
data
.
fMoveSpeed
[
2
]
)
;
}
}
return
true
;
}


P.S. смог решить тем, что хук перенес из отдельного файла в main.cpp. Тогда еще 2 вопроса: как можно это сделать в разных файлах и влияет ли как-то на производительность то, что все в одном файле или разделено на несколько?
 
Ответить с цитированием

  #10  
Старый 19.09.2022, 00:44
MeG@LaDo[N] ^_^
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами: 3059886

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

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

Посмотрел пару уроков по сф и решил сделать жоски скрипт с хуком синхры педа, сделал, ошибок при компиляции никаких нету, но хук как я понял не срабатывает.

main.cpp:





Код:
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
onSendPacket
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"abc"
,
[
]
(
std
::
string
)
{
AddChat
(
-
1
,
"Mamut_Rahal active"
)
;
actived
=
!
actived
;
}
)
;
//SF->getSAMP()->getPlayers()->GetActorHandleFromSAMPPlayerID(id);
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
;
AddChat
(
-
1
,
"Ну типа работа с синхрой бу Ега."
)
;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}


main.h:





Код:
#pragma once
#include "SAMPFUNCS_API.h"
#include "game_api.h"
bool
__stdcall
onSendPacket
(
stRakNetHookParams
*
param
)
;
static
bool
actived
=
false
;
#define AddChat SF->getSAMP()->getChat()->AddChatMessage
extern
SAMPFUNCS
*
SF
;


raknet.cpp (сам хук):





Код:
#include "main.h"
bool
__stdcall
onSendPacket
(
stRakNetHookParams
*
param
)
{
if
(
param
->
packetId
==
ID_PLAYER_SYNC
)
{
if
(
actived
)
{
BYTE packet
;
stOnFootData data
;
memset
(
&
data
,
0
,
sizeof
(
stOnFootData
)
)
;
//float pos = SF->getSAMP()->getPlayers()->GetOnFootData(2)->fPosition[3];
param
->
bitStream
->
ResetReadPointer
(
)
;
param
->
bitStream
->
Read
(
packet
)
;
param
->
bitStream
->
Read
(
(
PCHAR
)
&
data
,
sizeof
(
stOnFootData
)
)
;
data
.
fMoveSpeed
[
0
]
=
2.5f
;
data
.
fMoveSpeed
[
1
]
=
2.5f
;
data
.
fMoveSpeed
[
2
]
=
2.5f
;
param
->
bitStream
->
ResetWritePointer
(
)
;
param
->
bitStream
->
Write
(
(
PCHAR
)
packet
)
;
param
->
bitStream
->
Write
(
(
PCHAR
)
&
data
,
sizeof
(
stOnFootData
)
)
;
AddChat
(
-
1
,
"%f %f %f"
,
data
.
fMoveSpeed
[
0
]
,
data
.
fMoveSpeed
[
1
]
,
data
.
fMoveSpeed
[
2
]
)
;
}
}
return
true
;
}


P.S. смог решить тем, что хук перенес из отдельного файла в main.cpp. Тогда еще 2 вопроса: как можно это сделать в разных файлах и влияет ли как-то на производительность то, что все в одном файле или разделено на несколько?
создать raknet.h и добавить прототип bool __stdcall onSendPacket(stRakNetHookParams* param);

и подключить этот файл в main.h и raknet.cpp

или вместо .cpp/h юзать .hpp
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.