Исходник Molotov polygon

Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
Код:
static const auto flame_polygon = [] {
            std::array<vec3_t, 3> points;
            for (std::size_t i = 0; i < points.size(); ++i) {
                points[i] = vec3_t{ 60.0f * std::cos(DEG2RAD(i * (360.0f / points.size()))),
                                    60.0f * std::sin(DEG2RAD(i * (360.0f / points.size()))),
                                    0.0f };
            }
            return points;
        }();

        std::vector<vec3_t> points;

        for (int i = 0; i <= entity->fire_count(); i++)
            points.push_back(entity->origin() + vec3_t(entity->fire_x_delta()[i], entity->fire_y_delta()[i], entity->fire_z_delta()[i]));

        std::vector<ImVec2> screen_points;

        for (const auto& pos : points) {
            for (const auto& point : flame_polygon) {
                ImVec2 screen;

                if (math::world_to_screen(pos + point, screen))
                    screen_points.push_back(screen);
            }
        }       
        
        if (!screen_points.empty())
            render::polygon_filled(convex_hull(screen_points), ImColor(255, 0, 0, 150));
netvars
Код:
auto& fire_x_delta()
    {
        return netvar_manager::get_netvar< int[] >("DT_Inferno", "m_fireXDelta", this);
    }
    
    auto& fire_y_delta()
    {
        return netvar_manager::get_netvar< int[] >("DT_Inferno", "m_fireYDelta", this);
    }
    
    auto& fire_z_delta()
    {
        return netvar_manager::get_netvar< int[] >("DT_Inferno", "m_fireZDelta", this);
    }
    
    auto& fire_count()
    {
        return netvar_manager::get_netvar< int >("DT_Inferno", "m_fireCount", this);
    }
ss:1628939690042.png
ну и что бы вы смогли использовать код вам нужен будет правильный
Пожалуйста, авторизуйтесь для просмотра ссылки.
, его я вам не дам, сами сделаете
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
Код:
static const auto flame_polygon = [] {
            std::array<vec3_t, 3> points;
            for (std::size_t i = 0; i < points.size(); ++i) {
                points[i] = vec3_t{ 60.0f * std::cos(DEG2RAD(i * (360.0f / points.size()))),
                                    60.0f * std::sin(DEG2RAD(i * (360.0f / points.size()))),
                                    0.0f };
            }
            return points;
        }();

        std::vector<vec3_t> points;

        for (int i = 0; i <= entity->fire_count(); i++)
            points.push_back(entity->origin() + vec3_t(entity->fire_x_delta()[i], entity->fire_y_delta()[i], entity->fire_z_delta()[i]));

        std::vector<ImVec2> screen_points;

        for (const auto& pos : points) {
            for (const auto& point : flame_polygon) {
                ImVec2 screen;

                if (math::world_to_screen(pos + point, screen))
                    screen_points.push_back(screen);
            }
        }      
       
        if (!screen_points.empty())
            render::polygon_filled(convex_hull(screen_points), ImColor(255, 0, 0, 150));
netvars
Код:
auto& fire_x_delta()
    {
        return netvar_manager::get_netvar< int[] >("DT_Inferno", "m_fireXDelta", this);
    }
   
    auto& fire_y_delta()
    {
        return netvar_manager::get_netvar< int[] >("DT_Inferno", "m_fireYDelta", this);
    }
   
    auto& fire_z_delta()
    {
        return netvar_manager::get_netvar< int[] >("DT_Inferno", "m_fireZDelta", this);
    }
   
    auto& fire_count()
    {
        return netvar_manager::get_netvar< int >("DT_Inferno", "m_fireCount", this);
    }
ss:Посмотреть вложение 166172
ну и что бы вы смогли использовать код вам нужен будет правильный
Пожалуйста, авторизуйтесь для просмотра ссылки.
, его я вам не дам, сами сделаете
только вчера это сделал :CoolCat:
 
Пользователь
Статус
Оффлайн
Регистрация
6 Янв 2021
Сообщения
150
Реакции[?]
96
Поинты[?]
0
А не легче было сразу так
C++:
        int* m_fireXDelta = reinterpret_cast<int*>((DWORD)inferno + 0x9E4);
        int* m_fireYDelta = reinterpret_cast<int*>((DWORD)inferno + 0xB74);
        int* m_fireZDelta = reinterpret_cast<int*>((DWORD)inferno + 0xD04);
        int m_fireCount = *reinterpret_cast<int*>((DWORD)inferno + 0x13A8);
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2021
Сообщения
43
Реакции[?]
15
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для тех кто не может найти convexhull:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(no ad)
 
