Там по сути даже если 1 разрыв времени обнаружен, уже подозрительно, но пока не знаю что это значит. Но когда много то это 100% спидхак )"искривления пространства и времени." Эйнштейн прям
Вроде ты писал что убрал voice exploit?Приветствую, что обозначает detected mouse jump ?
с C# проблемы, одинаковые float значения считает разными почему-то
не выёбывался, а помог бы.мнение икспертов пошло...
Ты зря. Читы, клипсы на бхоп ловит знатномнение икспертов пошло...
не смотрел ссылки но я бы перенес на C++ но не нашел нормальной библиотеки для работы с демо, а с нуля написал бы, но не нашел описание формата демок 1.6, куски какие-то только(Безопасно ли сравнение == для типа double?
double d = -1; if (d==-1) { } При каких обстоятельствах, безопасность сравнения на == становится низкой? Надо переменную умножить, поделить или что, чтобы double начал показывать погрешность врод...ru.stackoverflow.comDouble.Equals Метод (System)
Возвращает значение, указывающее, представляют ли два экземпляра Double одно и то же значение.docs.microsoft.com
не нашел нормальной библиотеки для работы с демо
Очень зря. Проблема будет на любом ЯП, это проблема чисел с плавающей точкой и компьютера.не смотрел ссылки
#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;
}
перенесу на C++
На плюсах скорее всего ты себе в колено выстрелишь и будешь уже ловитьдемки вылетают с ошибкой out of memory (1.9GB памяти максимум)
catch(bad_alloc& ex) { }