Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Вопрос по тригер боту

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Май 2024
Сообщения
104
Реакции
2
Кароче вот у меня есть тригер бот которий уже изнасилован ии (он питался пофиксить как badpackets 2) он так его и не пофиксил вот код,как пофиксить кик по причине badpackets 2?

Trigger:
Expand Collapse Copy
#include "triggerbot.h"
#include "../../OverrideClient.h"
#include "../../globals/globals.h"
#include "../stap/stap.h"
#include "../wtap/wtap.h"
#include "../autojumpreset/autojumpreset.h"
#include <sdk/minecraft/minecraft.h>
#include <sdk/minecraft/player/player.h>
#include <sdk/minecraft/entity/entity.h>
#include <sdk/classloader.h>
#include <windows.h>
#include <cmath>

static jclass entity_hit_result_cls = nullptr;
static jclass player_cls = nullptr;
static jclass living_entity_cls = nullptr;
static jclass vec3d_cls = nullptr;

static jmethodID get_entity_mid = nullptr;
static jmethodID get_cooldown_mid = nullptr;
static jmethodID get_velocity_mid = nullptr;
static jmethodID do_attack_mid = nullptr;

static jfieldID crosshair_target_fid = nullptr;
static jfieldID age_fid = nullptr;
static jfieldID vec3d_y_fid = nullptr;
static jfieldID hurt_time_fid = nullptr;

bool OverrideClient::modules::triggerbot::attacked_this_jump = false;
int OverrideClient::modules::triggerbot::last_processed_age = -1;
static int last_attack_age = 0;

void OverrideClient::modules::triggerbot::resolve_mappings(JNIEnv* env) {
    if (player_cls) return;

    auto find_and_cache = [&](const char* sig) -> jclass {
        if (!sig) return nullptr;
        std::string s = sig;
        if (s.front() == 'L' && s.back() == ';') s = s.substr(1, s.size() - 2);
        jclass local = sdk::classloader::find_class(env, s.c_str());
        if (!local) return nullptr;
        jclass global = (jclass)env->NewGlobalRef(local);
        env->DeleteLocalRef(local);
        return global;
    };

    jclass minecraft_cls = find_and_cache(sdk::mappings::minecraft_class_sig);
    entity_hit_result_cls = find_and_cache(sdk::mappings::entity_hit_result_class_sig);
    player_cls = find_and_cache(sdk::mappings::player_entity_class_sig);
    living_entity_cls = find_and_cache(sdk::mappings::living_entity_class_sig);
    vec3d_cls = find_and_cache(sdk::mappings::vec3d_class_sig);

    if (env->ExceptionCheck()) env->ExceptionClear();
    if (!minecraft_cls || !entity_hit_result_cls || !player_cls || !living_entity_cls || !vec3d_cls) return;

    crosshair_target_fid = env->GetFieldID(minecraft_cls, sdk::mappings::crosshair_target_name, sdk::mappings::crosshair_target_sig);
    do_attack_mid = env->GetMethodID(minecraft_cls, sdk::mappings::do_attack_name, sdk::mappings::do_attack_sig);
  
    get_entity_mid = env->GetMethodID(entity_hit_result_cls, sdk::mappings::entity_hit_result_get_entity_name, sdk::mappings::entity_hit_result_get_entity_sig);
    get_cooldown_mid = env->GetMethodID(player_cls, sdk::mappings::get_attack_cooldown_progress_name, sdk::mappings::get_attack_cooldown_progress_sig);
  
    jclass entity_base_cls = sdk::classloader::find_class(env, sdk::mappings::entity_class_sig);
    if (entity_base_cls) {
        get_velocity_mid = env->GetMethodID(entity_base_cls, sdk::mappings::entity_velocity_name, sdk::mappings::entity_velocity_sig);
        age_fid = env->GetFieldID(entity_base_cls, sdk::mappings::entity_age_name, "I");
        env->DeleteLocalRef(entity_base_cls);
    }
  
    vec3d_y_fid = env->GetFieldID(vec3d_cls, sdk::mappings::vec3d_y_name, sdk::mappings::vec3d_y_sig);
    hurt_time_fid = env->GetFieldID(living_entity_cls, sdk::mappings::living_entity_hurt_time_name, sdk::mappings::living_entity_hurt_time_sig);

    env->DeleteGlobalRef(minecraft_cls);
    if (env->ExceptionCheck()) env->ExceptionClear();
}

