Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Запускать сервер с параметром -condebug
- #include <amxmodx>
- #include <fakemeta>
- #define PLUGIN "Crash Logs"
- #define VERSION "1.1"
- #define AUTHOR "Ser_UFL"
- #define CRASHED_MAPS "addons/amxmodx/configs/Crashes/Crash.log"
- #define CRASHED_MAPS_DIR "addons/amxmodx/configs/Crashes"
- new g_ConsoleFile[16]
- new bool:g_LoadingMap
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_forward(FM_ServerDeactivate, "Deactivate_Server")
- is_linux_server() ? formatex(g_ConsoleFile, charsmax(g_ConsoleFile), "qconsole.log") : formatex(g_ConsoleFile, charsmax(g_ConsoleFile), "../qconsole.log")
- new Time[32], this_map[32], this_map_log[64], Logs_all[64], Crash_file[64]
- get_time("%d.%m.%Y / %X", Time, charsmax(Time))
- get_mapname(this_map, charsmax(this_map))
- formatex(Logs_all, charsmax(Logs_all), "Start: %s | %s", Time, this_map)
- formatex(this_map_log, charsmax(this_map_log), "%s/%s.txt", CRASHED_MAPS_DIR, this_map)
- new CrashDir = open_dir(CRASHED_MAPS_DIR, Crash_file, charsmax(Crash_file))
- if (!CrashDir)
- return
- do
- {
- if (containi(Crash_file, ".txt") != -1)
- {
- new i_LineLen, Crashed_map_file[64], s_Line[64], Logs_all_crashes[96]
- formatex(Crashed_map_file, charsmax(Crashed_map_file), "%s/%s", CRASHED_MAPS_DIR, Crash_file)
- read_file(Crashed_map_file, 0, s_Line, charsmax(s_Line), i_LineLen)
- formatex(Logs_all_crashes, charsmax(Logs_all_crashes), "%s | Deactivate: %s", s_Line, Time)
- write_file(CRASHED_MAPS, Logs_all_crashes)
- delete_file(Crash_file)
- }
- }
- while (next_file(CrashDir, Crash_file, charsmax(Crash_file)))
- close_dir(CrashDir)
- write_file(this_map_log, Logs_all)
- g_LoadingMap = true
- set_task(1.0, "Fatal_Error")
- }
- public Deactivate_Server()
- {
- new map_deactivate[64]
- get_mapname(map_deactivate, charsmax(map_deactivate))
- format(map_deactivate, charsmax(map_deactivate), "%s/%s.txt", CRASHED_MAPS_DIR, map_deactivate)
- delete_file(map_deactivate)
- server_cmd("log on")
- server_cmd("condebug")
- server_exec()
- }
- public Fatal_Error()
- {
- server_cmd("condebug")
- server_exec()
- new i_LineLen, i_LineCount, s_Line[192]
- while (read_file(g_ConsoleFile, i_LineCount++, s_Line, charsmax(s_Line), i_LineLen))
- {
- if (containi(s_Line, "FATAL ERROR") != -1)
- {
- g_LoadingMap = false
- format(s_Line, charsmax(s_Line), "Произошла следующая ошибка: %s", s_Line)
- write_file(CRASHED_MAPS, s_Line)
- }
- }
- if (!g_LoadingMap)
- set_task(0.1, "Loading_map")
- else
- delete_file(g_ConsoleFile)
- }
- public Loading_map()
- {
- new i_LineLen, i_LineCount, s_Line[192]
- while (read_file(g_ConsoleFile, i_LineCount++, s_Line, charsmax(s_Line), i_LineLen))
- {
- if (containi(s_Line, "Loading map") != -1)
- {
- format(s_Line, charsmax(s_Line), "при загрузке карты: %s", s_Line)
- write_file(CRASHED_MAPS, s_Line)
- }
- }
- delete_file(g_ConsoleFile)
- }
Advertisement
Add Comment
Please, Sign In to add comment