 |

29.07.2025, 20:30
|
|
Новичок
Регистрация: 31.07.2024
Сообщений: 10
С нами:
941818
Репутация:
1
|
|
В общем, я тупой человек, и пытаюсь освоить PluginSDK (что уже несовместимо чета)
Короче без чата гпт я не могу, но мы вдвоем не можем понять в чем проблема.
Проблема в том, что тригербот очень криво работает, а именно видит нужного педа по которому стрелять нужно только когда выхожу с прицела.
Так-же, возможно, не работает эмуляция выстрела, но я хз.
Вот код:
TriggerBot.cpp:
Код:
#include "TriggerBot.h"
#include "plugin.h"
#include "CPad.h"
#include "CPlayerPed.h"
#include "CWorld.h"
#include "CVector.h"
#include "CEntity.h"
#include "CColPoint.h"
#include "CCamera.h"
#include "CPools.h"
#include "sampapi/sampapi.h"
#include "sampapi/0.3.7-R1/CChat.h"
using
namespace
sampapi
::
v037r1
;
bool
JK_TriggerIsEnable
=
false
;
void
MouseLeftClick
(
)
{
INPUT input
[
2
]
=
{
}
;
input
[
0
]
.
type
=
INPUT_MOUSE
;
input
[
0
]
.
mi
.
dwFlags
=
MOUSEEVENTF_LEFTDOWN
;
input
[
1
]
.
type
=
INPUT_MOUSE
;
input
[
1
]
.
mi
.
dwFlags
=
MOUSEEVENTF_LEFTUP
;
SendInput
(
2
,
input
,
sizeof
(
INPUT
)
)
;
}
void
TriggerBot
::
Update
(
)
{
if
(
!
JK_TriggerIsEnable
)
return
;
CPlayerPed
*
player
=
FindPlayerPed
(
)
;
if
(
!
player
||
!
player
->
IsAlive
(
)
)
return
;
CVector camPos
=
*
TheCamera
.
GetGameCamPosition
(
)
;
CVector camFront
=
TheCamera
.
m_aCams
[
0
]
.
m_vecFront
;
camFront
.
Normalise
(
)
;
CVector targetPos
=
camPos
+
(
camFront
*
100.0f
)
;
CColPoint colPoint
;
CEntity
*
hitEntity
=
nullptr
;
bool
hit
=
CWorld
::
ProcessLineOfSight
(
camPos
,
targetPos
,
colPoint
,
hitEntity
,
true
,
// buildings
true
,
// vehicles
true
,
// peds
m_nType
==
ENTITY_TYPE_PED
&&
hitEntity
!=
player
)
{
CPed
*
ped
=
reinterpret_cast
(
hitEntity
)
;
if
(
ped
&&
ped
->
IsAlive
(
)
)
{
MouseLeftClick
(
)
;
RefChat
(
)
->
AddChatMessage
(
"TRIGGERBOT"
,
0xFF0000FF
,
"Shooting at target..."
)
;
return
;
}
}
}
void
TriggerBot
::
RenderUI
(
)
{
ImGui
::
Checkbox
(
"TriggerBot"
,
&
JK_TriggerIsEnable
)
;
}
И да, я знаю что я говнокодер, так что можете не напоминать это.
|
|
|

31.07.2025, 18:54
|
|
Новичок
Регистрация: 31.07.2024
Сообщений: 10
С нами:
941818
Репутация:
1
|
|
А блять я дебил и не написал смысл темы. Короче кто шарит, можете помочь или подсказать в чем проблема? Буду очень благодарен
|
|
|