bool OverrideClient::modules::triggerbot::is_valid_target(JNIEnv* env, jobject target) {
    if (!target) return false;
    jobject local_player = sdk::instance->get_player();
    if (local_player) {
        bool is_same = env->IsSameObject(target, local_player);
        env->DeleteLocalRef(local_player);
        if (is_same) return false;
    }
    return env->IsInstanceOf(target, living_entity_cls);
}

void OverrideClient::modules::triggerbot::run() {
    if (!globals::triggerbot_enabled || globals::show_gui) return;

    auto env = OverrideClient::instance->get_env();
    if (!env) return;

    resolve_mappings(env);
    if (!player_cls || !age_fid || !hurt_time_fid) return;

    jobject lp_obj = sdk::instance->get_player();
    if (!lp_obj) return;

    int current_age = env->GetIntField(lp_obj, age_fid);
    if (current_age == last_processed_age) {
        env->DeleteLocalRef(lp_obj);
        return;
    }
    last_processed_age = current_age;

    sdk::entity_client local_player(lp_obj);
    bool on_ground = local_player.is_on_ground();
    if (on_ground) attacked_this_jump = false;

    jobject current_screen = sdk::instance->get_current_screen();
    if (current_screen != nullptr) {
        env->DeleteLocalRef(current_screen);
        env->DeleteLocalRef(lp_obj);
        return;
    }

    jobject mc_obj = sdk::instance->get_minecraft();
    if (!mc_obj) {
        env->DeleteLocalRef(lp_obj);
        return;
    }

    jobject hit_result = env->GetObjectField(mc_obj, crosshair_target_fid);
    if (!hit_result || !env->IsInstanceOf(hit_result, entity_hit_result_cls)) {
        if (hit_result) env->DeleteLocalRef(hit_result);
        env->DeleteLocalRef(lp_obj); env->DeleteLocalRef(mc_obj);
        return;
    }

    jobject target_entity = env->CallObjectMethod(hit_result, get_entity_mid);
    env->DeleteLocalRef(hit_result);

    if (!target_entity || !is_valid_target(env, target_entity)) {
        if (target_entity) env->DeleteLocalRef(target_entity);
        env->DeleteLocalRef(lp_obj); env->DeleteLocalRef(mc_obj);
        return;
    }

    int target_hurt_time = env->GetIntField(target_entity, hurt_time_fid);
    if (target_hurt_time > 0) {
        env->DeleteLocalRef(target_entity);
        env->DeleteLocalRef(lp_obj); env->DeleteLocalRef(mc_obj);
        return;
    }

    float cooldown = env->CallFloatMethod(lp_obj, get_cooldown_mid, 0.0f);
  
    double velocity_y = 0;
    jobject vel_vec = env->CallObjectMethod(lp_obj, get_velocity_mid);
    if (vel_vec) {
        velocity_y = env->GetDoubleField(vel_vec, vec3d_y_fid);
        env->DeleteLocalRef(vel_vec);
    }
    int my_hurt_time = env->GetIntField(lp_obj, hurt_time_fid);

    bool cooldown_ready = !globals::triggerbot_require_cooldown || cooldown >= 0.9f;
    bool tick_gate_ready = (current_age - last_attack_age >= 10);
  
    bool conditions_met = false;
    if (on_ground) {
        conditions_met = cooldown_ready && tick_gate_ready;
    } else if (!attacked_this_jump) {
        if (velocity_y < 0 || my_hurt_time > 0) {
            conditions_met = cooldown_ready;
        }
    }

    if (conditions_met) {
        if (sdk::instance->do_attack()) {
            last_attack_age = current_age;
            sdk::instance->set_attack_cooldown(10);

            if (globals::last_hit_entity) env->DeleteGlobalRef(globals::last_hit_entity);
            globals::last_hit_entity = env->NewGlobalRef(target_entity);

            OverrideClient::modules::stap::on_hit();
            OverrideClient::modules::wtap::on_hit();
            OverrideClient::modules::autojumpreset::on_hit();
          
            if (!on_ground) attacked_this_jump = true;
        }
    }

    if (env->ExceptionCheck()) env->ExceptionClear();

    env->DeleteLocalRef(target_entity);
    env->DeleteLocalRef(lp_obj);
    env->DeleteLocalRef(mc_obj);
}