Пользователь
Статус
Оффлайн
Регистрация
18 Май 2020
Сообщения
188
Реакции[?]
71
Поинты[?]
0
C++:
int orientation(ImVec2 p, ImVec2 q, ImVec2 r)
{
    int val = (q.y - p.y) * (r.x - q.x) -
        (q.x - p.x) * (r.y - q.y);

    if (val == 0) return 0;
    return (val > 0) ? 1 : 2;
}

std::vector<ImVec2> convexHull(std::vector<ImVec2> points, int n)
{
    std::vector<ImVec2> hull;

    if (n < 3) return hull;

    int l = 0;
    for (int i = 1; i < n; i++)
        if (points[i].x < points[l].x)
            l = i;
    int p = l, q;
    do
    {
        hull.push_back(points[p]);

        q = (p + 1) % n;
        for (int i = 0; i < n; i++)
        {
            if (orientation(points[p], points[i], points[q]) == 2)
                q = i;
        }
        p = q;

    } while (p != l);

    return hull;
}
Usage


C++:
auto hull = convexHull(screen_points, screen_points.size());
list->AddConvexPolyFilled(hull.data(), hull.size(), ImColor(1.f, 0.f, 0.f, 0.5f));
 
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
А не легче было сразу так
C++:
        int* m_fireXDelta = reinterpret_cast<int*>((DWORD)inferno + 0x9E4);
        int* m_fireYDelta = reinterpret_cast<int*>((DWORD)inferno + 0xB74);
        int* m_fireZDelta = reinterpret_cast<int*>((DWORD)inferno + 0xD04);
        int m_fireCount = *reinterpret_cast<int*>((DWORD)inferno + 0x13A8);
нафиг надо что бы функция работала вечно! пусть лучше оффсеты отвалятся с большим апдейтом...
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
17 Июл 2021
Сообщения
463
Реакции[?]
118
Поинты[?]
10K
А не легче было сразу так
C++:
        int* m_fireXDelta = reinterpret_cast<int*>((DWORD)inferno + 0x9E4);
        int* m_fireYDelta = reinterpret_cast<int*>((DWORD)inferno + 0xB74);
        int* m_fireZDelta = reinterpret_cast<int*>((DWORD)inferno + 0xD04);
        int m_fireCount = *reinterpret_cast<int*>((DWORD)inferno + 0x13A8);
а почему у тебя координаты int, а не float?)
 
Пользователь
Статус
Оффлайн
Регистрация
6 Янв 2021
Сообщения
150
Реакции[?]
96
Поинты[?]
0
нафиг надо что бы функция работала вечно! пусть лучше оффсеты отвалятся с большим апдейтом...
чел... они у меня в кске 18 года и на нью работают, не думаю что они уже вообще отвалятся...
 
Начинающий
Статус
Оффлайн
Регистрация
3 Авг 2019
Сообщения
35
Реакции[?]
4
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
3 Июл 2019
Сообщения
137
Реакции[?]
77
Поинты[?]
2K
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
Последнее редактирование:
🫶🫶🫶
Участник
Статус
Оффлайн
Регистрация
1 Ноя 2018
Сообщения
813
Реакции[?]
182
Поинты[?]
47K
что? это математическая функция, она получает крайние точки, под сюрфейс абсолютно также делается
imvec -> vertex
в классе vertex нету x, y.
пробывать я не стал переделывать.
у меня без convexhull соединяет все точки полигоном
 
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
imvec -> vertex
в классе vertex нету x, y.
пробывать я не стал переделывать.
у меня без convexhull соединяет все точки полигоном
Код:
    std::vector<Vertex_t> vertices;

    for (int i = 0; i < points.size(); i++)
    {  
        auto point = points.at(i);

        vertices.emplace_back(Vertex_t(Vector2D(point.x, point.y)));
    }

    m_surface()->DrawSetColor(color);
    m_surface()->DrawTexturedPolygon(points, vertices.data());
использование вертексов есть даже в лв
 
Начинающий
Статус
Оффлайн
Регистрация
9 Сен 2017
Сообщения
89
Реакции[?]
25
Поинты[?]
0
this molotov polygon or something something called was inaccurate except u really want to get the hurt event trigger vector
every infernoRadius = 30.0f
just loop this with huge steps and use these points for accurate range.
I didn't really understand why you even bother "event trigger vector" ??
molotov.png
here is an accurate molotov range.
 

Вложения

Сверху Снизу