31.07.2025, 20:12
|
|
Новичок
Регистрация: 22.07.2023
Сообщений: 23
С нами:
1481537
Репутация:
3
|
|
Проблема довольно типичная. Дело в том, как ты получаешь направление взгляда камеры. TheCamera.m_aCams[0].m_vecFront не всегда указывает точно в центр экрана, особенно когда ты не целишься.
Триггер срабатывает криво, потому что он видит цель только в тот момент, когда состояние камеры меняется (тоесть при выходе из прицела), а не постоянно во время прицеливания.
Попробуй этот код, по идеи, должно заработать как надо.
Изменения:
Добавил проверку на то, зажата ли правая кнопка мыши (GetRightMouseDown). Теперь триггер будет работать только во время прицеливания.
Изменил способ получения векторов для трассировки. Вместо прямого доступа к вектору камеры используется TheCamera.Find3rdPersonCamTargetVector, что дает более точное направление "взгляда" из центра экрана.
C++:
Код:
#include "TriggerBot.h"
#include "plugin.h"
#include "CPad.h"
#include "CPlayerPed.h"
#include "CWorld.h"
#include "CVector.h"
#include "CEntity.h"
#include "CColPoint.h"
#include "CCamera.h"
#include "CPools.h"
#include "sampapi/sampapi.h"
#include "sampapi/0.3.7-R1/CChat.h"
using
namespace
sampapi
::
v037r1
;
bool
JK_TriggerIsEnable
=
false
;
void
MouseLeftClick
(
)
{
INPUT input
[
2
]
=
{
}
;
input
[
0
]
.
type
=
INPUT_MOUSE
;
input
[
0
]
.
mi
.
dwFlags
=
MOUSEEVENTF_LEFTDOWN
;
input
[
1
]
.
type
=
INPUT_MOUSE
;
input
[
1
]
.
mi
.
dwFlags
=
MOUSEEVENTF_LEFTUP
;
SendInput
(
2
,
input
,
sizeof
(
INPUT
)
)
;
}
void
TriggerBot
::
Update
(
)
{
if
(
!
JK_TriggerIsEnable
)
return
;
CPlayerPed
*
player
=
FindPlayerPed
(
)
;
// Проверяем, жив ли игрок и целится ли он (GetPad()->GetRightMouseJustDown() или GetPad()->GetRightMouseDown())
if
(
!
player
||
!
player
->
IsAlive
(
)
||
!
player
->
GetPadFromPlayer
(
)
->
GetRightMouseDown
(
)
)
return
;
// Получаем позицию источника выстрела (камеры)
CVector source
;
TheCamera
.
Find3rdPersonCamTargetVector
(
100.0f
,
player
->
GetPosition
(
)
,
&
source
,
nullptr
)
;
// Получаем позицию цели (куда смотрит камера)
CVector target
;
TheCamera
.
Find3rdPersonCamTargetVector
(
0.0f
,
source
,
&
source
,
&
target
)
;
CColPoint colPoint
;
CEntity
*
hitEntity
=
nullptr
;
// Используем полученные векторы для трассировки линии
bool
hit
=
CWorld
::
ProcessLineOfSight
(
source
,
target
,
colPoint
,
hitEntity
,
true
,
// buildings
true
,
// vehicles
true
,
// peds
false
,
// objects
false
,
// dummies
false
,
// seeThroughStuff
false
,
// cameraObjects
false
// unknownFlag
)
;
if
(
hit
&&
hitEntity
&&
hitEntity
->
m_nType
==
ENTITY_TYPE_PED
&&
hitEntity
!=
player
)
{
CPed
*
ped
=
reinterpret_cast
(
hitEntity
)
;
if
(
ped
&&
ped
->
IsAlive
(
)
)
{
MouseLeftClick
(
)
;
}
}
}
void
TriggerBot
::
RenderUI
(
)
{
ImGui
::
Checkbox
(
"TriggerBot"
,
&
JK_TriggerIsEnable
)
;
}
|
|
|

02.08.2025, 00:43
|
|
Новичок
Регистрация: 31.07.2024
Сообщений: 10
С нами:
941818
Репутация:
1
|
|
Все круто, но при нажатии пкм с включеным тригером самп просто крашит с ошибкой
--------------------------- Microsoft Visual C++ Runtime Library --------------------------- Runtime Error! Program: C:\kichiroCOMFORT [v2]\gta_sa.exe This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. --------------------------- ОК ---------------------------
Так-же небыло в CPad функции GetRightMouseDown, но я заменил проверкой переменной в том самом CPad
Нынешний код выглядит вот так, хз че делать, помогите
TriggerBot.cpp:
Код:
#include "TriggerBot.h"
#include "plugin.h"
#include "CPad.h"
#include "CPlayerPed.h"
#include "CWorld.h"
#include "CVector.h"
#include "CEntity.h"
#include "CColPoint.h"
#include "CCamera.h"
#include "CPools.h"
#include "sampapi/sampapi.h"
#include "sampapi/0.3.7-R1/CChat.h"
using namespace sampapi::v037r1;
bool JK_TriggerIsEnable = false;
void MouseLeftClick() {
INPUT input[2] = {};
input[0].type = INPUT_MOUSE;
input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
input[1].type = INPUT_MOUSE;
input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(2, input, sizeof(INPUT));
}
void TriggerBot::Update() {
if (!JK_TriggerIsEnable) return;
CPlayerPed* player = FindPlayerPed();
if (!player || !player->IsAlive() || CPad::NewMouseControllerState.rmb == 0) return;
CVector source;
TheCamera.Find3rdPersonCamTargetVector(100.0f, player->GetPosition(), &source, nullptr);
CVector target;
TheCamera.Find3rdPersonCamTargetVector(0.0f, source, &source, &target);
CColPoint colPoint;
CEntity* hitEntity = nullptr;
bool hit = CWorld::ProcessLineOfSight(source, target, colPoint, hitEntity,
true, // buildings
true, // vehicles
true, // peds
false, // objects
false, // dummies
false, // seeThroughStuff
false, // cameraObjects
false // unknownFlag
);
if (hit && hitEntity && hitEntity->m_nType == ENTITY_TYPE_PED && hitEntity != player) {
CPed* ped = reinterpret_cast(hitEntity);
if (ped && ped->IsAlive()) {
MouseLeftClick();
}
}
}
void TriggerBot::RenderUI()
{
ImGui::Checkbox("TriggerBot", &JK_TriggerIsEnable);
}
|
|
|