void OverrideClient::modules::triggerbot::cleanup() {
    auto env = OverrideClient::instance->get_env();
    if (!env) return;
    auto release = [&](jclass& cls) { if (cls) { env->DeleteGlobalRef(cls); cls = nullptr; } };
    release(entity_hit_result_cls); release(player_cls);
    release(living_entity_cls); release(vec3d_cls);
}
Да ужас я не скриваю
 

Вложения

  • 1773507419258.png
    1773507419258.png
    6.5 KB · Просмотры: 50
Java:
Expand Collapse Copy
#include "triggerbot.h"
#include "../../OverrideClient.h"
#include "../../globals/globals.h"
#include "../stap/stap.h"
#include "../wtap/wtap.h"
#include "../autojumpreset/autojumpreset.h"
#include <sdk/minecraft/minecraft.h>
#include <sdk/minecraft/player/player.h>
#include <sdk/minecraft/entity/entity.h>
#include <sdk/classloader.h>
#include <windows.h>
#include <cmath>
#include <random>
#include <chrono>

static jclass entity_hit_result_cls = nullptr;
static jclass player_cls            = nullptr;
static jclass living_entity_cls     = nullptr;
static jclass vec3d_cls             = nullptr;

static jmethodID get_entity_mid   = nullptr;
static jmethodID get_cooldown_mid = nullptr;
static jmethodID get_velocity_mid = nullptr;
static jmethodID do_attack_mid    = nullptr;

static jfieldID crosshair_target_fid = nullptr;
static jfieldID age_fid              = nullptr;
static jfieldID vec3d_y_fid          = nullptr;
static jfieldID hurt_time_fid        = nullptr;

bool OverrideClient::modules::triggerbot::attacked_this_jump   = false;
int  OverrideClient::modules::triggerbot::last_processed_age   = -1;
static int  last_attack_age       = 0;
static int  pending_delay_ticks   = 0;
static bool attack_pending        = false;

namespace {
    std::mt19937& rng() {
        static std::mt19937 gen(
            static_cast<uint32_t>(
                std::chrono::steady_clock::now().time_since_epoch().count()
            )
        );
        return gen;
    }

    int rand_int(int lo, int hi) {
        return std::uniform_int_distribution<int>(lo, hi)(rng());
    }

    float rand_float(float lo, float hi) {
        return std::uniform_real_distribution<float>(lo, hi)(rng());
    }

    float cooldown_threshold() {
        return rand_float(0.85f, 0.95f);
    }

    int tick_gate() {
        return rand_int(9, 13);
    }

    int reaction_delay() {
        return rand_int(0, 2);
    }
}

