This commit is contained in:
2026-03-07 17:57:26 +03:00
parent 674e03349d
commit 406f685de2
3 changed files with 81 additions and 7 deletions

View File

@@ -1,8 +1,5 @@
-----------------------------------------------------------
-- weapon_base.lua, Базовый скрипт оружия
-- Автор: Кирилл
-- Изменяли:
-- Дата: 05.03.2026
-----------------------------------------------------------
-- индификаторы состояний FSM

View File

@@ -1,8 +1,5 @@
-----------------------------------------------------------
-- weapon_base.lua, Базоавый скрипт оружия
-- Автор: Кирилл
-- Изменяли:
-- Дата: 06.03.2026
-- weapon_ump.lua, Weapon UMP
-----------------------------------------------------------
weapon_ump = inherit_table(weapon_base)

View File

@@ -9,6 +9,81 @@
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#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
void error_backend(const char* txt)
@@ -39,6 +114,7 @@ void Core::Init(int argc, char* argv[])
#ifdef WIN32
//initializeConsole();
CDebugManager__Initialize();
#endif
Logger::Open();
@@ -50,6 +126,10 @@ void Core::Shutdown()
// shutdown timer
//getSystemTimer()->shutdown();
#ifdef WIN32
CDebugManager__Shutdown();
#endif
}
void Core::Frame()