02.08.2025, 01:19
|
|
Новичок
Регистрация: 22.07.2023
Сообщений: 23
С нами:
1481537
Репутация:
3
|
|
Сообщение от JUJIK
Все круто, но при нажатии пкм с включеным тригером самп просто крашит с ошибкой
Так-же небыло в CPad функции GetRightMouseDown, но я заменил проверкой переменной в том самом CPad
Нынешний код выглядит вот так, хз че делать, помогите
TriggerBot.cpp:
Код:
#include "TriggerBot.h"
#include "plugin.h"
#include "CPad.h"
#include "CPlayerPed.h"
#include "CWorld.h"
#include "CVector.h"
#include "CEntity.h"
#include "CColPoint.h"
#include "CCamera.h"
#include "CPools.h"
#include "sampapi/sampapi.h"
#include "sampapi/0.3.7-R1/CChat.h"
using namespace sampapi::v037r1;
bool JK_TriggerIsEnable = false;
void MouseLeftClick() {
INPUT input[2] = {};
input[0].type = INPUT_MOUSE;
input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
input[1].type = INPUT_MOUSE;
input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(2, input, sizeof(INPUT));
}
void TriggerBot::Update() {
if (!JK_TriggerIsEnable) return;
CPlayerPed* player = FindPlayerPed();
if (!player || !player->IsAlive() || CPad::NewMouseControllerState.rmb == 0) return;
CVector source;
TheCamera.Find3rdPersonCamTargetVector(100.0f, player->GetPosition(), &source, nullptr);
CVector target;
TheCamera.Find3rdPersonCamTargetVector(0.0f, source, &source, &target);
CColPoint colPoint;
CEntity* hitEntity = nullptr;
bool hit = CWorld::ProcessLineOfSight(source, target, colPoint, hitEntity,
true, // buildings
true, // vehicles
true, // peds
false, // objects
false, // dummies
false, // seeThroughStuff
false, // cameraObjects
false // unknownFlag
);
if (hit && hitEntity && hitEntity->m_nType == ENTITY_TYPE_PED && hitEntity != player) {
CPed* ped = reinterpret_cast(hitEntity);
if (ped && ped->IsAlive()) {
MouseLeftClick();
}
}
}
void TriggerBot::RenderUI()
{
ImGui::Checkbox("TriggerBot", &JK_TriggerIsEnable);
}
Я нашел причину краша и несколько других моментов, которые я думаю что стоит улучшить.
Главная причина вылета кроется в том , что ты неправильно используешь функцию TheCamera.Find3rdPersonCamTargetVector. В первой строке ты передаешь nullptr в качестве одного из аргументов , и когда игра пытается записать туда данные , она вылетает.
И да , ты правильно заметил, что GetRightMouseDown может отсутствовать. Твоя замена была близка, но есть более надежный способ проверить, целится ли игрок , это CPad::GetPad(0)->GetAiming().
Ниже исправленный код , с внесенными улучшениями и исправленной ошибкой.
C++:
Код:
#include "TriggerBot.h"
#include "plugin.h"
#include "CPad.h"
#include "CPlayerPed.h"
#include "CWorld.h"
#include "CVector.h"
#include "CEntity.h"
#include "CColPoint.h"
#include "CCamera.h"
#include "CPools.h"
#include "sampapi/sampapi.h"
#include "sampapi/0.3.7-R1/CChat.h"
#include "sampapi/0.3.7-R1/CPlayerPool.h"
// https://github.com/DarkP1xel/SAMP-API/blob/0d43a3603239f2f4bc65b8305ffc72177386cc29/src/0.3.7-R3-1/CPlayerPool.h#L26
using
namespace
sampapi
::
v037r1
;
bool
JK_TriggerIsEnable
=
false
;
void
MouseLeftClick
(
)
{
INPUT input
[
2
]
=
{
}
;
input
[
0
]
.
type
=
INPUT_MOUSE
;
input
[
0
]
.
mi
.
dwFlags
=
MOUSEEVENTF_LEFTDOWN
;
input
[
1
]
.
type
=
INPUT_MOUSE
;
input
[
1
]
.
mi
.
dwFlags
=
MOUSEEVENTF_LEFTUP
;
SendInput
(
2
,
input
,
sizeof
(
INPUT
)
)
;
}
void
TriggerBot
::
Update
(
)
{
if
(
!
JK_TriggerIsEnable
)
return
;
CPlayerPed
*
player
=
FindPlayerPed
(
)
;
// юзаем надежную проверку на прицеливание. Если игрок не целится , выходим
if
(
!
player
||
!
player
->
IsAlive
(
)
||
!
CPad
::
GetPad
(
0
)
->
GetAiming
(
)
)
{
return
;
}
CVector source
,
target
;
TheCamera
.
Find3rdPersonCamTargetVector
(
1.0f
,
player
->
GetPosition
(
)
,
&
source
,
&
target
)
;
// делаем больше дистанцию луча для снайперских винтовок
target
=
source
+
(
(
target
-
source
)
*
500.0f
)
;
CColPoint colPoint
;
CEntity
*
hitEntity
=
nullptr
;
bool
hit
=
CWorld
::
ProcessLineOfSight
(
source
,
target
,
colPoint
,
hitEntity
,
true
,
true
,
true
,
false
,
false
,
false
,
false
,
false
)
;
if
(
hit
&&
hitEntity
&&
hitEntity
->
m_nType
==
ENTITY_TYPE_PED
)
{
CPed
*
ped
=
reinterpret_cast
(
hitEntity
)
;
// проверяем , что это не мы и шо пед жив
if
(
ped
==
player
||
!
ped
->
IsAlive
(
)
)
{
return
;
}
// проверяем , что это игрок , а не нпс
if
(
RefPlayerPool
(
)
->
GetId
(
ped
)
!=
-
1
)
{
MouseLeftClick
(
)
;
}
}
}
void
TriggerBot
::
RenderUI
(
)
{
ImGui
::
Checkbox
(
"TriggerBot"
,
&
JK_TriggerIsEnable
)
;
}
|
|
|

