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

  #1  
Старый 29.07.2025, 20:30
JUJIK
Новичок
Регистрация: 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
)
;
}


И да, я знаю что я говнокодер, так что можете не напоминать это.
 
Ответить с цитированием

  #2  
Старый 31.07.2025, 18:54
JUJIK
Новичок
Регистрация: 31.07.2024
Сообщений: 10
С нами: 941818

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

А блять я дебил и не написал смысл темы. Короче кто шарит, можете помочь или подсказать в чем проблема? Буду очень благодарен
 
Ответить с цитированием

  #3  
Старый 31.07.2025, 20:12
mortergrand
Новичок
Регистрация: 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
)
;
}
 
Ответить с цитированием

  #4  
Старый 02.08.2025, 00:43
JUJIK
Новичок
Регистрация: 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);
}
 
Ответить с цитированием

  #5  
Старый 02.08.2025, 01:19
mortergrand
Новичок
Регистрация: 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
)
;
}
 
Ответить с цитированием

  #6  
Старый 03.08.2025, 01:57
JUJIK
Новичок
Регистрация: 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() тоже не существует
 
Ответить с цитированием

  #7  
Старый 03.08.2025, 02:23
alifeduse
Постоянный
Регистрация: 14.01.2021
Сообщений: 422
С нами: 2805205

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

конечно не существует, тебе чел из gpt кидает код
 
Ответить с цитированием

  #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.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.