void OverrideClient::modules::triggerbot::resolve_mappings(JNIEnv* env) {
    if (player_cls) return;

    auto find_and_cache = [&](const char* sig) -> jclass {
        if (!sig) return nullptr;
        std::string s = sig;
        if (s.front() == 'L' && s.back() == ';') s = s.substr(1, s.size() - 2);
        jclass local = sdk::classloader::find_class(env, s.c_str());
        if (!local) return nullptr;
        jclass global = (jclass)env->NewGlobalRef(local);
        env->DeleteLocalRef(local);
        return global;
    };

    jclass minecraft_cls    = find_and_cache(sdk::mappings::minecraft_class_sig);
    entity_hit_result_cls   = find_and_cache(sdk::mappings::entity_hit_result_class_sig);
    player_cls              = find_and_cache(sdk::mappings::player_entity_class_sig);
    living_entity_cls       = find_and_cache(sdk::mappings::living_entity_class_sig);
    vec3d_cls               = find_and_cache(sdk::mappings::vec3d_class_sig);

    if (env->ExceptionCheck()) env->ExceptionClear();
    if (!minecraft_cls || !entity_hit_result_cls || !player_cls ||
        !living_entity_cls || !vec3d_cls) return;

    crosshair_target_fid = env->GetFieldID(
        minecraft_cls,
        sdk::mappings::crosshair_target_name,
        sdk::mappings::crosshair_target_sig
    );
    do_attack_mid = env->GetMethodID(
        minecraft_cls,
        sdk::mappings::do_attack_name,
        sdk::mappings::do_attack_sig
    );
    get_entity_mid = env->GetMethodID(
        entity_hit_result_cls,
        sdk::mappings::entity_hit_result_get_entity_name,
        sdk::mappings::entity_hit_result_get_entity_sig
    );
    get_cooldown_mid = env->GetMethodID(
        player_cls,
        sdk::mappings::get_attack_cooldown_progress_name,
        sdk::mappings::get_attack_cooldown_progress_sig
    );

    jclass entity_base_cls = sdk::classloader::find_class(
        env, sdk::mappings::entity_class_sig
    );
    if (entity_base_cls) {
        get_velocity_mid = env->GetMethodID(
            entity_base_cls,
            sdk::mappings::entity_velocity_name,
            sdk::mappings::entity_velocity_sig
        );
        age_fid = env->GetFieldID(entity_base_cls, sdk::mappings::entity_age_name, "I");
        env->DeleteLocalRef(entity_base_cls);
    }

    vec3d_y_fid  = env->GetFieldID(vec3d_cls,
        sdk::mappings::vec3d_y_name, sdk::mappings::vec3d_y_sig);
    hurt_time_fid = env->GetFieldID(living_entity_cls,
        sdk::mappings::living_entity_hurt_time_name,
        sdk::mappings::living_entity_hurt_time_sig);

    env->DeleteGlobalRef(minecraft_cls);
    if (env->ExceptionCheck()) env->ExceptionClear();
}

bool OverrideClient::modules::triggerbot::is_valid_target(JNIEnv* env, jobject target) {
    if (!target) return false;

    jobject local_player = sdk::instance->get_player();
    if (local_player) {
        bool is_self = env->IsSameObject(target, local_player);
        env->DeleteLocalRef(local_player);
        if (is_self) return false;
    }
    return env->IsInstanceOf(target, living_entity_cls);
}