03.08.2025, 01:57
|
|
Новичок
Регистрация: 31.07.2024
Сообщений: 10
С нами:
941818
Репутация:
1
|
|
Стало ещё больше ошибок.
В общем ругается на все использования классов CPed, CEntity, мол это все не однозначные классы и нужно как-то юзать по своему
Так-же ругается что не видит функцию RefPlayerPool, но я думаю что это не сильно важная функция
В общем код сейчас такой
TriggerBot.cpp:
Код:
#include "TriggerBot.h"
#include "plugin.h"
#include "CPad.h"
#include "CPlayerPed.h"
#include "CWorld.h"
#include "CVector.h"
#include "CEntity.h"
#include "CColPoint.h"
#include "CCamera.h"
#include "CPools.h"
#include "sampapi/sampapi.h"
#include "sampapi/0.3.7-R1/CChat.h"
#include "sampapi/0.3.7-R1/CPlayerPool.h"
using namespace sampapi::v037r1;
bool JK_TriggerIsEnable = false;
void SimulateLeftClick() {
CPad::NewMouseControllerState.lmb = 255;
Sleep(10);
CPad::NewMouseControllerState.lmb = 0;
}
void TriggerBot::Update() {
if (!JK_TriggerIsEnable) return;
CPlayerPed* player = FindPlayerPed();
if (!player || !player->IsAlive() || CPad::NewMouseControllerState.rmb == 0) return;
CVector source, target;
TheCamera.Find3rdPersonCamTargetVector(1.0f, player->GetPosition(), &source, &target);
target = source + ((target - source) * 500.0f);
CColPoint colPoint;
::CEntity * hitEntity = nullptr;
bool hit = CWorld::ProcessLineOfSight(source, target, colPoint, hitEntity,
true, true, true, false, false, false, false, false);
if (hit && hitEntity && hitEntity->m_nType == ENTITY_TYPE_PED) {
::CPed* ped = reinterpret_cast(hitEntity);
if (ped == player || !ped->IsAlive()) {
return;
}
SimulateLeftClick();
}
}
void TriggerBot::RenderUI()
{
ImGui::Checkbox("TriggerBot", &JK_TriggerIsEnable);
}
И проблема все та же, не крашит теперь но когда целюсь - ничего не происходит
Кстати функции GetAiming() тоже не существует
|
|
|

