Final
This commit is contained in:
@@ -1,8 +1,5 @@
|
|||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- weapon_base.lua, Базовый скрипт оружия
|
-- weapon_base.lua, Базовый скрипт оружия
|
||||||
-- Автор: Кирилл
|
|
||||||
-- Изменяли:
|
|
||||||
-- Дата: 05.03.2026
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
|
|
||||||
-- индификаторы состояний FSM
|
-- индификаторы состояний FSM
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- weapon_base.lua, Базоавый скрипт оружия
|
-- weapon_ump.lua, Weapon UMP
|
||||||
-- Автор: Кирилл
|
|
||||||
-- Изменяли:
|
|
||||||
-- Дата: 06.03.2026
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
weapon_ump = inherit_table(weapon_base)
|
weapon_ump = inherit_table(weapon_base)
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,81 @@
|
|||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
|
#include <DbgHelp.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <cstdarg>
|
||||||
|
#pragma comment(lib, "DbgHelp.lib")
|
||||||
|
|
||||||
|
LONG WINAPI UnhandleExceptionFilter(_EXCEPTION_POINTERS* ExceptionInfo)
|
||||||
|
{
|
||||||
|
SYSTEMTIME time;
|
||||||
|
GetLocalTime(&time);
|
||||||
|
|
||||||
|
char executableName[256];
|
||||||
|
GetModuleFileNameA(NULL, executableName, 256);
|
||||||
|
|
||||||
|
char minidumpPath[256];
|
||||||
|
sprintf(minidumpPath, "%s_%i-%i-%i_%i-%i-%i-%i.dmp",
|
||||||
|
executableName, time.wYear, time.wMonth, time.wDay,
|
||||||
|
time.wHour, time.wMinute, time.wSecond, time.wMilliseconds);
|
||||||
|
|
||||||
|
HANDLE minidumpFile = CreateFileA(minidumpPath, GENERIC_WRITE,
|
||||||
|
0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
|
||||||
|
if (minidumpFile != INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
MINIDUMP_EXCEPTION_INFORMATION minidumpInfo;
|
||||||
|
minidumpInfo.ThreadId = GetCurrentThreadId();
|
||||||
|
minidumpInfo.ExceptionPointers = ExceptionInfo;
|
||||||
|
minidumpInfo.ClientPointers = FALSE;
|
||||||
|
|
||||||
|
DWORD minidumpType =
|
||||||
|
MiniDumpNormal |
|
||||||
|
MiniDumpFilterMemory |
|
||||||
|
MiniDumpScanMemory |
|
||||||
|
MiniDumpWithDataSegs |
|
||||||
|
MiniDumpWithIndirectlyReferencedMemory;
|
||||||
|
|
||||||
|
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), minidumpFile,
|
||||||
|
(MINIDUMP_TYPE)minidumpType, &minidumpInfo, 0, 0);
|
||||||
|
|
||||||
|
CloseHandle(minidumpFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDebugManager__Initialize()
|
||||||
|
{
|
||||||
|
if (!IsDebuggerPresent())
|
||||||
|
SetUnhandledExceptionFilter(UnhandleExceptionFilter);
|
||||||
|
|
||||||
|
char szExecutableDirectory[MAX_PATH];
|
||||||
|
int iLen = GetModuleFileNameA(GetModuleHandleA(NULL), szExecutableDirectory, MAX_PATH);
|
||||||
|
|
||||||
|
// Search for last path character
|
||||||
|
int iExePos = iLen - 4;
|
||||||
|
int iDirectoryPos = 0;
|
||||||
|
for (int i = iExePos; i > 0; i--)
|
||||||
|
{
|
||||||
|
if (szExecutableDirectory[i] == '\\')
|
||||||
|
{
|
||||||
|
iDirectoryPos = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trim string
|
||||||
|
szExecutableDirectory[iDirectoryPos] = '\0';
|
||||||
|
|
||||||
|
BOOL bResult = SymInitialize(GetCurrentProcess(), szExecutableDirectory, FALSE);
|
||||||
|
OutputDebugStringA(bResult ? "SymInitialize ok\n" : "SymInitialize failed\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDebugManager__Shutdown()
|
||||||
|
{
|
||||||
|
SymCleanup(GetCurrentProcess());
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void error_backend(const char* txt)
|
void error_backend(const char* txt)
|
||||||
@@ -39,6 +114,7 @@ void Core::Init(int argc, char* argv[])
|
|||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
//initializeConsole();
|
//initializeConsole();
|
||||||
|
CDebugManager__Initialize();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Logger::Open();
|
Logger::Open();
|
||||||
@@ -50,6 +126,10 @@ void Core::Shutdown()
|
|||||||
|
|
||||||
// shutdown timer
|
// shutdown timer
|
||||||
//getSystemTimer()->shutdown();
|
//getSystemTimer()->shutdown();
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
CDebugManager__Shutdown();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Frame()
|
void Core::Frame()
|
||||||
|
|||||||
Reference in New Issue
Block a user