void OverrideClient::modules::triggerbot::run() {
    if (!globals::triggerbot_enabled || globals::show_gui) return;

    JNIEnv* env = OverrideClient::instance->get_env();
    if (!env) return;

    resolve_mappings(env);
    if (!player_cls || !age_fid || !hurt_time_fid) return;

    jobject lp_obj = sdk::instance->get_player();
    if (!lp_obj) return;

    int current_age = env->GetIntField(lp_obj, age_fid);
    if (current_age == last_processed_age) {
        env->DeleteLocalRef(lp_obj);
        return;
    }
    last_processed_age = current_age;

    sdk::entity_client local_player(lp_obj);
    bool on_ground = local_player.is_on_ground();
    if (on_ground) {
        attacked_this_jump = false;
    }

    jobject current_screen = sdk::instance->get_current_screen();
    if (current_screen) {
        env->DeleteLocalRef(current_screen);
        env->DeleteLocalRef(lp_obj);
        return;
    }

    jobject mc_obj = sdk::instance->get_minecraft();
    if (!mc_obj) {
        env->DeleteLocalRef(lp_obj);
        return;
    }

    jobject hit_result = env->GetObjectField(mc_obj, crosshair_target_fid);
    if (!hit_result || !env->IsInstanceOf(hit_result, entity_hit_result_cls)) {
        if (hit_result) env->DeleteLocalRef(hit_result);
        attack_pending      = false;
        pending_delay_ticks = 0;
        env->DeleteLocalRef(lp_obj);
        env->DeleteLocalRef(mc_obj);
        return;
    }

    jobject target_entity = env->CallObjectMethod(hit_result, get_entity_mid);
    env->DeleteLocalRef(hit_result);

    if (!target_entity || !is_valid_target(env, target_entity)) {
        if (target_entity) env->DeleteLocalRef(target_entity);
        attack_pending      = false;
        pending_delay_ticks = 0;
        env->DeleteLocalRef(lp_obj);
        env->DeleteLocalRef(mc_obj);
        return;
    }

    int target_hurt_time = env->GetIntField(target_entity, hurt_time_fid);
    if (target_hurt_time > 0) {
        env->DeleteLocalRef(target_entity);
        env->DeleteLocalRef(lp_obj);
        env->DeleteLocalRef(mc_obj);
        return;
    }

    float  cooldown    = env->CallFloatMethod(lp_obj, get_cooldown_mid, 0.0f);
    int    my_hurt     = env->GetIntField(lp_obj, hurt_time_fid);
    double velocity_y  = 0.0;

    jobject vel_vec = env->CallObjectMethod(lp_obj, get_velocity_mid);
    if (vel_vec) {
        velocity_y = env->GetDoubleField(vel_vec, vec3d_y_fid);
        env->DeleteLocalRef(vel_vec);
    }

    const float threshold = cooldown_threshold();
    bool cooldown_ready   = !globals::triggerbot_require_cooldown || cooldown >= threshold;
    bool tick_gate_ready  = (current_age - last_attack_age) >= tick_gate();

    bool conditions_met = false;
    if (on_ground) {
        conditions_met = cooldown_ready && tick_gate_ready;
    } else if (!attacked_this_jump) {
        bool falling = (velocity_y < -0.05);
        if (falling || my_hurt > 0) {
            conditions_met = cooldown_ready;
        }
    }

    if (conditions_met && !attack_pending) {
        attack_pending      = true;
        pending_delay_ticks = reaction_delay();
    }

    if (attack_pending) {
        if (pending_delay_ticks > 0) {
            --pending_delay_ticks;
        } else {
            attack_pending = false;

            if (sdk::instance->do_attack()) {
                last_attack_age = current_age;
                sdk::instance->set_attack_cooldown(10);

                if (globals::last_hit_entity) env->DeleteGlobalRef(globals::last_hit_entity);
                globals::last_hit_entity = env->NewGlobalRef(target_entity);

                OverrideClient::modules::stap::on_hit();
                OverrideClient::modules::wtap::on_hit();
                OverrideClient::modules::autojumpreset::on_hit();

                if (!on_ground) attacked_this_jump = true;
            }
        }
    }

    if (env->ExceptionCheck()) env->ExceptionClear();

    env->DeleteLocalRef(target_entity);
    env->DeleteLocalRef(lp_obj);
    env->DeleteLocalRef(mc_obj);
}

void OverrideClient::modules::triggerbot::cleanup() {
    JNIEnv* env = OverrideClient::instance->get_env();
    if (!env) return;
    auto release = [&](jclass& cls) {
        if (cls) { env->DeleteGlobalRef(cls); cls = nullptr; }
    };
    release(entity_hit_result_cls);
    release(player_cls);
    release(living_entity_cls);
    release(vec3d_cls);
}
 
скажи ии чтобы не юзала пакеты, а тоесть пакетный сброс спринт. Тоесть CEntityActionPacket.Action.STOP_SPRINTING и START_SPRINTING вообще не использовать.
 
Последнее редактирование:
Кароче вот у меня есть тригер бот которий уже изнасилован ии (он питался пофиксить как badpackets 2) он так его и не пофиксил вот код,как пофиксить кик по причине badpackets 2?

Trigger:
Expand Collapse Copy
#include "triggerbot.h"
#include "../../OverrideClient.h"
#include "../../globals/globals.h"
#include "../stap/stap.h"
#include "../wtap/wtap.h"
#include "../autojumpreset/autojumpreset.h"
#include <sdk/minecraft/minecraft.h>
#include <sdk/minecraft/player/player.h>
#include <sdk/minecraft/entity/entity.h>
#include <sdk/classloader.h>
#include <windows.h>
#include <cmath>

static jclass entity_hit_result_cls = nullptr;
static jclass player_cls = nullptr;
static jclass living_entity_cls = nullptr;
static jclass vec3d_cls = nullptr;

static jmethodID get_entity_mid = nullptr;
static jmethodID get_cooldown_mid = nullptr;
static jmethodID get_velocity_mid = nullptr;
static jmethodID do_attack_mid = nullptr;