03.08.2025, 02:23
|
|
Постоянный
Регистрация: 14.01.2021
Сообщений: 422
С нами:
2805205
Репутация:
83
|
|
конечно не существует, тебе чел из gpt кидает код
|
|
|

24.12.2025, 21:21
|
|
Новичок
Регистрация: 28.07.2024
Сообщений: 3
С нами:
946126
Репутация:
1
|
|
Вот минимальный код триггербота
c++:
Код:
void CAimbot::Triggerbot()
{
if (g_Config.g_Aimbot.bTriggerbot && g_Config.g_Aimbot.bAimbotEnabled[pSAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon] && bCrosshair)
{
static ULONGLONG iTick = GetTickCount64();
if (g_Config.g_Aimbot.bTriggerDelay && GetTickCount64() - iTick g_GameKeyState[BUTTON_CIRCLE] = { 0xFF, true };
iTick = GetTickCount64();
}
}
else
{
// Обычный режим - raycast от камеры
CVector vecCamera, vecOrigin, vecTarget;
if (pSAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon != 34)
{
// Обычное оружие
Utils::getBonePosition(FindPlayerPed(), BONE_RIGHTWRIST, &vecOrigin);
TheCamera.Find3rdPersonCamTargetVector(100.f, vecOrigin, &vecCamera, &vecTarget);
}
else
{
// Снайперка - луч из центра экрана
CVector vecFront = TheCamera.m_aCams[0].m_vecFront;
vecFront.Normalise();
vecCamera = *TheCamera.GetGameCamPosition();
vecCamera += (vecFront * 2.0f);
vecTarget = vecCamera + (vecFront * 100.f);
}
// Проверка попадания луча
CColPoint pCollision; CEntity* pCollisionEntity = NULL;
bool bCollision = CWorld::ProcessLineOfSight(vecCamera, vecTarget, pCollision, pCollisionEntity,
!g_Config.g_Aimbot.bLockThroughObjects, !g_Config.g_Aimbot.bLockThroughObjects,
true, true, true, true, false, true);
if (bCollision && pCollisionEntity && pCollisionEntity->m_nType == ENTITY_TYPE_PED)
{
for (int i = 0; i isPlayerStreamed(i))
continue;
CPed* pPed = CPools::GetPed(pSAMP->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->ulGTAEntityHandle);
if (!pPed || pPed == FindPlayerPed() || pCollisionEntity != pPed || !pPed->IsAlive())
continue;
// Защита тиммейтов
if (g_Config.g_Aimbot.bTeamProtect && pSAMP->getPlayerColor(i) == pSAMP->getPlayerColor(pSAMP->getPlayers()->sLocalPlayerID))
continue;
// Фильтры
if (!g_Config.g_Aimbot.bIgnoreEverything)
{
if (g_Config.g_Aimbot.bIgnoreAFK && pSAMP->getPlayers()->pRemotePlayer[i]->pPlayerData->iAFKState == 2)
continue;
float fDistanceFromEnemy = Math::vect3_dist(
&pSAMP->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped->base.matrix[12],
&pSAMP->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->base.matrix[12]);
if (!g_Config.g_Aimbot.bIgnoreMaxDistance && fDistanceFromEnemy > fWeaponRange[pSAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon])
continue;
}
// Выстрел
pKeyHook->g_GameKeyState[BUTTON_CIRCLE] = { 0xFF, true };
iTick = GetTickCount64();
break;
}
}
}
}
}
Необходимые зависимости:
bCrosshair — проверка что прицел активен (режим камеры 53 или 7)
pKeyHook->g_GameKeyState[BUTTON_CIRCLE] — симуляция нажатия кнопки стрельбы
CWorld::ProcessLineOfSight — raycast из GTA SA
Utils::getBonePosition — получение позиции кости
TheCamera — глобальный объект камеры GTA
pSAMP — обёртка над SAMP
для компиляции тебе надо
plugin-sdk
plugin-sdk:
Код:
// Камера
CCamera TheCamera; // 0xB6F028
TheCamera.m_aCams[0].m_nMode // режим камеры
TheCamera.m_aCams[0].m_vecFront // направление камеры
TheCamera.GetGameCamPosition() // позиция камеры
TheCamera.Find3rdPersonCamTargetVector() // вектор прицеливания
// Мир
CWorld::ProcessLineOfSight() // raycast
// Игрок
FindPlayerPed() // локальный пед
CPed, CEntity // структуры
CPools::GetPed() // получить пед по хендлу
SAMP SDK:
Код:
// Структуры SAMP
stSAMP
*
pSAMP
;
pSAMP
->
getPlayers
(
)
->
pLocalPlayer
// локальный игрок
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
// удалённые игроки
pSAMP
->
isPlayerStreamed
(
i
)
// проверка стрима
pSAMP
->
getPlayerColor
(
i
)
// цвет игрока (для тимчека)
// Данные игрока
byteCurrentWeapon
// текущее оружие
pPlayerData
->
pSAMP_Actor
->
ulGTAEntityHandle
// хендл педа
pPlayerData
->
iAFKState
// AFK статус
Утилиты (можно написать свои):
Код:
// Получить позицию кости
void
getBonePosition
(
CPed
*
pPed
,
ePedBones bone
,
CVector
*
out
)
{
RwV3d rwPos
;
pPed
->
GetBonePosition
(
rwPos
,
bone
,
false
)
;
out
->
x
=
rwPos
.
x
;
out
->
y
=
rwPos
.
y
;
out
->
z
=
rwPos
.
z
;
}
// Дистанция между векторами
float
vect3_dist
(
float
*
v1
,
float
*
v2
)
{
float
dx
=
v1
[
0
]
-
v2
[
0
]
;
float
dy
=
v1
[
1
]
-
v2
[
1
]
;
float
dz
=
v1
[
2
]
-
v2
[
2
]
;
return
sqrtf
(
dx
*
dx
+
dy
*
dy
+
dz
*
dz
)
;
}
4. Симуляция нажатия клавиш:
Код:
// Вариант 1: Хук на ввод
pKeyHook
->
g_GameKeyState
[
BUTTON_CIRCLE
]
=
{
0xFF
,
true
}
;
// Вариант 2: Напрямую в память GTA
*
(
BYTE
*
)
0xB73458
=
255
;
// fire key state
// Вариант 3: SendInput / mouse_event
mouse_event
(
MOUSEEVENTF_LEFTDOWN
,
0
,
0
,
0
,
0
)
;
mouse_event
(
MOUSEEVENTF_LEFTUP
,
0
,
0
,
0
,
0
)
;
5. Массив дальности оружия:
Код:
float fWeaponRange[47] = {
0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, // 0-9 (melee)
0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, // 10-19
0.f, 0.f, 35.f, 35.f, 35.f, 35.f, 35.f, 35.f, 35.f, 35.f, // 20-29 (pistols, smg)
45.f, 45.f, 35.f, 100.f, 300.f, 0.f, 0.f, 0.f, 0.f, 0.f, // 30-39 (rifles, sniper)
// ...
};
Минимальный standalone пример::
Код:
void
Triggerbot
(
)
{
// Проверка прицела
int
mode
=
*
(
int
*
)
(
0xB6F028
+
0x174
)
;
// TheCamera.m_aCams[0].m_nMode
if
(
mode
!=
53
&&
mode
!=
7
)
return
;
// Raycast
CVector camPos
=
*
(
CVector
*
)
(
0xB6F028
+
0x190
)
;
CVector camFront
=
*
(
CVector
*
)
(
0xB6F028
+
0x140
)
;
CVector target
=
camPos
+
camFront
*
100.f
;
CColPoint col
;
CEntity
*
entity
=
nullptr
;
if
(
CWorld
::
ProcessLineOfSight
(
camPos
,
target
,
col
,
entity
,
true
,
true
,
true
,
true
,
true
,
true
,
false
,
true
)
)
{
if
(
entity
&&
entity
->
m_nType
==
3
)
{
// ENTITY_TYPE_PED
// Проверить что это враг через SAMP...
mouse_event
(
MOUSEEVENTF_LEFTDOWN
|
MOUSEEVENTF_LEFTUP
,
0
,
0
,
0
,
0
)
;
}
}
}
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|