change createmove module order fix backtrack code compiling on release update player::get_hitboxes_internal logic add vector_transform (#30)

This commit is contained in:
F1ssi0N 2018-03-29 19:02:08 +01:00 committed by GitHub
parent 9881f79489
commit c1aa6761a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 28 deletions

View File

@ -67,13 +67,13 @@ workspace "doghook"
files { "src/**.hh", "src/**.cc" }
filter "system:linux"
postbuildcommands {
prebuildcommands {
"{MKDIR} %{wks.location}/compile_commands/",
"{TOUCH} %{wks.location}/compile_commands/%{cfg.shortname}.json",
"{COPY} %{wks.location}/compile_commands/%{cfg.shortname}.json ../compile_commands.json"
}
filter "system:windows"
postbuildcommands {
prebuildcommands {
"cmd.exe /c \"" .. "{MKDIR} %{wks.location}/compile_commands/",
"cmd.exe /c \"" .. "{TOUCH} %{wks.location}/compile_commands/%{cfg.shortname}.json",
"cmd.exe /c \"" .. "{COPY} %{wks.location}/compile_commands/%{cfg.shortname}.json ../compile_commands.json*"

View File

@ -76,8 +76,8 @@ bool hooked_create_move(void *instance, float sample_framerate, UserCmd *user_cm
// Do create_move()
backtrack::create_move(user_cmd);
aimbot::create_move(user_cmd);
backtrack::create_move(user_cmd);
backtrack::create_move_finish(user_cmd);

View File

@ -288,8 +288,10 @@ static auto try_autoshoot(sdk::UserCmd *cmd) {
// Only allow autoshoot when we are zoomed and can get headshots
if (local_weapon->client_class()->class_id == class_id::CTFSniperRifle && (local_player->cond() & 2)) {
if ((local_player->tick_base() * IFace<Globals>()->interval_per_tick - local_player->fov_time()) >= 0.2)
autoshoot_allowed = true;
auto player_time = local_player->tick_base() * IFace<Globals>()->interval_per_tick;
auto time_delta = player_time - local_player->fov_time();
if (time_delta >= 0.2) autoshoot_allowed = true;
}
if (autoshoot_allowed) cmd->buttons |= 1;

View File

@ -203,7 +203,7 @@ void create_move_pre_predict(sdk::UserCmd *cmd) {
#ifdef _DEBUG
if (layer_count > backtrack_max_anim_layers)
logging::msg("Not enough space for all layers (has %d, needs %d)",
backtrack_max_anim_layers, layer_count);
backtrack_max_anim_layers, layer_count);
#endif
auto layer_max = std::min<u32>(backtrack_max_anim_layers, layer_count);
@ -228,6 +228,7 @@ static math::Vector hullcolor[8] = {
};
void create_move(sdk::UserCmd *cmd) {
#ifdef _DEBUG
for (auto entity : IFace<EntList>()->get_range()) {
if (entity->is_valid() == false) continue;
auto player = entity->to_player();
@ -240,19 +241,21 @@ void create_move(sdk::UserCmd *cmd) {
IFace<DebugOverlay>()->add_text_overlay(record.origin, 0, "%d", record.this_tick);
if (record.this_tick == cmd->tick_count)
for (u32 i = 0; i < record.max_hitboxes; i++) {
auto &hitboxes = record.hitboxes;
//if (record.this_tick == cmd->tick_count) {
auto &hitboxes = record.hitboxes;
for (u32 i = 0; i < record.max_hitboxes; i++) {
auto j = (record.this_tick % 8);
auto r = (int)(255.0f * hullcolor[j].x);
auto g = (int)(255.0f * hullcolor[j].y);
auto b = (int)(255.0f * hullcolor[j].z);
auto j = (record.this_tick % 8);
auto r = (int)(255.0f * hullcolor[j].x);
auto g = (int)(255.0f * hullcolor[j].y);
auto b = (int)(255.0f * hullcolor[j].z);
IFace<DebugOverlay>()->add_box_overlay(hitboxes.origin[i], hitboxes.raw_min[i], hitboxes.raw_max[i], hitboxes.rotation[i], r, g, b, 100, 0);
}
IFace<DebugOverlay>()->add_box_overlay(hitboxes.origin[i], hitboxes.raw_min[i], hitboxes.raw_max[i], hitboxes.rotation[i], r, g, b, 100, 0);
}
//}
}
}
#endif
}
auto create_move_finish(sdk::UserCmd *cmd) -> void {

View File

@ -6,6 +6,7 @@
#include "netvar.hh"
#include "vfunc.hh"
#include "log.hh"
#include "sdk.hh"
using namespace sdk;
@ -210,6 +211,7 @@ static auto get_hitboxes_internal(Player *player, const StudioModel *model, Play
auto hitbox_set_ptr = model->hitbox_set(0);
assert(hitbox_set_ptr);
// Allow us to use operator[] properly
auto &hitbox_set = *hitbox_set_ptr;
auto hitboxes_count = std::min(128u, hitbox_set.hitboxes_count);
@ -221,24 +223,21 @@ static auto get_hitboxes_internal(Player *player, const StudioModel *model, Play
auto box = hitbox_set[i];
assert(box);
math::Vector rotation;
math::matrix_angles(bone_to_world[box->bone], rotation, origin);
const auto &transform = bone_to_world[box->bone];
math::Matrix3x4 rotate_matrix;
rotate_matrix.from_angle(rotation);
math::Vector rotated_min, rotated_max;
rotated_min = rotate_matrix.rotate_vector(box->min);
rotated_max = rotate_matrix.rotate_vector(box->max);
auto rotated_min = transform.vector_transform(box->min);
auto rotated_max = transform.vector_transform(box->max);
centre = rotated_min.lerp(rotated_max, 0.5);
hitboxes->centre[i] = origin + centre;
hitboxes->min[i] = origin + rotated_min;
hitboxes->max[i] = origin + rotated_max;
hitboxes->centre[i] = centre;
hitboxes->min[i] = rotated_min;
hitboxes->max[i] = rotated_max;
#ifdef _DEBUG
math::Vector rotation;
math::matrix_angles(transform, &rotation.x);
hitboxes->rotation[i] = rotation;
hitboxes->origin[i] = origin;
hitboxes->raw_min[i] = box->min;

View File

@ -263,6 +263,15 @@ public:
return out;
}
auto vector_transform(const Vector &in) const {
Vector column;
auto out = rotate_vector(in);
out += (get_column(3, column), column);
return out;
}
auto from_angle(const Vector &angles) {
auto radian_pitch = to_radians(angles.x);
auto radian_yaw = to_radians(angles.y);
@ -351,4 +360,4 @@ inline void matrix_angles(const Matrix3x4 &matrix, Vector &angles, Vector &posit
} // namespace math
#define Vector_split_components(v) (v).x, (v).y, (v).z
#define vector_split_components(v) (v).x, (v).y, (v).z