Unreal Demo Scanner Helper

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
959
Симпатии
682
Пол
Мужской
"искривления пространства и времени." Эйнштейн прям :D
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
"искривления пространства и времени." Эйнштейн прям :D
Там по сути даже если 1 разрыв времени обнаружен, уже подозрительно, но пока не знаю что это значит. Но когда много то это 100% спидхак )
В общем это происходит когда время идет идет идет и вдруг резко назад или вперед на секунду прыгает.
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Обновление 31
* Откалибровал AIM TYPE 5, теперь может ловить с точностью 100%. Если указано без (???).
* Сомнительные срабатывания AIM TYPE 5 помечены как WARN (Это 50/50 что найден чит)
* Оптимизация кода.
В следующей версии добавлю никнейм и стим игрока от которого записана демка как и просили.

 

Morkovka

Пользователь
Регистрация
5 Янв 2018
Сообщения
79
Симпатии
14
Проверял всё это время про бхоп. Всё работает без багов. Спасибо.
Возможно включение в чекер ещё проверки на другие читы?
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Ну я что получится постараюсь добавить, сейчас тут еще с C# проблемы, одинаковые float значения считает разными почему-то))
Проверял то же самое в C++ и там все четко работает. Из-за этого могло AIM TYPE 5 ложные давать при обычной стрельбе в стену, завтра поправлю)
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Обновление 32
* Исправление ложных срабатываний AIM TYPE 5
* Добавил больше конфигураций в AIM TYPE 7 (7.3 7.4)

 

wopox1337

Разработчик
Регистрация
11 Июн 2017
Сообщения
114
Симпатии
97
с C# проблемы, одинаковые float значения считает разными почему-то
 

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
959
Симпатии
682
Пол
Мужской
мнение икспертов пошло...
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
не смотрел ссылки но я бы перенес на C++ но не нашел нормальной библиотеки для работы с демо, а с нуля написал бы, но не нашел описание формата демок 1.6, куски какие-то только(

Выбрал C# т.к все готовое было оставалось только обработку данных написать.
 

MaVo

Пользователь
Регистрация
28 Апр 2018
Сообщения
46
Симпатии
7
Detected [AIM TYPE 7.2 MATCH1:50% MATCH2:40% MATCH3:50%] on (34761,89):09h:39m:21s:891ms (???)
Detected [AIM TYPE 7.4 MATCH1:20% MATCH2:20% MATCH3:50%] on (36812,45):10h:13m:32s:453ms (???)
Detected [AIM TYPE 7.4 MATCH1:60% MATCH2:100% MATCH3:50%] on (37031,85):10h:17m:11s:852ms (???)
Detected [AIM TYPE 7.4 MATCH1:30% MATCH2:100% MATCH3:50%] on (37440,4):10h:24m:00s:402ms (???)
 

wopox1337

Разработчик
Регистрация
11 Июн 2017
Сообщения
114
Симпатии
97
не нашел нормальной библиотеки для работы с демо
не смотрел ссылки
Очень зря. Проблема будет на любом ЯП, это проблема чисел с плавающей точкой и компьютера.
1588178431355.png1588178466995.pngКое-кто уже пробовал ранее этим заниматься на шарпе, но без готовой библиотеки.
Вот тебе какой-то пример допустим, на C++

Работа с HLDemo от YaLTeR:
#include "DemoFile.hpp"
#include "DemoFrame.hpp"
#pragma comment (lib, "lib/HLDemo.lib")

#include <iostream>
using namespace std;

char DEMOFILE[] = "test.dem";

string TYPENAME[] = {
    "TYPE0", "TYPE1",

        "DEMO_START",
        "CONSOLE_COMMAND",
        "CLIENT_DATA",
        "NEXT_SECTION",
        "EVENT",
        "WEAPON_ANIM",
        "SOUND",
        "DEMO_BUFFER"
};

int main()
{
    printf("START parsing a Demo!\n");
    DemoFile pDemo = DemoFile(DEMOFILE, true);
    if (pDemo.IsValidDemoFile(DEMOFILE))
    {
        printf("\t Demo filename: '%s' \n", pDemo.GetFilename());
        printf("\t Game Dir: '%s' \n", pDemo.header.gameDir);
        printf("\t Mapname: '%s' \n", pDemo.header.mapName);
        
        for (auto& entry : pDemo.directoryEntries)
        {
            
            static int i; i++;

            printf("[entry #%i]\n", i);
            printf("  CDTrack: '%i' \n", entry.CDTrack);
            printf("  Description: '%s' \n", (string)entry.description);
            printf("  fileLength: '%i' \n", entry.fileLength);
            printf("  flags: '%i' \n", entry.flags);

            if (entry.description == "Playback")
            {
                for (auto& frame : entry.frames)
                {
                    static int j; j++;
                    //printf("\t [frame #%i] \n", j);
                    // printf("\t type: '%s' \n", (string)TYPENAME[int(frame->type)]);
                    // printf("\t time: '%f' \n", frame->time);

#define GET_POINTER(class)    class( *static_cast<class*>( frame.get() ) )

                    switch (frame->type)
                    {
                    case DemoFrameType::CLIENT_DATA:
                    {
                        ClientDataFrame CL_DataFrame = GET_POINTER(ClientDataFrame);
                        //printf("\t ClientDataFrame::: ===============\n");
                        // printf("\t    CL_DataFrame.origin: [%.1f, %.1f, %.1f]\n", CL_DataFrame.origin[0], CL_DataFrame.origin[1], CL_DataFrame.origin[2]);
                        // printf("\t    CL_DataFrame.viewangles: [%.1f, %.1f, %.1f]\n", CL_DataFrame.viewangles[0], CL_DataFrame.viewangles[1], CL_DataFrame.viewangles[2]);
                        // printf("\t    CL_DataFrame.fov: '%f'\n", CL_DataFrame.fov);
                        // printf("\t    CL_DataFrame.weaponBits: '%i'\n", CL_DataFrame.weaponBits);

                        break;
                    }
                    case DemoFrameType::CONSOLE_COMMAND:
                    {
                        ConsoleCommandFrame CL_Command = GET_POINTER(ConsoleCommandFrame);
                        printf("\t ConsoleCommandFrame::: ===============\n");
                        printf("\t    CL_Command.command: '%s'\n", CL_Command.command);

                        break;
                    }
                    }
                }
            }
        }
    }
    

    printf("END parsing Demo!\n");

    system("PAUSE");
    return 0;
}
 
Последнее редактирование:

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Так то по сути именно то что я искал.
Попробую как-нибудь, если нормально читает демки то перенесу на C++, куда быстрее и меньше оперативной памяти будет требовать.

А то с 1.32 я только x64 поддержку оставил,так как тяжелые демки вылетают с ошибкой out of memory (1.9GB памяти максимум)
 

wopox1337

Разработчик
Регистрация
11 Июн 2017
Сообщения
114
Симпатии
97
демки вылетают с ошибкой out of memory (1.9GB памяти максимум)
На плюсах скорее всего ты себе в колено выстрелишь и будешь уже ловить
catch(bad_alloc& ex) { }

 

Midnight1337

Пользователь
Регистрация
8 Дек 2018
Сообщения
72
Симпатии
10
There are false detections at aim type 7, this demo is clean recorded by me...
vcQEWG6.png
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Обновление 33 БЕТА
* AIM TYPE 7.4 помечен как ложное срабатывание (пишет WARN)
* Добавлен в тестовом режиме еще один AIM, AIM TYPE 8.X (подмена угла)

 
Сверху Снизу