static jfieldID crosshair_target_fid = nullptr;
static jfieldID age_fid = nullptr;
static jfieldID vec3d_y_fid = nullptr;
static jfieldID hurt_time_fid = nullptr;

bool OverrideClient::modules::triggerbot::attacked_this_jump = false;
int OverrideClient::modules::triggerbot::last_processed_age = -1;
static int last_attack_age = 0;

void OverrideClient::modules::triggerbot::resolve_mappings(JNIEnv* env) {
    if (player_cls) return;

    auto find_and_cache = [&](const char* sig) -> jclass {
        if (!sig) return nullptr;
        std::string s = sig;
        if (s.front() == 'L' && s.back() == ';') s = s.substr(1, s.size() - 2);
        jclass local = sdk::classloader::find_class(env, s.c_str());
        if (!local) return nullptr;
        jclass global = (jclass)env->NewGlobalRef(local);
        env->DeleteLocalRef(local);
        return global;
    };

    jclass minecraft_cls = find_and_cache(sdk::mappings::minecraft_class_sig);
    entity_hit_result_cls = find_and_cache(sdk::mappings::entity_hit_result_class_sig);
    player_cls = find_and_cache(sdk::mappings::player_entity_class_sig);
    living_entity_cls = find_and_cache(sdk::mappings::living_entity_class_sig);
    vec3d_cls = find_and_cache(sdk::mappings::vec3d_class_sig);

    if (env->ExceptionCheck()) env->ExceptionClear();
    if (!minecraft_cls || !entity_hit_result_cls || !player_cls || !living_entity_cls || !vec3d_cls) return;

    crosshair_target_fid = env->GetFieldID(minecraft_cls, sdk::mappings::crosshair_target_name, sdk::mappings::crosshair_target_sig);
    do_attack_mid = env->GetMethodID(minecraft_cls, sdk::mappings::do_attack_name, sdk::mappings::do_attack_sig);
 
    get_entity_mid = env->GetMethodID(entity_hit_result_cls, sdk::mappings::entity_hit_result_get_entity_name, sdk::mappings::entity_hit_result_get_entity_sig);
    get_cooldown_mid = env->GetMethodID(player_cls, sdk::mappings::get_attack_cooldown_progress_name, sdk::mappings::get_attack_cooldown_progress_sig);
 
    jclass entity_base_cls = sdk::classloader::find_class(env, sdk::mappings::entity_class_sig);
    if (entity_base_cls) {
        get_velocity_mid = env->GetMethodID(entity_base_cls, sdk::mappings::entity_velocity_name, sdk::mappings::entity_velocity_sig);
        age_fid = env->GetFieldID(entity_base_cls, sdk::mappings::entity_age_name, "I");
        env->DeleteLocalRef(entity_base_cls);
    }
 
    vec3d_y_fid = env->GetFieldID(vec3d_cls, sdk::mappings::vec3d_y_name, sdk::mappings::vec3d_y_sig);
    hurt_time_fid = env->GetFieldID(living_entity_cls, sdk::mappings::living_entity_hurt_time_name, sdk::mappings::living_entity_hurt_time_sig);

    env->DeleteGlobalRef(minecraft_cls);
    if (env->ExceptionCheck()) env->ExceptionClear();
}

bool OverrideClient::modules::triggerbot::is_valid_target(JNIEnv* env, jobject target) {
    if (!target) return false;
    jobject local_player = sdk::instance->get_player();
    if (local_player) {
        bool is_same = env->IsSameObject(target, local_player);
        env->DeleteLocalRef(local_player);
        if (is_same) return false;
    }
    return env->IsInstanceOf(target, living_entity_cls);
}

