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

  #8  
Старый 24.12.2025, 21:21
rhjossss
Новичок
Регистрация: 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)
 


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...