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

  #1  
Старый 09.04.2019, 22:13
CleanLegend
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами: 6908018

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

Привет, сегодня напишем простой аимбот на SF.​
Алгоритм:

- найти id игрока

- получить координаты игрока

- рассчитать угол поворота

- повернуть камеру на этот угол

Получаем id и координаты игрока по зеленому треугольнику:

C++:





Код:
Cvector enpos
;
int
enid
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
sAimingAtPid
;
if
(
enid
!=
65535
)
{
enpos
.
fX
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
0
]
;
enpos
.
fY
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
1
]
;
enpos
.
fZ
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
2
]
;
}


второй вариант получения id игрока с помощью этой функции - https://blast.hk/threads/10970/#post-124093

C++:





Код:
int
enid
=
GetPlayerTarget
(
50
)
;
if
(
enid
!=
-
1
)
{
enpos
.
fX
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
0
]
;
enpos
.
fY
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
1
]
;
enpos
.
fZ
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
2
]
;
}


Получаем свои координаты и рассчитываем угол:

C++:





Код:
CCamera
*
pCamera
=
GAME
->
GetCamera
(
)
;
mypos
=
*
pCamera
->
GetCam
(
pCamera
->
GetActiveCam
(
)
)
->
GetSource
(
)
;
vector
=
mypos
-
enpos
;
float
AngleX
=
atan2f
(
vector
.
fY
,
-
vector
.
fX
)
-
M_PI
/
2
;


Поворачиваем камеру:

C++:





Код:
*
(
float
*
)
0xB6F258
=
-
(
AngleX
-
M_PI
/
2
)
;


Поворот с учетом смещения прицела(взято из собейта - https://github.com/BlastHackNet/mod_...actor.cpp#L173):

C++:





Код:
float
*
crosshairOffset
=
(
float
*
)
0xB6EC10
;
float
mult
=
tan
(
pCamera
->
GetCam
(
pCamera
->
GetActiveCam
(
)
)
->
GetFOV
(
)
*
0.5f
*
0.017453292f
)
;
float
fx
=
M_PI
-
atan2
(
1.0f
,
mult
*
(
crosshairOffset
[
1
]
-
0.5f
+
crosshairOffset
[
1
]
-
0.5f
)
)
;


Поворачиваем камеру:

C++:





Код:
*
(
float
*
)
0xB6F258
=
-
(
AngleX
-
fx
)
;


полный листинг:

C++:





Код:
void
Aimbot
(
)
{
CVector mypos
;
CVector enpos
;
CVector vector
;
int
enid
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
sAimingAtPid
;
if
(
enid
!=
65535
)
{
enpos
.
fX
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
0
]
;
enpos
.
fY
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
1
]
;
enpos
.
fZ
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
2
]
;
CCamera
*
pCamera
=
GAME
->
GetCamera
(
)
;
mypos
=
*
pCamera
->
GetCam
(
pCamera
->
GetActiveCam
(
)
)
->
GetSource
(
)
;
vector
=
mypos
-
enpos
;
float
*
crosshairOffset
=
(
float
*
)
0xB6EC10
;
float
mult
=
tan
(
pCamera
->
GetCam
(
pCamera
->
GetActiveCam
(
)
)
->
GetFOV
(
)
*
0.5f
*
0.017453292f
)
;
float
fx
=
M_PI
-
atan2
(
1.0f
,
mult
*
(
crosshairOffset
[
1
]
-
0.5f
+
crosshairOffset
[
1
]
-
0.5f
)
)
;
float
AngleX
=
atan2f
(
vector
.
fY
,
-
vector
.
fX
)
-
M_PI
/
2
;
*
(
float
*
)
0xB6F258
=
-
(
AngleX
-
fx
)
;
}
}
 
Ответить с цитированием

  #2  
Старый 09.04.2019, 22:44
AnWu
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами: 4480376

Репутация: 183


По умолчанию

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




Лучше бы показал как к Plugin SDK подрубить самп, а не аим делать. Хотя полезнич.
 
Ответить с цитированием

  #3  
Старый 10.04.2019, 11:41
Chokecha
Новичок
Регистрация: 08.11.2017
Сообщений: 21
С нами: 4480376

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

А где можно найти предыдущие уроки ?
 
Ответить с цитированием

  #4  
Старый 10.04.2019, 12:07
imring
Флудер
Регистрация: 03.08.2016
Сообщений: 2,363
С нами: 5145387

Репутация: 183


По умолчанию

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

Лучше бы показал как к Plugin SDK подрубить самп
самп же хукает gameProcessEvent и т.д. тебе надо в initRwEvent (initGameEvent и т.д.) регать евент.
 
Ответить с цитированием

  #5  
Старый 14.04.2019, 10:21
Natami
Постоянный
Регистрация: 02.11.2018
Сообщений: 375
С нами: 3963063

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

Попробовал 2-ой вариант:

error C3861: GetPlayerTarget: идентификатор не найден

В чем проблема?
 
Ответить с цитированием

  #6  
Старый 14.04.2019, 12:09
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

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

Попробовал 2-ой вариант:
error C3861: GetPlayerTarget: идентификатор не найден

В чем проблема?
Функцию саму добавил в проект?

https://blast.hk/threads/10970/#post-124093
 
Ответить с цитированием

  #7  
Старый 14.04.2019, 12:19
Natami
Постоянный
Регистрация: 02.11.2018
Сообщений: 375
С нами: 3963063

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

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

Функцию саму добавил в проект?
https://blast.hk/threads/10970/#post-124093
Да,в конец
 
Ответить с цитированием

  #8  
Старый 14.04.2019, 13:01
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

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

Да,в конец
либо в начало добавь функцию , либо сверху добавь перед использованием функции ( не в теле функции )

C++:





Код:
int
GetPlayerTarget
(
int
radius
)
;
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.