void OverrideClient::modules::triggerbot::run() {
    if (!globals::triggerbot_enabled || globals::show_gui) return;

    auto env = OverrideClient::instance->get_env();
    if (!env) return;

    resolve_mappings(env);
    if (!player_cls || !age_fid || !hurt_time_fid) return;

    jobject lp_obj = sdk::instance->get_player();
    if (!lp_obj) return;

    int current_age = env->GetIntField(lp_obj, age_fid);
    if (current_age == last_processed_age) {
        env->DeleteLocalRef(lp_obj);
        return;
    }
    last_processed_age = current_age;

    sdk::entity_client local_player(lp_obj);
    bool on_ground = local_player.is_on_ground();
    if (on_ground) attacked_this_jump = false;

    jobject current_screen = sdk::instance->get_current_screen();
    if (current_screen != nullptr) {
        env->DeleteLocalRef(current_screen);
        env->DeleteLocalRef(lp_obj);
        return;
    }

    jobject mc_obj = sdk::instance->get_minecraft();
    if (!mc_obj) {
        env->DeleteLocalRef(lp_obj);
        return;
    }

    jobject hit_result = env->GetObjectField(mc_obj, crosshair_target_fid);
    if (!hit_result || !env->IsInstanceOf(hit_result, entity_hit_result_cls)) {
        if (hit_result) env->DeleteLocalRef(hit_result);
        env->DeleteLocalRef(lp_obj); env->DeleteLocalRef(mc_obj);
        return;
    }

    jobject target_entity = env->CallObjectMethod(hit_result, get_entity_mid);
    env->DeleteLocalRef(hit_result);

    if (!target_entity || !is_valid_target(env, target_entity)) {
        if (target_entity) env->DeleteLocalRef(target_entity);
        env->DeleteLocalRef(lp_obj); env->DeleteLocalRef(mc_obj);
        return;
    }

    int target_hurt_time = env->GetIntField(target_entity, hurt_time_fid);
    if (target_hurt_time > 0) {
        env->DeleteLocalRef(target_entity);
        env->DeleteLocalRef(lp_obj); env->DeleteLocalRef(mc_obj);
        return;
    }

    float cooldown = env->CallFloatMethod(lp_obj, get_cooldown_mid, 0.0f);
 
    double velocity_y = 0;
    jobject vel_vec = env->CallObjectMethod(lp_obj, get_velocity_mid);
    if (vel_vec) {
        velocity_y = env->GetDoubleField(vel_vec, vec3d_y_fid);
        env->DeleteLocalRef(vel_vec);
    }
    int my_hurt_time = env->GetIntField(lp_obj, hurt_time_fid);

    bool cooldown_ready = !globals::triggerbot_require_cooldown || cooldown >= 0.9f;
    bool tick_gate_ready = (current_age - last_attack_age >= 10);
 
    bool conditions_met = false;
    if (on_ground) {
        conditions_met = cooldown_ready && tick_gate_ready;
    } else if (!attacked_this_jump) {
        if (velocity_y < 0 || my_hurt_time > 0) {
            conditions_met = cooldown_ready;
        }
    }

    if (conditions_met) {
        if (sdk::instance->do_attack()) {
            last_attack_age = current_age;
            sdk::instance->set_attack_cooldown(10);

            if (globals::last_hit_entity) env->DeleteGlobalRef(globals::last_hit_entity);
            globals::last_hit_entity = env->NewGlobalRef(target_entity);

            OverrideClient::modules::stap::on_hit();
            OverrideClient::modules::wtap::on_hit();
            OverrideClient::modules::autojumpreset::on_hit();
         
            if (!on_ground) attacked_this_jump = true;
        }
    }

    if (env->ExceptionCheck()) env->ExceptionClear();

    env->DeleteLocalRef(target_entity);
    env->DeleteLocalRef(lp_obj);
    env->DeleteLocalRef(mc_obj);
}

void OverrideClient::modules::triggerbot::cleanup() {
    auto env = OverrideClient::instance->get_env();
    if (!env) return;
    auto release = [&](jclass& cls) { if (cls) { env->DeleteGlobalRef(cls); cls = nullptr; } };
    release(entity_hit_result_cls); release(player_cls);
    release(living_entity_cls); release(vec3d_cls);
}
Да ужас я не скриваю
тебе нужно давать удары в тик игрока, а вообще код хуёвый
 
В тик игрока отправляй пакеты, лучше для этого хукать

Для хуков можно юзнуть JNI HOOK, либо сделай win api click
Я кароче разобрался,я просто использовал mc.options и там можно хукать удар,щяс питаюсь понять как зделать так щоб оно одновремено могло комбить и бить критами
 
Назад
Сверху Снизу