diff --git a/client_files/export/main.cpp b/client_files/export/main.cpp index 8bf6827d4..865fbd6d8 100644 --- a/client_files/export/main.cpp +++ b/client_files/export/main.cpp @@ -17,7 +17,9 @@ */ #include -#include "../../common/debug.h" + +#include "../../common/eqemu_logsys.h" +#include "../../common/global_define.h" #include "../../common/shareddb.h" #include "../../common/eqemu_config.h" #include "../../common/platform.h" @@ -25,47 +27,53 @@ #include "../../common/rulesys.h" #include "../../common/string_util.h" +EQEmuLogSys Log; + void ExportSpells(SharedDatabase *db); void ExportSkillCaps(SharedDatabase *db); void ExportBaseData(SharedDatabase *db); int main(int argc, char **argv) { RegisterExecutablePlatform(ExePlatformClientExport); + Log.LoadLogSettingsDefaults(); set_exception_handler(); - LogFile->write(EQEmuLog::Status, "Client Files Export Utility"); + Log.Out(Logs::General, Logs::Status, "Client Files Export Utility"); if(!EQEmuConfig::LoadConfig()) { - LogFile->write(EQEmuLog::Error, "Unable to load configuration file."); + Log.Out(Logs::General, Logs::Error, "Unable to load configuration file."); return 1; } const EQEmuConfig *config = EQEmuConfig::get(); - if(!load_log_settings(config->LogSettingsFile.c_str())) { - LogFile->write(EQEmuLog::Error, "Warning: unable to read %s.", config->LogSettingsFile.c_str()); - } SharedDatabase database; - LogFile->write(EQEmuLog::Status, "Connecting to database..."); + Log.Out(Logs::General, Logs::Status, "Connecting to database..."); if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(), config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) { - LogFile->write(EQEmuLog::Error, "Unable to connect to the database, cannot continue without a " + Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a " "database connection"); return 1; } + /* Register Log System and Settings */ + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); + ExportSpells(&database); ExportSkillCaps(&database); ExportBaseData(&database); + Log.CloseFileLogs(); + return 0; } void ExportSpells(SharedDatabase *db) { - LogFile->write(EQEmuLog::Status, "Exporting Spells..."); + Log.Out(Logs::General, Logs::Status, "Exporting Spells..."); FILE *f = fopen("export/spells_us.txt", "w"); if(!f) { - LogFile->write(EQEmuLog::Error, "Unable to open export/spells_us.txt to write, skipping."); + Log.Out(Logs::General, Logs::Error, "Unable to open export/spells_us.txt to write, skipping."); return; } @@ -89,7 +97,6 @@ void ExportSpells(SharedDatabase *db) { fprintf(f, "%s\n", line.c_str()); } } else { - LogFile->write(EQEmuLog::Error, "Error in ExportSpells query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); } fclose(f); @@ -103,7 +110,6 @@ bool SkillUsable(SharedDatabase *db, int skill_id, int class_id) { class_id, skill_id); auto results = db->QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in skill_usable query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -123,7 +129,6 @@ int GetSkill(SharedDatabase *db, int skill_id, int class_id, int level) { class_id, skill_id, level); auto results = db->QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in get_skill query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -135,11 +140,11 @@ int GetSkill(SharedDatabase *db, int skill_id, int class_id, int level) { } void ExportSkillCaps(SharedDatabase *db) { - LogFile->write(EQEmuLog::Status, "Exporting Skill Caps..."); + Log.Out(Logs::General, Logs::Status, "Exporting Skill Caps..."); FILE *f = fopen("export/SkillCaps.txt", "w"); if(!f) { - LogFile->write(EQEmuLog::Error, "Unable to open export/SkillCaps.txt to write, skipping."); + Log.Out(Logs::General, Logs::Error, "Unable to open export/SkillCaps.txt to write, skipping."); return; } @@ -164,11 +169,11 @@ void ExportSkillCaps(SharedDatabase *db) { } void ExportBaseData(SharedDatabase *db) { - LogFile->write(EQEmuLog::Status, "Exporting Base Data..."); + Log.Out(Logs::General, Logs::Status, "Exporting Base Data..."); FILE *f = fopen("export/BaseData.txt", "w"); if(!f) { - LogFile->write(EQEmuLog::Error, "Unable to open export/BaseData.txt to write, skipping."); + Log.Out(Logs::General, Logs::Error, "Unable to open export/BaseData.txt to write, skipping."); return; } @@ -190,7 +195,6 @@ void ExportBaseData(SharedDatabase *db) { fprintf(f, "%s\n", line.c_str()); } } else { - LogFile->write(EQEmuLog::Error, "Error in ExportBaseData query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); } fclose(f); diff --git a/client_files/import/main.cpp b/client_files/import/main.cpp index 7617248d0..a8477f77a 100644 --- a/client_files/import/main.cpp +++ b/client_files/import/main.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../../common/debug.h" +#include "../../common/eqemu_logsys.h" +#include "../../common/global_define.h" #include "../../common/shareddb.h" #include "../../common/eqemu_config.h" #include "../../common/platform.h" @@ -24,38 +25,43 @@ #include "../../common/rulesys.h" #include "../../common/string_util.h" +EQEmuLogSys Log; + void ImportSpells(SharedDatabase *db); void ImportSkillCaps(SharedDatabase *db); void ImportBaseData(SharedDatabase *db); int main(int argc, char **argv) { RegisterExecutablePlatform(ExePlatformClientImport); + Log.LoadLogSettingsDefaults(); set_exception_handler(); - LogFile->write(EQEmuLog::Status, "Client Files Import Utility"); + Log.Out(Logs::General, Logs::Status, "Client Files Import Utility"); if(!EQEmuConfig::LoadConfig()) { - LogFile->write(EQEmuLog::Error, "Unable to load configuration file."); + Log.Out(Logs::General, Logs::Error, "Unable to load configuration file."); return 1; } const EQEmuConfig *config = EQEmuConfig::get(); - if(!load_log_settings(config->LogSettingsFile.c_str())) { - LogFile->write(EQEmuLog::Error, "Warning: unable to read %s.", config->LogSettingsFile.c_str()); - } SharedDatabase database; - LogFile->write(EQEmuLog::Status, "Connecting to database..."); + Log.Out(Logs::General, Logs::Status, "Connecting to database..."); if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(), config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) { - LogFile->write(EQEmuLog::Error, "Unable to connect to the database, cannot continue without a " + Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a " "database connection"); return 1; } + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); + ImportSpells(&database); ImportSkillCaps(&database); ImportBaseData(&database); + Log.CloseFileLogs(); + return 0; } @@ -64,7 +70,6 @@ int GetSpellColumns(SharedDatabase *db) { const std::string query = "DESCRIBE spells_new"; auto results = db->QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetSpellColumns query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -72,10 +77,10 @@ int GetSpellColumns(SharedDatabase *db) { } void ImportSpells(SharedDatabase *db) { - LogFile->write(EQEmuLog::Status, "Importing Spells..."); + Log.Out(Logs::General, Logs::Status, "Importing Spells..."); FILE *f = fopen("import/spells_us.txt", "r"); if(!f) { - LogFile->write(EQEmuLog::Error, "Unable to open import/spells_us.txt to read, skipping."); + Log.Out(Logs::General, Logs::Error, "Unable to open import/spells_us.txt to read, skipping."); return; } @@ -138,23 +143,23 @@ void ImportSpells(SharedDatabase *db) { spells_imported++; if(spells_imported % 1000 == 0) { - LogFile->write(EQEmuLog::Status, "%d spells imported.", spells_imported); + Log.Out(Logs::General, Logs::Status, "%d spells imported.", spells_imported); } } if(spells_imported % 1000 != 0) { - LogFile->write(EQEmuLog::Status, "%d spells imported.", spells_imported); + Log.Out(Logs::General, Logs::Status, "%d spells imported.", spells_imported); } fclose(f); } void ImportSkillCaps(SharedDatabase *db) { - LogFile->write(EQEmuLog::Status, "Importing Skill Caps..."); + Log.Out(Logs::General, Logs::Status, "Importing Skill Caps..."); FILE *f = fopen("import/SkillCaps.txt", "r"); if(!f) { - LogFile->write(EQEmuLog::Error, "Unable to open import/SkillCaps.txt to read, skipping."); + Log.Out(Logs::General, Logs::Error, "Unable to open import/SkillCaps.txt to read, skipping."); return; } @@ -186,11 +191,11 @@ void ImportSkillCaps(SharedDatabase *db) { } void ImportBaseData(SharedDatabase *db) { - LogFile->write(EQEmuLog::Status, "Importing Base Data..."); + Log.Out(Logs::General, Logs::Status, "Importing Base Data..."); FILE *f = fopen("import/BaseData.txt", "r"); if(!f) { - LogFile->write(EQEmuLog::Error, "Unable to open import/BaseData.txt to read, skipping."); + Log.Out(Logs::General, Logs::Error, "Unable to open import/BaseData.txt to read, skipping."); return; } diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index d547c4c88..cc5949d44 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -9,7 +9,6 @@ SET(common_sources crc32.cpp database.cpp dbcore.cpp - debug.cpp emu_opcodes.cpp emu_tcp_connection.cpp emu_tcp_server.cpp @@ -18,7 +17,7 @@ SET(common_sources eqdb_res.cpp eqemu_exception.cpp eqemu_config.cpp - eqemu_error.cpp + eqemu_logsys.cpp eq_packet.cpp eq_stream.cpp eq_stream_factory.cpp @@ -31,8 +30,6 @@ SET(common_sources guilds.cpp ipc_mutex.cpp item.cpp - logsys.cpp - logsys_eqemu.cpp md5.cpp memory_mapped_file.cpp misc.cpp @@ -106,7 +103,6 @@ SET(common_headers data_verification.h database.h dbcore.h - debug.h deity.h emu_opcodes.h emu_oplist.h @@ -120,7 +116,7 @@ SET(common_headers eqemu_exception.h eqemu_config.h eqemu_config_elements.h - eqemu_error.h + eqemu_logsys.h eq_packet.h eq_stream.h eq_stream_factory.h @@ -136,6 +132,7 @@ SET(common_headers features.h fixed_memory_hash_set.h fixed_memory_variable_hash_set.h + global_define.h guild_base.h guilds.h ipc_mutex.h @@ -144,8 +141,6 @@ SET(common_headers item_struct.h languages.h linked_list.h - logsys.h - logtypes.h loottable.h mail_oplist.h md5.h diff --git a/common/SocketLib/HTTPSocket.cpp b/common/SocketLib/HTTPSocket.cpp index ecde78403..da4f2264c 100644 --- a/common/SocketLib/HTTPSocket.cpp +++ b/common/SocketLib/HTTPSocket.cpp @@ -40,7 +40,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifdef _WIN32 #pragma warning(disable:4786) #endif -#include "../debug.h" +#include "../global_define.h" #include #include #include diff --git a/common/SocketLib/HttpdCookies.cpp b/common/SocketLib/HttpdCookies.cpp index 4d9fccb1b..a40200aab 100644 --- a/common/SocketLib/HttpdCookies.cpp +++ b/common/SocketLib/HttpdCookies.cpp @@ -26,7 +26,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "../debug.h" +#include "../global_define.h" #ifdef _WIN32 #pragma warning(disable:4786) #endif diff --git a/common/SocketLib/HttpdSocket.cpp b/common/SocketLib/HttpdSocket.cpp index bd803877a..21c2938d4 100644 --- a/common/SocketLib/HttpdSocket.cpp +++ b/common/SocketLib/HttpdSocket.cpp @@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifdef _WIN32 #pragma warning(disable:4786) #endif -#include "../debug.h" +#include "../global_define.h" #include "Utility.h" #include "HttpdCookies.h" #include "HttpdForm.h" @@ -194,7 +194,6 @@ void HttpdSocket::OnHeaderComplete() void HttpdSocket::OnData(const char *p,size_t l) { -//printf("Got %d bytes: %.*s\n", l, l, p); if (m_file) { m_file -> fwrite(p,1,l); diff --git a/common/SocketLib/MemFile.cpp b/common/SocketLib/MemFile.cpp index 7c50356f8..c621666e5 100644 --- a/common/SocketLib/MemFile.cpp +++ b/common/SocketLib/MemFile.cpp @@ -110,7 +110,6 @@ size_t MemFile::fread(char *ptr, size_t size, size_t nmemb) size_t sz = size * nmemb; if (p + sz < BLOCKSIZE) { -//printf("Read @ %d(%d). %d bytes. (%c)\n", m_read_ptr, p, sz, *(m_current_read -> data + p)); memcpy(ptr, m_current_read -> data + p, sz); m_read_ptr += sz; } @@ -142,7 +141,6 @@ size_t MemFile::fwrite(const char *ptr, size_t size, size_t nmemb) size_t sz = size * nmemb; if (p + sz < BLOCKSIZE) { -//printf("Write @ %d(%d). %d bytes.\n", m_write_ptr, p, sz); memcpy(m_current_write -> data + p, ptr, sz); m_write_ptr += sz; } diff --git a/common/StackWalker/StackWalker.cpp b/common/StackWalker/StackWalker.cpp index 6931c30f5..d457a2231 100644 --- a/common/StackWalker/StackWalker.cpp +++ b/common/StackWalker/StackWalker.cpp @@ -1128,7 +1128,6 @@ BOOL __stdcall StackWalker::myReadProcMem( SIZE_T st; BOOL bRet = ReadProcessMemory(hProcess, (LPVOID) qwBaseAddress, lpBuffer, nSize, &st); *lpNumberOfBytesRead = (DWORD) st; - //printf("ReadMemory: hProcess: %p, baseAddr: %p, buffer: %p, size: %d, read: %d, result: %d\n", hProcess, (LPVOID) qwBaseAddress, lpBuffer, nSize, (DWORD) st, (DWORD) bRet); return bRet; } else diff --git a/common/base_packet.cpp b/common/base_packet.cpp index e871ea71f..ce6afe978 100644 --- a/common/base_packet.cpp +++ b/common/base_packet.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "base_packet.h" #include "misc.h" #include "packet_dump.h" diff --git a/common/classes.cpp b/common/classes.cpp index 6270656f4..1f54c9234 100644 --- a/common/classes.cpp +++ b/common/classes.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/classes.h" const char* GetEQClassName(uint8 class_, uint8 level) { diff --git a/common/clientversions.h b/common/clientversions.h index 7ec13644e..a124ceae7 100644 --- a/common/clientversions.h +++ b/common/clientversions.h @@ -1,6 +1,8 @@ #ifndef CLIENTVERSIONS_H #define CLIENTVERSIONS_H +#include "types.h" + static const uint32 BIT_Client62 = 1; static const uint32 BIT_Titanium = 2; static const uint32 BIT_SoF = 4; diff --git a/common/condition.h b/common/condition.h index bfbffe760..9c4cd9f7b 100644 --- a/common/condition.h +++ b/common/condition.h @@ -18,7 +18,8 @@ #ifndef __CONDITION_H #define __CONDITION_H -#include "debug.h" +#include "global_define.h" +#include "mutex.h" #ifndef WIN32 #include #endif diff --git a/common/crash.cpp b/common/crash.cpp index cd7389c09..1f700f151 100644 --- a/common/crash.cpp +++ b/common/crash.cpp @@ -1,4 +1,5 @@ -#include "debug.h" +#include "global_define.h" +#include "eqemu_logsys.h" #include "crash.h" #if defined(_WINDOWS) && defined(CRASH_LOGGING) @@ -24,7 +25,7 @@ public: } } - LogFile->write(EQEmuLog::Crash, buffer); + Log.Out(Logs::General, Logs::Crash, buffer); StackWalker::OnOutput(szText); } }; @@ -34,67 +35,67 @@ LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS *ExceptionInfo) switch(ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_ACCESS_VIOLATION"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_ACCESS_VIOLATION"); break; case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_ARRAY_BOUNDS_EXCEEDED"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_ARRAY_BOUNDS_EXCEEDED"); break; case EXCEPTION_BREAKPOINT: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_BREAKPOINT"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_BREAKPOINT"); break; case EXCEPTION_DATATYPE_MISALIGNMENT: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_DATATYPE_MISALIGNMENT"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_DATATYPE_MISALIGNMENT"); break; case EXCEPTION_FLT_DENORMAL_OPERAND: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_DENORMAL_OPERAND"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_DENORMAL_OPERAND"); break; case EXCEPTION_FLT_DIVIDE_BY_ZERO: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_DIVIDE_BY_ZERO"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_DIVIDE_BY_ZERO"); break; case EXCEPTION_FLT_INEXACT_RESULT: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_INEXACT_RESULT"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_INEXACT_RESULT"); break; case EXCEPTION_FLT_INVALID_OPERATION: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_INVALID_OPERATION"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_INVALID_OPERATION"); break; case EXCEPTION_FLT_OVERFLOW: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_OVERFLOW"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_OVERFLOW"); break; case EXCEPTION_FLT_STACK_CHECK: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_STACK_CHECK"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_STACK_CHECK"); break; case EXCEPTION_FLT_UNDERFLOW: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_FLT_UNDERFLOW"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_FLT_UNDERFLOW"); break; case EXCEPTION_ILLEGAL_INSTRUCTION: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_ILLEGAL_INSTRUCTION"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_ILLEGAL_INSTRUCTION"); break; case EXCEPTION_IN_PAGE_ERROR: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_IN_PAGE_ERROR"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_IN_PAGE_ERROR"); break; case EXCEPTION_INT_DIVIDE_BY_ZERO: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_INT_DIVIDE_BY_ZERO"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_INT_DIVIDE_BY_ZERO"); break; case EXCEPTION_INT_OVERFLOW: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_INT_OVERFLOW"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_INT_OVERFLOW"); break; case EXCEPTION_INVALID_DISPOSITION: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_INVALID_DISPOSITION"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_INVALID_DISPOSITION"); break; case EXCEPTION_NONCONTINUABLE_EXCEPTION: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_NONCONTINUABLE_EXCEPTION"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_NONCONTINUABLE_EXCEPTION"); break; case EXCEPTION_PRIV_INSTRUCTION: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_PRIV_INSTRUCTION"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_PRIV_INSTRUCTION"); break; case EXCEPTION_SINGLE_STEP: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_SINGLE_STEP"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_SINGLE_STEP"); break; case EXCEPTION_STACK_OVERFLOW: - LogFile->write(EQEmuLog::Crash, "EXCEPTION_STACK_OVERFLOW"); + Log.Out(Logs::General, Logs::Crash, "EXCEPTION_STACK_OVERFLOW"); break; default: - LogFile->write(EQEmuLog::Crash, "Unknown Exception"); + Log.Out(Logs::General, Logs::Crash, "Unknown Exception"); break; } diff --git a/common/database.cpp b/common/database.cpp index 39f78cfa6..e336de437 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -1,5 +1,5 @@ /* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2003 EQEMu Development Team (http://eqemulator.net) + Copyright (C) 2001-2015 EQEMu Development Team (http://eqemulator.net) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/rulesys.h" #include @@ -58,15 +58,7 @@ extern Client client; # define _ISNAN_(a) std::isnan(a) #endif -/* -Establish a connection to a mysql database with the supplied parameters - - Added a very simple .ini file parser - Bounce - - Modify to use for win32 & linux - misanthropicfiend -*/ -Database::Database () -{ +Database::Database () { DBInitVars(); } @@ -84,12 +76,11 @@ bool Database::Connect(const char* host, const char* user, const char* passwd, c uint32 errnum= 0; char errbuf[MYSQL_ERRMSG_SIZE]; if (!Open(host, user, passwd, database, port, &errnum, errbuf)) { - LogFile->write(EQEmuLog::Error, "Failed to connect to database: Error: %s", errbuf); - + Log.Out(Logs::General, Logs::Error, "Failed to connect to database: Error: %s", errbuf); return false; } else { - LogFile->write(EQEmuLog::Status, "Using database '%s' at %s:%d",database,host,port); + Log.Out(Logs::General, Logs::Status, "Using database '%s' at %s:%d", database, host,port); return true; } } @@ -137,7 +128,6 @@ uint32 Database::CheckLogin(const char* name, const char* password, int16* oStat if (!results.Success()) { - std::cerr << "Error in CheckLogin query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -163,7 +153,6 @@ bool Database::CheckBannedIPs(const char* loginIP) if (!results.Success()) { - std::cerr << "Error in CheckBannedIPs query '" << query << "' " << results.ErrorMessage() << std::endl; return true; } @@ -177,7 +166,6 @@ bool Database::AddBannedIP(char* bannedIP, const char* notes) { std::string query = StringFormat("INSERT into Banned_IPs SET ip_address='%s', notes='%s'", bannedIP, notes); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in Database::AddBannedIP query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } return true; @@ -204,9 +192,7 @@ bool Database::AddGMIP(char* ip_address, char* name) { void Database::LoginIP(uint32 AccountID, const char* LoginIP) { std::string query = StringFormat("INSERT INTO account_ip SET accid=%i, ip='%s' ON DUPLICATE KEY UPDATE count=count+1, lastused=now()", AccountID, LoginIP); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in Log IP query '" << query << "' " << results.ErrorMessage() << std::endl; + QueryDatabase(query); } int16 Database::CheckStatus(uint32 account_id) { @@ -215,7 +201,6 @@ int16 Database::CheckStatus(uint32 account_id) { auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in CheckStatus query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -247,17 +232,15 @@ uint32 Database::CreateAccount(const char* name, const char* password, int16 sta else query = StringFormat("INSERT INTO account SET name='%s', status=%i, lsaccount_id=%i, time_creation=UNIX_TIMESTAMP();",name, status, lsaccount_id); - std::cerr << "Account Attempting to be created:" << name << " " << (int16) status << std::endl; + Log.Out(Logs::General, Logs::World_Server, "Account Attempting to be created: '%s' status: %i", name, status); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in CreateAccount query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } if (results.LastInsertedID() == 0) { - std::cerr << "Error in CreateAccount query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -266,13 +249,10 @@ uint32 Database::CreateAccount(const char* name, const char* password, int16 sta bool Database::DeleteAccount(const char* name) { std::string query = StringFormat("DELETE FROM account WHERE name='%s';",name); - std::cout << "Account Attempting to be deleted:" << name << std::endl; + Log.Out(Logs::General, Logs::World_Server, "Account Attempting to be deleted:'%s'", name); - auto results = QueryDatabase(query); - - if (!results.Success()) - { - std::cerr << "Error in DeleteAccount query '" << query << "' " << results.ErrorMessage() << std::endl; + auto results = QueryDatabase(query); + if (!results.Success()) { return false; } @@ -285,7 +265,6 @@ bool Database::SetLocalPassword(uint32 accid, const char* password) { auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetLocalPassword query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -325,11 +304,11 @@ bool Database::ReserveName(uint32 account_id, char* name) { */ bool Database::DeleteCharacter(char *name) { uint32 charid = 0; - printf("Database::DeleteCharacter name : %s \n", name); if(!name || !strlen(name)) { - std::cerr << "DeleteCharacter: request to delete without a name (empty char slot)" << std::endl; + Log.Out(Logs::General, Logs::World_Server, "DeleteCharacter: request to delete without a name (empty char slot)"); return false; } + Log.Out(Logs::General, Logs::World_Server, "Database::DeleteCharacter name : '%s'", name); /* Get id from character_data before deleting record so we can clean up the rest of the tables */ std::string query = StringFormat("SELECT `id` from `character_data` WHERE `name` = '%s'", name); @@ -706,7 +685,7 @@ bool Database::StoreCharacter(uint32 account_id, PlayerProfile_Struct* pp, Inven charid = GetCharacterID(pp->name); if(!charid) { - LogFile->write(EQEmuLog::Error, "StoreCharacter: no character id"); + Log.Out(Logs::General, Logs::Error, "StoreCharacter: no character id"); return false; } @@ -734,13 +713,6 @@ bool Database::StoreCharacter(uint32 account_id, PlayerProfile_Struct* pp, Inven charid, i, newinv->GetItem()->ID, newinv->GetCharges(), newinv->GetColor()); auto results = QueryDatabase(invquery); - - if (!results.RowsAffected()) - LogFile->write(EQEmuLog::Error, "StoreCharacter inventory failed. Query '%s' %s", invquery.c_str(), results.ErrorMessage().c_str()); -#if EQDEBUG >= 9 - else - LogFile->write(EQEmuLog::Debug, "StoreCharacter inventory succeeded. Query '%s'", invquery.c_str()); -#endif } if (i == MainCursor) { @@ -783,7 +755,6 @@ uint32 Database::GetAccountIDByChar(const char* charname, uint32* oCharID) { if (!results.Success()) { - std::cerr << "Error in GetAccountIDByChar query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -805,7 +776,6 @@ uint32 Database::GetAccountIDByChar(uint32 char_id) { std::string query = StringFormat("SELECT `account_id` FROM `character_data` WHERE `id` = %i LIMIT 1", char_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetAccountIDByChar query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -824,7 +794,6 @@ uint32 Database::GetAccountIDByName(const char* accname, int16* status, uint32* auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetAccountIDByAcc query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -853,7 +822,6 @@ void Database::GetAccountName(uint32 accountid, char* name, uint32* oLSAccountID auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetAccountName query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -874,7 +842,6 @@ void Database::GetCharName(uint32 char_id, char* name) { auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetCharName query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -1388,7 +1355,6 @@ bool Database::CheckDatabaseConvertPPDeblob(){ } /* Continue of PP Size does not match (Usually a created character never logged in) */ else { - // printf("%s ID: %i profile mismatch, not converting. PP %u - Profile Length %u \n", row2[2] ? row2[2] : "Unknown", character_id, sizeof(PlayerProfile_Struct), lengths); std::cout << (row2[2] ? row2[2] : "Unknown") << " ID: " << character_id << " size mismatch. Expected Size: " << sizeof(Convert::PlayerProfile_Struct) << " Seen: " << lengths << std::endl; continue; } @@ -1817,7 +1783,6 @@ bool Database::CheckDatabaseConvertPPDeblob(){ rquery = rquery + StringFormat(", (%u, %u, %u)", character_id, i, pp->spell_book[i]); } } - // std::cout << rquery << "\n"; if (rquery != ""){ results = QueryDatabase(rquery); } /* Run Max Memmed Spell Convert */ first_entry = 0; rquery = ""; @@ -2191,7 +2156,6 @@ bool Database::CheckDatabaseConvertCorpseDeblob(){ c_type = "Legacy"; } if (in_datasize != esize2 && in_datasize != esize1) { - // std::cout << "[Error] in Corpse Size - OLD SIZE: " << esize1 << " SOF SIZE: " << esize2 << " db_blob_datasize: " << in_datasize << std::endl; is_sof = false; c_type = "NULL"; continue; @@ -2434,7 +2398,6 @@ bool Database::LoadVariables() { if (!results.Success()) { - std::cerr << "Error in LoadVariables query '" << query << "' " << results.ErrorMessage() << std::endl; safe_delete_array(query); return false; } @@ -2546,7 +2509,6 @@ bool Database::SetVariable(const char* varname_in, const char* varvalue_in) { if (!results.Success()) { - std::cerr << "Error in SetVariable query '" << query << "' " << results.ErrorMessage() << std::endl; free(varname); free(varvalue); return false; @@ -2579,7 +2541,6 @@ uint32 Database::GetMiniLoginAccount(char* ip){ if (!results.Success()) { - std::cerr << "Error in GetMiniLoginAccount query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2596,14 +2557,7 @@ bool Database::GetSafePoints(const char* short_name, uint32 version, float* safe auto results = QueryDatabase(query); if (!results.Success()) - { - std::cerr << "Error in GetSafePoint query '" << query << "' " << results.ErrorMessage() << std::endl; - std::cerr << "If it errors, run the following querys:\n"; - std::cerr << "ALTER TABLE `zone` CHANGE `minium_level` `min_level` TINYINT(3) UNSIGNED DEFAULT \"0\" NOT NULL;\n"; - std::cerr << "ALTER TABLE `zone` CHANGE `minium_status` `min_status` TINYINT(3) UNSIGNED DEFAULT \"0\" NOT NULL;\n"; - std::cerr << "ALTER TABLE `zone` ADD flag_needed VARCHAR(128) NOT NULL DEFAULT '';\n"; return false; - } if (results.RowCount() == 0) return false; @@ -2632,7 +2586,6 @@ bool Database::GetZoneLongName(const char* short_name, char** long_name, char* f auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetZoneLongName query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2672,7 +2625,6 @@ uint32 Database::GetZoneGraveyardID(uint32 zone_id, uint32 version) { if (!results.Success()) { - std::cerr << "Error in GetZoneGraveyardID query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2689,7 +2641,6 @@ bool Database::GetZoneGraveyard(const uint32 graveyard_id, uint32* graveyard_zon auto results = QueryDatabase(query); if (!results.Success()){ - std::cerr << "Error in GetZoneGraveyard query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2719,7 +2670,6 @@ bool Database::LoadZoneNames() { if (!results.Success()) { - std::cerr << "Error in LoadZoneNames query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2762,9 +2712,7 @@ uint8 Database::GetPEQZone(uint32 zoneID, uint32 version){ std::string query = StringFormat("SELECT peqzone from zone where zoneidnumber='%i' AND (version=%i OR version=0) ORDER BY version DESC", zoneID, version); auto results = QueryDatabase(query); - if (!results.Success()) - { - std::cerr << "Error in GetPEQZone query '" << query << "' " << results.ErrorMessage() << std::endl; + if (!results.Success()) { return 0; } @@ -2835,7 +2783,6 @@ bool Database::CheckNameFilter(const char* name, bool surname) if (!results.Success()) { - std::cerr << "Error in CheckNameFilter query '" << query << "' " << results.ErrorMessage() << std::endl; // false through to true? shouldn't it be falls through to false? return true; } @@ -2861,7 +2808,6 @@ bool Database::AddToNameFilter(const char* name) { if (!results.Success()) { - std::cerr << "Error in AddToNameFilter query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2876,9 +2822,7 @@ uint32 Database::GetAccountIDFromLSID(uint32 iLSID, char* oAccountName, int16* o std::string query = StringFormat("SELECT id, name, status FROM account WHERE lsaccount_id=%i", iLSID); auto results = QueryDatabase(query); - if (!results.Success()) - { - std::cerr << "Error in GetAccountIDFromLSID query '" << query << "' " << results.ErrorMessage() << std::endl; + if (!results.Success()) { return 0; } @@ -2902,9 +2846,7 @@ void Database::GetAccountFromID(uint32 id, char* oAccountName, int16* oStatus) { std::string query = StringFormat("SELECT name, status FROM account WHERE id=%i", id); auto results = QueryDatabase(query); - if (!results.Success()) - { - std::cerr << "Error in GetAccountFromID query '" << query << "' " << results.ErrorMessage() << std::endl; + if (!results.Success()){ return; } @@ -2920,12 +2862,7 @@ void Database::GetAccountFromID(uint32 id, char* oAccountName, int16* oStatus) { } void Database::ClearMerchantTemp(){ - - std::string query("delete from merchantlist_temp"); - auto results = QueryDatabase(query); - - if (!results.Success()) - std::cerr << "Error in ClearMerchantTemp query '" << query << "' " << results.ErrorMessage() << std::endl; + QueryDatabase("DELETE FROM merchantlist_temp"); } bool Database::UpdateName(const char* oldname, const char* newname) { @@ -2947,7 +2884,6 @@ bool Database::CheckUsedName(const char* name) { std::string query = StringFormat("SELECT `id` FROM `character_data` WHERE `name` = '%s'", name); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in CheckUsedName query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2961,7 +2897,6 @@ uint8 Database::GetServerType() { std::string query("SELECT `value` FROM `variables` WHERE `varname` = 'ServerType' LIMIT 1"); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetServerType query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2980,7 +2915,6 @@ bool Database::MoveCharacterToZone(const char* charname, const char* zonename, u auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in MoveCharacterToZone(name) query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2999,7 +2933,6 @@ bool Database::MoveCharacterToZone(uint32 iCharID, const char* iZonename) { auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in MoveCharacterToZone(id) query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3011,7 +2944,6 @@ bool Database::SetHackerFlag(const char* accountname, const char* charactername, auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetHackerFlag query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3025,7 +2957,6 @@ bool Database::SetMQDetectionFlag(const char* accountname, const char* character if (!results.Success()) { - std::cerr << "Error in SetMQDetectionFlag query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3105,7 +3036,6 @@ uint32 Database::GetCharacterInfo(const char* iName, uint32* oAccID, uint32* oZo auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetCharacterInfo query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -3129,9 +3059,7 @@ bool Database::UpdateLiveChar(char* charname,uint32 lsaccount_id) { std::string query = StringFormat("UPDATE account SET charname='%s' WHERE id=%i;",charname, lsaccount_id); auto results = QueryDatabase(query); - if (!results.Success()) - { - std::cerr << "Error in UpdateLiveChar query '" << query << "' " << results.ErrorMessage() << std::endl; + if (!results.Success()){ return false; } @@ -3145,7 +3073,6 @@ bool Database::GetLiveChar(uint32 account_id, char* cname) { if (!results.Success()) { - std::cerr << "Error in GetLiveChar query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3160,30 +3087,22 @@ bool Database::GetLiveChar(uint32 account_id, char* cname) { void Database::SetLFP(uint32 CharID, bool LFP) { std::string query = StringFormat("UPDATE `character_data` SET `lfp` = %i WHERE `id` = %i",LFP, CharID); - auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error updating LFP for character %i : %s", CharID, results.ErrorMessage().c_str()); + QueryDatabase(query); } void Database::SetLoginFlags(uint32 CharID, bool LFP, bool LFG, uint8 firstlogon) { std::string query = StringFormat("update `character_data` SET `lfp` = %i, `lfg` = %i, `firstlogon` = %i WHERE `id` = %i",LFP, LFG, firstlogon, CharID); - auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error updating LFP for character %i : %s", CharID, results.ErrorMessage().c_str()); + QueryDatabase(query); } void Database::SetLFG(uint32 CharID, bool LFG) { std::string query = StringFormat("update `character_data` SET `lfg` = %i WHERE `id` = %i",LFG, CharID); - auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error updating LFP for character %i : %s", CharID, results.ErrorMessage().c_str()); + QueryDatabase(query); } void Database::SetFirstLogon(uint32 CharID, uint8 firstlogon) { std::string query = StringFormat( "UPDATE `character_data` SET `firstlogon` = %i WHERE `id` = %i",firstlogon, CharID); - auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error updating firstlogon for character %i : %s", CharID, results.ErrorMessage().c_str()); + QueryDatabase(query); } void Database::AddReport(std::string who, std::string against, std::string lines) { @@ -3191,11 +3110,8 @@ void Database::AddReport(std::string who, std::string against, std::string lines DoEscapeString(escape_str, lines.c_str(), lines.size()); std::string query = StringFormat("INSERT INTO reports (name, reported, reported_text) VALUES('%s', '%s', '%s')", who.c_str(), against.c_str(), escape_str); - auto results = QueryDatabase(query); + QueryDatabase(query); safe_delete_array(escape_str); - - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error adding a report for %s: %s", who.c_str(), results.ErrorMessage().c_str()); } void Database::SetGroupID(const char* name, uint32 id, uint32 charid, uint32 ismerc) { @@ -3206,27 +3122,20 @@ void Database::SetGroupID(const char* name, uint32 id, uint32 charid, uint32 ism auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error deleting character from group id: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error deleting character from group id: %s", results.ErrorMessage().c_str()); return; } /* Add to the Group */ query = StringFormat("REPLACE INTO `group_id` SET `charid` = %i, `groupid` = %i, `name` = '%s', `ismerc` = '%i'", charid, id, name, ismerc); - auto results = QueryDatabase(query); - - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error adding character to group id: %s", results.ErrorMessage().c_str()); + QueryDatabase(query); } void Database::ClearAllGroups(void) { - std::string query("delete from group_id"); - auto results = QueryDatabase(query); - - if (!results.Success()) - std::cout << "Unable to clear groups: " << results.ErrorMessage() << std::endl; - + std::string query("DELETE FROM `group_id`"); + QueryDatabase(query); return; } @@ -3242,27 +3151,21 @@ void Database::ClearGroup(uint32 gid) { //clear a specific group std::string query = StringFormat("delete from group_id where groupid = %lu", (unsigned long)gid); - auto results = QueryDatabase(query); - - if (!results.Success()) - std::cout << "Unable to clear groups: " << results.ErrorMessage() << std::endl; + QueryDatabase(query); } -uint32 Database::GetGroupID(const char* name){ - +uint32 Database::GetGroupID(const char* name){ std::string query = StringFormat("SELECT groupid from group_id where name='%s'", name); auto results = QueryDatabase(query); - if (!results.Success()) - { - LogFile->write(EQEmuLog::Error, "Error getting group id: %s", results.ErrorMessage().c_str()); + if (!results.Success()) { return 0; } if (results.RowCount() == 0) { // Commenting this out until logging levels can prevent this from going to console - //LogFile->write(EQEmuLog::Debug, "Character not in a group: %s", name); + //Log.Out(Logs::General, Logs::None,, "Character not in a group: %s", name); return 0; } @@ -3309,7 +3212,7 @@ void Database::SetGroupLeaderName(uint32 gid, const char* name) { result = QueryDatabase(query); if(!result.Success()) { - LogFile->write(EQEmuLog::Debug, "Error in Database::SetGroupLeaderName: %s", result.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::None, "Error in Database::SetGroupLeaderName: %s", result.ErrorMessage().c_str()); } } @@ -3488,7 +3391,7 @@ uint32 Database::GetRaidID(const char* name){ if (row == results.end()) { - std::cout << "Unable to get raid id, char not found!" << std::endl; + Log.Out(Logs::General, Logs::Error, "Unable to get raid id, char not found!"); return 0; } @@ -4049,7 +3952,6 @@ void Database::GetCharactersInInstance(uint16 instance_id, std::list &ch if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetCharactersInInstace query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -4247,7 +4149,6 @@ uint32 Database::GetGuildIDByCharID(uint32 char_id) if (!results.Success()) { - std::cerr << "Error in GetGuildIDByChar query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -4257,3 +4158,35 @@ uint32 Database::GetGuildIDByCharID(uint32 char_id) auto row = results.begin(); return atoi(row[0]); } + +void Database::LoadLogSettings(EQEmuLogSys::LogSettings* log_settings){ + std::string query = + "SELECT " + "log_category_id, " + "log_category_description, " + "log_to_console, " + "log_to_file, " + "log_to_gmsay " + "FROM " + "logsys_categories " + "ORDER BY log_category_id"; + auto results = QueryDatabase(query); + + int log_category = 0; + Log.file_logs_enabled = false; + + for (auto row = results.begin(); row != results.end(); ++row) { + log_category = atoi(row[0]); + log_settings[log_category].log_to_console = atoi(row[2]); + log_settings[log_category].log_to_file = atoi(row[3]); + log_settings[log_category].log_to_gmsay = atoi(row[4]); + + /* + This determines whether or not the process needs to actually file log anything. + If we go through this whole loop and nothing is set to any debug level, there is no point to create a file or keep anything open + */ + if (log_settings[log_category].log_to_file > 0){ + Log.file_logs_enabled = true; + } + } +} \ No newline at end of file diff --git a/common/database.h b/common/database.h index 5be342482..8bea5b83c 100644 --- a/common/database.h +++ b/common/database.h @@ -21,7 +21,8 @@ #define AUTHENTICATION_TIMEOUT 60 #define INVALID_ID 0xFFFFFFFF -#include "debug.h" +#include "global_define.h" +#include "eqemu_logsys.h" #include "types.h" #include "dbcore.h" #include "linked_list.h" @@ -644,6 +645,9 @@ public: void SetLoginFlags(uint32 CharID, bool LFP, bool LFG, uint8 firstlogon); void AddReport(std::string who, std::string against, std::string lines); + /* EQEmuLogSys */ + void LoadLogSettings(EQEmuLogSys::LogSettings* log_settings); + private: void DBInitVars(); diff --git a/common/dbcore.cpp b/common/dbcore.cpp index 7570fd01e..4f95fba3f 100644 --- a/common/dbcore.cpp +++ b/common/dbcore.cpp @@ -3,6 +3,7 @@ #endif #include "../common/misc_functions.h" +#include "../common/eqemu_logsys.h" #include "dbcore.h" @@ -101,25 +102,15 @@ MySQLRequestResult DBcore::QueryDatabase(const char* query, uint32 querylen, boo snprintf(errorBuffer, MYSQL_ERRMSG_SIZE, "#%i: %s", mysql_errno(&mysql), mysql_error(&mysql)); - std::cout << "DB Query Error #" << mysql_errno(&mysql) << ": " << mysql_error(&mysql) << std::endl; - return MySQLRequestResult(nullptr, 0, 0, 0, 0, (uint32)mysql_errno(&mysql), errorBuffer); } char *errorBuffer = new char[MYSQL_ERRMSG_SIZE]; snprintf(errorBuffer, MYSQL_ERRMSG_SIZE, "#%i: %s", mysql_errno(&mysql), mysql_error(&mysql)); -#ifdef _EQDEBUG - std::cout << "DB Query Error #" << mysql_errno(&mysql) << ": " << mysql_error(&mysql) << std::endl; -#endif - /* Implement Logging at the Root */ if (mysql_errno(&mysql) > 0 && strlen(query) > 0){ - std::cout << "\n[MYSQL ERR] " << mysql_errno(&mysql) << ": " << mysql_error(&mysql) << " [Query]: \n" << query << "\n" << std::endl; - /* Write to log file */ - std::ofstream log("eqemu_query_error_log.txt", std::ios_base::app | std::ios_base::out); - log << "[MYSQL ERR] " << mysql_error(&mysql) << "\n" << query << "\n"; - log.close(); + Log.Out(Logs::General, Logs::MySQLError, "%i: %s \n %s", mysql_errno(&mysql), mysql_error(&mysql), query); } return MySQLRequestResult(nullptr, 0, 0, 0, 0, mysql_errno(&mysql),errorBuffer); @@ -135,20 +126,7 @@ MySQLRequestResult DBcore::QueryDatabase(const char* query, uint32 querylen, boo MySQLRequestResult requestResult(res, (uint32)mysql_affected_rows(&mysql), rowCount, (uint32)mysql_field_count(&mysql), (uint32)mysql_insert_id(&mysql)); -#if DEBUG_MYSQL_QUERIES >= 1 - if (requestResult.Success()) - { - std::cout << "query successful"; - if (requestResult.Result()) - std::cout << ", " << (int) mysql_num_rows(requestResult.Result()) << " rows returned"; - - std::cout << ", " << requestResult.RowCount() << " rows affected"; - std::cout<< std::endl; - } - else { - std::cout << "QUERY: query FAILED" << std::endl; - } -#endif + Log.Out(Logs::General, Logs::MySQLQuery, "%s (%u rows returned)", query, rowCount, requestResult.RowCount()); return requestResult; } diff --git a/common/debug.cpp b/common/debug.cpp deleted file mode 100644 index ce56ebcbb..000000000 --- a/common/debug.cpp +++ /dev/null @@ -1,565 +0,0 @@ -#include -#include - -#ifdef _WINDOWS - #include - - #define snprintf _snprintf - #define vsnprintf _vsnprintf - #define strncasecmp _strnicmp - #define strcasecmp _stricmp - - #include - #include - #include - -namespace ConsoleColor { - enum Colors { - Black = 0, - Blue = 1, - Green = 2, - Cyan = 3, - Red = 4, - Magenta = 5, - Brown = 6, - LightGray = 7, - DarkGray = 8, - LightBlue = 9, - LightGreen = 10, - LightCyan = 11, - LightRed = 12, - LightMagenta = 13, - Yellow = 14, - White = 15, - }; -} - -#else - - #include - #include - -#endif - -#include "debug.h" -#include "misc_functions.h" -#include "platform.h" - -#ifndef va_copy - #define va_copy(d,s) ((d) = (s)) -#endif - -static volatile bool logFileValid = false; -static EQEmuLog realLogFile; -EQEmuLog *LogFile = &realLogFile; - -static const char* FileNames[EQEmuLog::MaxLogID] = { "logs/eqemu", "logs/eqemu", "logs/eqemu_error", "logs/eqemu_debug", "logs/eqemu_quest", "logs/eqemu_commands", "logs/crash" }; -static const char* LogNames[EQEmuLog::MaxLogID] = { "Status", "Normal", "Error", "Debug", "Quest", "Command", "Crash" }; - -EQEmuLog::EQEmuLog() -{ - for (int i = 0; i < MaxLogID; i++) { - fp[i] = 0; - logCallbackFmt[i] = nullptr; - logCallbackBuf[i] = nullptr; - logCallbackPva[i] = nullptr; - } - pLogStatus[EQEmuLog::LogIDs::Status] = LOG_LEVEL_STATUS; - pLogStatus[EQEmuLog::LogIDs::Normal] = LOG_LEVEL_NORMAL; - pLogStatus[EQEmuLog::LogIDs::Error] = LOG_LEVEL_ERROR; - pLogStatus[EQEmuLog::LogIDs::Debug] = LOG_LEVEL_DEBUG; - pLogStatus[EQEmuLog::LogIDs::Quest] = LOG_LEVEL_QUEST; - pLogStatus[EQEmuLog::LogIDs::Commands] = LOG_LEVEL_COMMANDS; - pLogStatus[EQEmuLog::LogIDs::Crash] = LOG_LEVEL_CRASH; - logFileValid = true; -} - -EQEmuLog::~EQEmuLog() -{ - logFileValid = false; - for (int i = 0; i < MaxLogID; i++) { - LockMutex lock(&MLog[i]); //to prevent termination race - if (fp[i]) { - fclose(fp[i]); - } - } -} - -bool EQEmuLog::open(LogIDs id) -{ - if (!logFileValid) { - return false; - } - if (id >= MaxLogID) { - return false; - } - LockMutex lock(&MOpen); - if (pLogStatus[id] & 4) { - return false; - } - if (fp[id]) { - //cerr<<"Warning: LogFile already open"<= MaxLogID) { - return false; - } - bool dofile = false; - if (pLogStatus[id] & 1) { - dofile = open(id); - } - if (!(dofile || pLogStatus[id] & 2)) { - return false; - } - LockMutex lock(&MLog[id]); - if (!logFileValid) { - return false; //check again for threading race reasons (to avoid two mutexes) - } - time_t aclock; - struct tm *newtime; - time( &aclock ); /* Get time in seconds */ - newtime = localtime( &aclock ); /* Convert time to struct */ - if (dofile) - #ifndef NO_PIDLOG - fprintf(fp[id], "[%02d.%02d. - %02d:%02d:%02d] ", newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec); - #else - fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] ", getpid(), newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec); - #endif - va_list argptr, tmpargptr; - va_start(argptr, fmt); - if (dofile) { - va_copy(tmpargptr, argptr); - vfprintf( fp[id], fmt, tmpargptr ); - } - if (logCallbackFmt[id]) { - msgCallbackFmt p = logCallbackFmt[id]; - va_copy(tmpargptr, argptr); - p(id, fmt, tmpargptr ); - } - if (pLogStatus[id] & 2) { - if (pLogStatus[id] & 8) { - fprintf(stderr, "[%s] ", LogNames[id]); - vfprintf( stderr, fmt, argptr ); - } - /* This is what's outputted to console */ - else { - -#ifdef _WINDOWS - HANDLE console_handle; - console_handle = GetStdHandle(STD_OUTPUT_HANDLE); - - CONSOLE_FONT_INFOEX info = { 0 }; - info.cbSize = sizeof(info); - info.dwFontSize.Y = 12; // leave X as zero - info.FontWeight = FW_NORMAL; - wcscpy(info.FaceName, L"Lucida Console"); - SetCurrentConsoleFontEx(console_handle, NULL, &info); - - if (id == EQEmuLog::LogIDs::Status){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::Yellow); } - if (id == EQEmuLog::LogIDs::Error){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightRed); } - if (id == EQEmuLog::LogIDs::Normal){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightGreen); } - if (id == EQEmuLog::LogIDs::Debug){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::Yellow); } - if (id == EQEmuLog::LogIDs::Quest){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightCyan); } - if (id == EQEmuLog::LogIDs::Commands){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightMagenta); } - if (id == EQEmuLog::LogIDs::Crash){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightRed); } -#endif - - fprintf(stdout, "[%s] ", LogNames[id]); - vfprintf( stdout, fmt, argptr ); - -#ifdef _WINDOWS - /* Always set back to white*/ - SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::White); -#endif - } - } - va_end(argptr); - if (dofile) { - fprintf(fp[id], "\n"); - } - - /* Print Lind Endings */ - if (pLogStatus[id] & 2) { - if (pLogStatus[id] & 8) { - fprintf(stderr, "\n"); - fflush(stderr); - } else { - fprintf(stdout, "\n"); - fflush(stdout); - } - } - if (dofile) { - fflush(fp[id]); - } - return true; -} - -//write with Prefix and a VA_list -bool EQEmuLog::writePVA(LogIDs id, const char *prefix, const char *fmt, va_list argptr) -{ - if (!logFileValid) { - return false; - } - if (id >= MaxLogID) { - return false; - } - bool dofile = false; - if (pLogStatus[id] & 1) { - dofile = open(id); - } - if (!(dofile || pLogStatus[id] & 2)) { - return false; - } - LockMutex lock(&MLog[id]); - if (!logFileValid) { - return false; //check again for threading race reasons (to avoid two mutexes) - } - time_t aclock; - struct tm *newtime; - time( &aclock ); /* Get time in seconds */ - newtime = localtime( &aclock ); /* Convert time to struct */ - va_list tmpargptr; - if (dofile) { - #ifndef NO_PIDLOG - fprintf(fp[id], "[%02d.%02d. - %02d:%02d:%02d] %s", newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec, prefix); - #else - fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] %s", getpid(), newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec, prefix); - #endif - va_copy(tmpargptr, argptr); - vfprintf( fp[id], fmt, tmpargptr ); - } - if (logCallbackPva[id]) { - msgCallbackPva p = logCallbackPva[id]; - va_copy(tmpargptr, argptr); - p(id, prefix, fmt, tmpargptr ); - } - if (pLogStatus[id] & 2) { - if (pLogStatus[id] & 8) { - fprintf(stderr, "[%s] %s", LogNames[id], prefix); - vfprintf( stderr, fmt, argptr ); - } - /* Console Output */ - else { - - -#ifdef _WINDOWS - HANDLE console_handle; - console_handle = GetStdHandle(STD_OUTPUT_HANDLE); - - CONSOLE_FONT_INFOEX info = { 0 }; - info.cbSize = sizeof(info); - info.dwFontSize.Y = 12; // leave X as zero - info.FontWeight = FW_NORMAL; - wcscpy(info.FaceName, L"Lucida Console"); - SetCurrentConsoleFontEx(console_handle, NULL, &info); - - if (id == EQEmuLog::LogIDs::Status){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::Yellow); } - if (id == EQEmuLog::LogIDs::Error){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightRed); } - if (id == EQEmuLog::LogIDs::Normal){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightGreen); } - if (id == EQEmuLog::LogIDs::Debug){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::Yellow); } - if (id == EQEmuLog::LogIDs::Quest){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightCyan); } - if (id == EQEmuLog::LogIDs::Commands){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightMagenta); } - if (id == EQEmuLog::LogIDs::Crash){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightRed); } -#endif - - fprintf(stdout, "[%s] %s", LogNames[id], prefix); - vfprintf(stdout, fmt, argptr); - -#ifdef _WINDOWS - /* Always set back to white*/ - SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::White); -#endif - } - } - va_end(argptr); - if (dofile) { - fprintf(fp[id], "\n"); - } - if (pLogStatus[id] & 2) { - if (pLogStatus[id] & 8) { - fprintf(stderr, "\n"); - } else { - fprintf(stdout, "\n"); - } - } - if (dofile) { - fflush(fp[id]); - } - return true; -} - -bool EQEmuLog::writebuf(LogIDs id, const char *buf, uint8 size, uint32 count) -{ - if (!logFileValid) { - return false; - } - if (id >= MaxLogID) { - return false; - } - bool dofile = false; - if (pLogStatus[id] & 1) { - dofile = open(id); - } - if (!(dofile || pLogStatus[id] & 2)) { - return false; - } - LockMutex lock(&MLog[id]); - if (!logFileValid) { - return false; //check again for threading race reasons (to avoid two mutexes) - } - time_t aclock; - struct tm *newtime; - time( &aclock ); /* Get time in seconds */ - newtime = localtime( &aclock ); /* Convert time to struct */ - if (dofile) - #ifndef NO_PIDLOG - fprintf(fp[id], "[%02d.%02d. - %02d:%02d:%02d] ", newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec); - #else - fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] ", getpid(), newtime->tm_mon + 1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec); - #endif - if (dofile) { - fwrite(buf, size, count, fp[id]); - fprintf(fp[id], "\n"); - } - if (logCallbackBuf[id]) { - msgCallbackBuf p = logCallbackBuf[id]; - p(id, buf, size, count); - } - if (pLogStatus[id] & 2) { - if (pLogStatus[id] & 8) { - fprintf(stderr, "[%s] ", LogNames[id]); - fwrite(buf, size, count, stderr); - fprintf(stderr, "\n"); - } else { -#ifdef _WINDOWS - HANDLE console_handle; - console_handle = GetStdHandle(STD_OUTPUT_HANDLE); - - CONSOLE_FONT_INFOEX info = { 0 }; - info.cbSize = sizeof(info); - info.dwFontSize.Y = 12; // leave X as zero - info.FontWeight = FW_NORMAL; - wcscpy(info.FaceName, L"Lucida Console"); - SetCurrentConsoleFontEx(console_handle, NULL, &info); - - if (id == EQEmuLog::LogIDs::Status){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::Yellow); } - if (id == EQEmuLog::LogIDs::Error){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightRed); } - if (id == EQEmuLog::LogIDs::Normal){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightGreen); } - if (id == EQEmuLog::LogIDs::Debug){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightGreen); } - if (id == EQEmuLog::LogIDs::Quest){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightCyan); } - if (id == EQEmuLog::LogIDs::Commands){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightMagenta); } - if (id == EQEmuLog::LogIDs::Crash){ SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::LightRed); } -#endif - - fprintf(stdout, "[%s] ", LogNames[id]); - fwrite(buf, size, count, stdout); - fprintf(stdout, "\n"); - -#ifdef _WINDOWS - /* Always set back to white*/ - SetConsoleTextAttribute(console_handle, ConsoleColor::Colors::White); -#endif - - - } - } - if (dofile) { - fflush(fp[id]); - } - return true; -} - -bool EQEmuLog::writeNTS(LogIDs id, bool dofile, const char *fmt, ...) -{ - va_list argptr, tmpargptr; - va_start(argptr, fmt); - if (dofile) { - va_copy(tmpargptr, argptr); - vfprintf( fp[id], fmt, tmpargptr ); - } - if (pLogStatus[id] & 2) { - if (pLogStatus[id] & 8) { - vfprintf( stderr, fmt, argptr ); - } else { - vfprintf( stdout, fmt, argptr ); - } - } - va_end(argptr); - return true; -}; - -bool EQEmuLog::Dump(LogIDs id, uint8* data, uint32 size, uint32 cols, uint32 skip) -{ - if (!logFileValid) { - #if EQDEBUG >= 10 - std::cerr << "Error: Dump() from null pointer" << std::endl; - #endif - return false; - } - if (size == 0) { - return true; - } - if (!LogFile) { - return false; - } - if (id >= MaxLogID) { - return false; - } - bool dofile = false; - if (pLogStatus[id] & 1) { - dofile = open(id); - } - if (!(dofile || pLogStatus[id] & 2)) { - return false; - } - LockMutex lock(&MLog[id]); - if (!logFileValid) { - return false; //check again for threading race reasons (to avoid two mutexes) - } - write(id, "Dumping Packet: %i", size); - // Output as HEX - int beginningOfLineOffset = 0; - uint32 indexInData; - std::string asciiOutput; - for (indexInData = skip; indexInData < size; indexInData++) { - if ((indexInData - skip) % cols == 0) { - if (indexInData != skip) { - writeNTS(id, dofile, " | %s\n", asciiOutput.c_str()); - } - writeNTS(id, dofile, "%4i: ", indexInData - skip); - asciiOutput.clear(); - beginningOfLineOffset = 0; - } else if ((indexInData - skip) % (cols / 2) == 0) { - writeNTS(id, dofile, "- "); - } - writeNTS(id, dofile, "%02X ", (unsigned char)data[indexInData]); - if (data[indexInData] >= 32 && data[indexInData] < 127) { - // According to http://msdn.microsoft.com/en-us/library/vstudio/ee404875(v=vs.100).aspx - // Visual Studio 2010 doesn't have std::to_string(int) but it does have the long long - // version. - asciiOutput.append(std::to_string((long long)data[indexInData])); - } else { - asciiOutput.append("."); - } - } - uint32 k = ((indexInData - skip) - 1) % cols; - if (k < 8) { - writeNTS(id, dofile, " "); - } - for (uint32 h = k + 1; h < cols; h++) { - writeNTS(id, dofile, " "); - } - writeNTS(id, dofile, " | %s\n", asciiOutput.c_str()); - if (dofile) { - fflush(fp[id]); - } - return true; -} - -void EQEmuLog::SetCallback(LogIDs id, msgCallbackFmt proc) -{ - if (!logFileValid) { - return; - } - if (id >= MaxLogID) { - return; - } - logCallbackFmt[id] = proc; -} - -void EQEmuLog::SetCallback(LogIDs id, msgCallbackBuf proc) -{ - if (!logFileValid) { - return; - } - if (id >= MaxLogID) { - return; - } - logCallbackBuf[id] = proc; -} - -void EQEmuLog::SetCallback(LogIDs id, msgCallbackPva proc) -{ - if (!logFileValid) { - return; - } - if (id >= MaxLogID) { - return; - } - logCallbackPva[id] = proc; -} - -void EQEmuLog::SetAllCallbacks(msgCallbackFmt proc) -{ - if (!logFileValid) { - return; - } - int r; - for (r = Status; r < MaxLogID; r++) { - SetCallback((LogIDs)r, proc); - } -} - -void EQEmuLog::SetAllCallbacks(msgCallbackBuf proc) -{ - if (!logFileValid) { - return; - } - int r; - for (r = Status; r < MaxLogID; r++) { - SetCallback((LogIDs)r, proc); - } -} - -void EQEmuLog::SetAllCallbacks(msgCallbackPva proc) -{ - if (!logFileValid) { - return; - } - int r; - for (r = Status; r < MaxLogID; r++) { - SetCallback((LogIDs)r, proc); - } -} - diff --git a/common/debug.h b/common/debug.h deleted file mode 100644 index da97fb0de..000000000 --- a/common/debug.h +++ /dev/null @@ -1,149 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -// Debug Levels -#ifndef EQDEBUG -#define EQDEBUG 1 -#else -////// File/Console options -// 0 <= Quiet mode Errors to file Status and Normal ignored -// 1 >= Status and Normal to console, Errors to file -// 2 >= Status, Normal, and Error to console and logfile -// 3 >= Lite debug -// 4 >= Medium debug -// 5 >= Debug release (Anything higher is not recommended for regular use) -// 6 == (Reserved for special builds) Login opcode debug All packets dumped -// 7 == (Reserved for special builds) Chat Opcode debug All packets dumped -// 8 == (Reserved for special builds) World opcode debug All packets dumped -// 9 == (Reserved for special builds) Zone Opcode debug All packets dumped -// 10 >= More than you ever wanted to know -// -///// -// Add more below to reserve for file's functions ect. -///// -// Any setup code based on defines should go here -// -#endif - - -#if defined(_DEBUG) && defined(WIN32) - #ifndef _CRTDBG_MAP_ALLOC - #include - #include - #endif -#endif - -#ifndef EQDEBUG_H -#define EQDEBUG_H - -#ifndef _WINDOWS - #define DebugBreak() if(0) {} -#endif - -#define _WINSOCKAPI_ //stupid windows, trying to fix the winsock2 vs. winsock issues -#if defined(WIN32) && ( defined(PACKETCOLLECTOR) || defined(COLLECTOR) ) - // Packet Collector on win32 requires winsock.h due to latest pcap.h - // winsock.h must come before windows.h - #include -#endif - -#ifdef _WINDOWS - #include - #include -#endif - -#include "logsys.h" - -#include "../common/mutex.h" -#include -#include - - -class EQEmuLog { -public: - EQEmuLog(); - ~EQEmuLog(); - - enum LogIDs { - Status = 0, /* This must stay the first entry in this list */ - Normal, /* Normal Logs */ - Error, /* Error Logs */ - Debug, /* Debug Logs */ - Quest, /* Quest Logs */ - Commands, /* Issued Comamnds */ - Crash, /* Crash Logs */ - Save, /* Client Saves */ - MaxLogID /* Max, used in functions to get the max log ID */ - }; - - //these are callbacks called for each - typedef void (* msgCallbackBuf)(LogIDs id, const char *buf, uint8 size, uint32 count); - typedef void (* msgCallbackFmt)(LogIDs id, const char *fmt, va_list ap); - typedef void (* msgCallbackPva)(LogIDs id, const char *prefix, const char *fmt, va_list ap); - - void SetAllCallbacks(msgCallbackFmt proc); - void SetAllCallbacks(msgCallbackBuf proc); - void SetAllCallbacks(msgCallbackPva proc); - void SetCallback(LogIDs id, msgCallbackFmt proc); - void SetCallback(LogIDs id, msgCallbackBuf proc); - void SetCallback(LogIDs id, msgCallbackPva proc); - - bool writebuf(LogIDs id, const char *buf, uint8 size, uint32 count); - bool write(LogIDs id, const char *fmt, ...); - bool writePVA(LogIDs id, const char *prefix, const char *fmt, va_list args); - bool Dump(LogIDs id, uint8* data, uint32 size, uint32 cols=16, uint32 skip=0); -private: - bool open(LogIDs id); - bool writeNTS(LogIDs id, bool dofile, const char *fmt, ...); // no error checking, assumes is open, no locking, no timestamp, no newline - - Mutex MOpen; - Mutex MLog[MaxLogID]; - FILE* fp[MaxLogID]; - -/* LogStatus: bitwise variable - 1 = output to file - 2 = output to stdout - 4 = fopen error, dont retry - 8 = use stderr instead (2 must be set) -*/ - uint8 pLogStatus[MaxLogID]; - - msgCallbackFmt logCallbackFmt[MaxLogID]; - msgCallbackBuf logCallbackBuf[MaxLogID]; - msgCallbackPva logCallbackPva[MaxLogID]; -}; - -extern EQEmuLog* LogFile; - -#ifdef _EQDEBUG -class PerformanceMonitor { -public: - PerformanceMonitor(int64* ip) { - p = ip; - QueryPerformanceCounter(&tmp); - } - ~PerformanceMonitor() { - LARGE_INTEGER tmp2; - QueryPerformanceCounter(&tmp2); - *p += tmp2.QuadPart - tmp.QuadPart; - } - LARGE_INTEGER tmp; - int64* p; -}; -#endif -#endif diff --git a/common/emu_opcodes.cpp b/common/emu_opcodes.cpp index 49da5e140..00f45fa25 100644 --- a/common/emu_opcodes.cpp +++ b/common/emu_opcodes.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 04111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "emu_opcodes.h" const char *OpcodeNames[_maxEmuOpcode+1] = { diff --git a/common/emu_tcp_connection.cpp b/common/emu_tcp_connection.cpp index 805b4b333..2ca55b975 100644 --- a/common/emu_tcp_connection.cpp +++ b/common/emu_tcp_connection.cpp @@ -23,7 +23,7 @@ crap into its own subclass of this object, it will clean things up tremendously. */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include diff --git a/common/emu_tcp_server.cpp b/common/emu_tcp_server.cpp index 985be6edd..4509c399f 100644 --- a/common/emu_tcp_server.cpp +++ b/common/emu_tcp_server.cpp @@ -1,4 +1,4 @@ -#include "debug.h" +#include "global_define.h" #include "emu_tcp_server.h" #include "emu_tcp_connection.h" diff --git a/common/eq_constants.h b/common/eq_constants.h index 426d4a9e5..3ff7abd6b 100644 --- a/common/eq_constants.h +++ b/common/eq_constants.h @@ -19,6 +19,7 @@ #define EQ_CONSTANTS_H #include "skills.h" +#include "types.h" /* ** Item attributes diff --git a/common/eq_packet.cpp b/common/eq_packet.cpp index 60d892c23..ffc3666cb 100644 --- a/common/eq_packet.cpp +++ b/common/eq_packet.cpp @@ -17,7 +17,7 @@ */ #include "crc16.h" -#include "debug.h" +#include "global_define.h" #include "eq_packet.h" #include "misc.h" #include "op_codes.h" diff --git a/common/eq_stream.cpp b/common/eq_stream.cpp index 3e89e2fc3..15a494471 100644 --- a/common/eq_stream.cpp +++ b/common/eq_stream.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" +#include "eqemu_logsys.h" #include "eq_packet.h" #include "eq_stream.h" #include "op_codes.h" @@ -80,19 +81,19 @@ void EQStream::init(bool resetSession) { OpMgr = nullptr; if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "init Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "init Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "init Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "init Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } } EQRawApplicationPacket *EQStream::MakeApplicationPacket(EQProtocolPacket *p) { EQRawApplicationPacket *ap=nullptr; - _log(NET__APP_CREATE, _L "Creating new application packet, length %d" __L, p->size); - _raw(NET__APP_CREATE_HEX, 0xFFFF, p); + Log.Out(Logs::Detail, Logs::Netcode, _L "Creating new application packet, length %d" __L, p->size); + // _raw(NET__APP_CREATE_HEX, 0xFFFF, p); ap = p->MakeAppPacket(); return ap; } @@ -100,8 +101,7 @@ EQRawApplicationPacket *EQStream::MakeApplicationPacket(EQProtocolPacket *p) EQRawApplicationPacket *EQStream::MakeApplicationPacket(const unsigned char *buf, uint32 len) { EQRawApplicationPacket *ap=nullptr; - _log(NET__APP_CREATE, _L "Creating new application packet, length %d" __L, len); - _hex(NET__APP_CREATE_HEX, buf, len); + Log.Out(Logs::Detail, Logs::Netcode, _L "Creating new application packet, length %d" __L, len); ap = new EQRawApplicationPacket(buf, len); return ap; } @@ -131,8 +131,8 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) } if (!Session && p->opcode!=OP_SessionRequest && p->opcode!=OP_SessionResponse) { - _log(NET__DEBUG, _L "Session not initialized, packet ignored" __L); - _raw(NET__DEBUG, 0xFFFF, p); + Log.Out(Logs::Detail, Logs::Netcode, _L "Session not initialized, packet ignored" __L); + // _raw(NET__DEBUG, 0xFFFF, p); return; } @@ -142,8 +142,8 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) while(processed < p->size) { subpacket_length=*(p->pBuffer+processed); EQProtocolPacket *subp=MakeProtocolPacket(p->pBuffer+processed+1,subpacket_length); - _log(NET__NET_CREATE, _L "Extracting combined packet of length %d" __L, subpacket_length); - _raw(NET__NET_CREATE_HEX, 0xFFFF, subp); + Log.Out(Logs::Detail, Logs::Netcode, _L "Extracting combined packet of length %d" __L, subpacket_length); + // _raw(NET__NET_CREATE_HEX, 0xFFFF, subp); subp->copyInfo(p); ProcessPacket(subp); delete subp; @@ -157,12 +157,12 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) while(processedsize) { EQRawApplicationPacket *ap=nullptr; if ((subpacket_length=(unsigned char)*(p->pBuffer+processed))!=0xff) { - _log(NET__NET_CREATE, _L "Extracting combined app packet of length %d, short len" __L, subpacket_length); + Log.Out(Logs::Detail, Logs::Netcode, _L "Extracting combined app packet of length %d, short len" __L, subpacket_length); ap=MakeApplicationPacket(p->pBuffer+processed+1,subpacket_length); processed+=subpacket_length+1; } else { subpacket_length=ntohs(*(uint16 *)(p->pBuffer+processed+1)); - _log(NET__NET_CREATE, _L "Extracting combined app packet of length %d, short len" __L, subpacket_length); + Log.Out(Logs::Detail, Logs::Netcode, _L "Extracting combined app packet of length %d, short len" __L, subpacket_length); ap=MakeApplicationPacket(p->pBuffer+processed+3,subpacket_length); processed+=subpacket_length+3; } @@ -177,29 +177,29 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_Packet: { if(!p->pBuffer || (p->Size() < 4)) { - _log(NET__ERROR, _L "Received OP_Packet that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_Packet that was of malformed size" __L); break; } uint16 seq=ntohs(*(uint16 *)(p->pBuffer)); SeqOrder check=CompareSequence(NextInSeq,seq); if (check == SeqFuture) { - _log(NET__DEBUG, _L "Future OP_Packet: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); - _raw(NET__DEBUG, seq, p); + Log.Out(Logs::Detail, Logs::Netcode, _L "Future OP_Packet: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); + // _raw(NET__DEBUG, seq, p); PacketQueue[seq]=p->Copy(); - _log(NET__APP_TRACE, _L "OP_Packet Queue size=%d" __L, PacketQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "OP_Packet Queue size=%d" __L, PacketQueue.size()); //SendOutOfOrderAck(seq); } else if (check == SeqPast) { - _log(NET__DEBUG, _L "Duplicate OP_Packet: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); - _raw(NET__DEBUG, seq, p); + Log.Out(Logs::Detail, Logs::Netcode, _L "Duplicate OP_Packet: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); + // _raw(NET__DEBUG, seq, p); SendOutOfOrderAck(seq); //we already got this packet but it was out of order } else { // In case we did queue one before as well. EQProtocolPacket *qp=RemoveQueue(seq); if (qp) { - _log(NET__NET_TRACE, "OP_Packet: Removing older queued packet with sequence %d", seq); + Log.Out(Logs::General, Logs::Netcode, "[NET_TRACE] OP_Packet: Removing older queued packet with sequence %d", seq); delete qp; } @@ -208,8 +208,8 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) // Check for an embedded OP_AppCombinded (protocol level 0x19) if (*(p->pBuffer+2)==0x00 && *(p->pBuffer+3)==0x19) { EQProtocolPacket *subp=MakeProtocolPacket(p->pBuffer+2,p->size-2); - _log(NET__NET_CREATE, _L "seq %d, Extracting combined packet of length %d" __L, seq, subp->size); - _raw(NET__NET_CREATE_HEX, seq, subp); + Log.Out(Logs::Detail, Logs::Netcode, _L "seq %d, Extracting combined packet of length %d" __L, seq, subp->size); + // _raw(NET__NET_CREATE_HEX, seq, subp); subp->copyInfo(p); ProcessPacket(subp); delete subp; @@ -227,29 +227,29 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_Fragment: { if(!p->pBuffer || (p->Size() < 4)) { - _log(NET__ERROR, _L "Received OP_Fragment that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_Fragment that was of malformed size" __L); break; } uint16 seq=ntohs(*(uint16 *)(p->pBuffer)); SeqOrder check=CompareSequence(NextInSeq,seq); if (check == SeqFuture) { - _log(NET__DEBUG, _L "Future OP_Fragment: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); - _raw(NET__DEBUG, seq, p); + Log.Out(Logs::Detail, Logs::Netcode, _L "Future OP_Fragment: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); + // _raw(NET__DEBUG, seq, p); PacketQueue[seq]=p->Copy(); - _log(NET__APP_TRACE, _L "OP_Fragment Queue size=%d" __L, PacketQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "OP_Fragment Queue size=%d" __L, PacketQueue.size()); //SendOutOfOrderAck(seq); } else if (check == SeqPast) { - _log(NET__DEBUG, _L "Duplicate OP_Fragment: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); - _raw(NET__DEBUG, seq, p); + Log.Out(Logs::Detail, Logs::Netcode, _L "Duplicate OP_Fragment: Expecting Seq=%d, but got Seq=%d" __L, NextInSeq, seq); + // _raw(NET__DEBUG, seq, p); SendOutOfOrderAck(seq); } else { // In case we did queue one before as well. EQProtocolPacket *qp=RemoveQueue(seq); if (qp) { - _log(NET__NET_TRACE, "OP_Fragment: Removing older queued packet with sequence %d", seq); + Log.Out(Logs::General, Logs::Netcode, "[NET_TRACE] OP_Fragment: Removing older queued packet with sequence %d", seq); delete qp; } SetNextAckToSend(seq); @@ -257,18 +257,18 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) if (oversize_buffer) { memcpy(oversize_buffer+oversize_offset,p->pBuffer+2,p->size-2); oversize_offset+=p->size-2; - _log(NET__NET_TRACE, _L "Fragment of oversized of length %d, seq %d: now at %d/%d" __L, p->size-2, seq, oversize_offset, oversize_length); + Log.Out(Logs::Detail, Logs::Netcode, _L "Fragment of oversized of length %d, seq %d: now at %d/%d" __L, p->size-2, seq, oversize_offset, oversize_length); if (oversize_offset==oversize_length) { if (*(p->pBuffer+2)==0x00 && *(p->pBuffer+3)==0x19) { EQProtocolPacket *subp=MakeProtocolPacket(oversize_buffer,oversize_offset); - _log(NET__NET_CREATE, _L "seq %d, Extracting combined oversize packet of length %d" __L, seq, subp->size); - //_raw(NET__NET_CREATE_HEX, subp); + Log.Out(Logs::Detail, Logs::Netcode, _L "seq %d, Extracting combined oversize packet of length %d" __L, seq, subp->size); + //// _raw(NET__NET_CREATE_HEX, subp); subp->copyInfo(p); ProcessPacket(subp); delete subp; } else { EQRawApplicationPacket *ap=MakeApplicationPacket(oversize_buffer,oversize_offset); - _log(NET__NET_CREATE, _L "seq %d, completed combined oversize packet of length %d" __L, seq, ap->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "seq %d, completed combined oversize packet of length %d" __L, seq, ap->size); if (ap) { ap->copyInfo(p); InboundQueuePush(ap); @@ -283,7 +283,7 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) oversize_buffer=new unsigned char[oversize_length]; memcpy(oversize_buffer,p->pBuffer+6,p->size-6); oversize_offset=p->size-6; - _log(NET__NET_TRACE, _L "First fragment of oversized of seq %d: now at %d/%d" __L, seq, oversize_offset, oversize_length); + Log.Out(Logs::Detail, Logs::Netcode, _L "First fragment of oversized of seq %d: now at %d/%d" __L, seq, oversize_offset, oversize_length); } } } @@ -291,14 +291,14 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_KeepAlive: { #ifndef COLLECTOR NonSequencedPush(new EQProtocolPacket(p->opcode,p->pBuffer,p->size)); - _log(NET__NET_TRACE, _L "Received and queued reply to keep alive" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received and queued reply to keep alive" __L); #endif } break; case OP_Ack: { if(!p->pBuffer || (p->Size() < 4)) { - _log(NET__ERROR, _L "Received OP_Ack that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_Ack that was of malformed size" __L); break; } #ifndef COLLECTOR @@ -314,12 +314,12 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_SessionRequest: { if(p->Size() < sizeof(SessionRequest)) { - _log(NET__ERROR, _L "Received OP_SessionRequest that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionRequest that was of malformed size" __L); break; } #ifndef COLLECTOR if (GetState()==ESTABLISHED) { - _log(NET__ERROR, _L "Received OP_SessionRequest in ESTABLISHED state (%d) streamactive (%i) attempt (%i)" __L, GetState(),streamactive,sessionAttempts); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionRequest in ESTABLISHED state (%d) streamactive (%i) attempt (%i)" __L, GetState(),streamactive,sessionAttempts); // client seems to try a max of 30 times (initial+3 retries) then gives up, giving it a few more attempts just in case // streamactive means we identified the opcode for the stream, we cannot re-establish this connection @@ -331,7 +331,6 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) } } #endif - //std::cout << "Got OP_SessionRequest" << std::endl; sessionAttempts++; // we set established below, so statistics will not be reset for session attempts/stream active. init(GetState()!=ESTABLISHED); @@ -339,7 +338,7 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) SessionRequest *Request=(SessionRequest *)p->pBuffer; Session=ntohl(Request->Session); SetMaxLen(ntohl(Request->MaxLength)); - _log(NET__NET_TRACE, _L "Received OP_SessionRequest: session %lu, maxlen %d" __L, (unsigned long)Session, MaxLen); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionRequest: session %lu, maxlen %d" __L, (unsigned long)Session, MaxLen); SetState(ESTABLISHED); #ifndef COLLECTOR Key=0x11223344; @@ -350,7 +349,7 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_SessionResponse: { if(p->Size() < sizeof(SessionResponse)) { - _log(NET__ERROR, _L "Received OP_SessionResponse that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionResponse that was of malformed size" __L); break; } @@ -366,7 +365,7 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) compressed=(Response->Format&FLAG_COMPRESSED); encoded=(Response->Format&FLAG_ENCODED); - _log(NET__NET_TRACE, _L "Received OP_SessionResponse: session %lu, maxlen %d, key %lu, compressed? %s, encoded? %s" __L, (unsigned long)Session, MaxLen, (unsigned long)Key, compressed?"yes":"no", encoded?"yes":"no"); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionResponse: session %lu, maxlen %d, key %lu, compressed? %s, encoded? %s" __L, (unsigned long)Session, MaxLen, (unsigned long)Key, compressed?"yes":"no", encoded?"yes":"no"); // Kinda kludgy, but trie for now if (StreamType==UnknownStream) { @@ -389,17 +388,17 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) EQStreamState state = GetState(); if(state == ESTABLISHED) { //client initiated disconnect? - _log(NET__NET_TRACE, _L "Received unsolicited OP_SessionDisconnect. Treating like a client-initiated disconnect." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received unsolicited OP_SessionDisconnect. Treating like a client-initiated disconnect." __L); _SendDisconnect(); SetState(CLOSED); } else if(state == CLOSING) { //we were waiting for this anyways, ignore pending messages, send the reply and be closed. - _log(NET__NET_TRACE, _L "Received OP_SessionDisconnect when we have a pending close, they beat us to it. Were happy though." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionDisconnect when we have a pending close, they beat us to it. Were happy though." __L); _SendDisconnect(); SetState(CLOSED); } else { //we are expecting this (or have already gotten it, but dont care either way) - _log(NET__NET_TRACE, _L "Received expected OP_SessionDisconnect. Moving to closed state." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received expected OP_SessionDisconnect. Moving to closed state." __L); SetState(CLOSED); } } @@ -407,7 +406,7 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_OutOfOrderAck: { if(!p->pBuffer || (p->Size() < 4)) { - _log(NET__ERROR, _L "Received OP_OutOfOrderAck that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_OutOfOrderAck that was of malformed size" __L); break; } #ifndef COLLECTOR @@ -415,15 +414,15 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) MOutboundQueue.lock(); if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Pre-OOA Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-OOA Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Pre-OOA Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-OOA Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } //if the packet they got out of order is between our last acked packet and the last sent packet, then its valid. if (CompareSequence(SequencedBase,seq) != SeqPast && CompareSequence(NextOutSeq,seq) == SeqPast) { - _log(NET__NET_TRACE, _L "Received OP_OutOfOrderAck for sequence %d, starting retransmit at the start of our unacked buffer (seq %d, was %d)." __L, + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_OutOfOrderAck for sequence %d, starting retransmit at the start of our unacked buffer (seq %d, was %d)." __L, seq, SequencedBase, SequencedBase+NextSequencedSend); bool retransmit_acked_packets = false; @@ -434,7 +433,7 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) if(!retransmit_acked_packets) { uint16 sqsize = SequencedQueue.size(); uint16 index = seq - SequencedBase; - _log(NET__NET_TRACE, _L "OP_OutOfOrderAck marking packet acked in queue (queue index = %d, queue size = %d)." __L, index, sqsize); + Log.Out(Logs::Detail, Logs::Netcode, _L "OP_OutOfOrderAck marking packet acked in queue (queue index = %d, queue size = %d)." __L, index, sqsize); if (index < sqsize) { std::deque::iterator sitr; sitr = SequencedQueue.begin(); @@ -449,15 +448,15 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) NextSequencedSend = 0; } else { - _log(NET__NET_TRACE, _L "Received OP_OutOfOrderAck for out-of-window %d. Window (%d->%d)." __L, seq, SequencedBase, NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_OutOfOrderAck for out-of-window %d. Window (%d->%d)." __L, seq, SequencedBase, NextOutSeq); } if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Post-OOA Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Post-OOA Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Post-OOA Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Post-OOA Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } MOutboundQueue.unlock(); #endif @@ -466,12 +465,12 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) case OP_SessionStatRequest: { if(p->Size() < sizeof(SessionStats)) { - _log(NET__ERROR, _L "Received OP_SessionStatRequest that was of malformed size" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionStatRequest that was of malformed size" __L); break; } #ifndef COLLECTOR SessionStats *Stats=(SessionStats *)p->pBuffer; - _log(NET__NET_TRACE, _L "Received Stats: %lu packets received, %lu packets sent, Deltas: local %lu, (%lu <- %lu -> %lu) remote %lu" __L, + Log.Out(Logs::Detail, Logs::Netcode, _L "Received Stats: %lu packets received, %lu packets sent, Deltas: local %lu, (%lu <- %lu -> %lu) remote %lu" __L, (unsigned long)ntohl(Stats->packets_received), (unsigned long)ntohl(Stats->packets_sent), (unsigned long)ntohl(Stats->last_local_delta), (unsigned long)ntohl(Stats->low_delta), (unsigned long)ntohl(Stats->average_delta), (unsigned long)ntohl(Stats->high_delta), (unsigned long)ntohl(Stats->last_remote_delta)); @@ -492,18 +491,18 @@ void EQStream::ProcessPacket(EQProtocolPacket *p) } if(retransmittimeout > RETRANSMIT_TIMEOUT_MAX) retransmittimeout = RETRANSMIT_TIMEOUT_MAX; - _log(NET__NET_TRACE, _L "Retransmit timeout recalculated to %dms" __L, retransmittimeout); + Log.Out(Logs::Detail, Logs::Netcode, _L "Retransmit timeout recalculated to %dms" __L, retransmittimeout); } } #endif } break; case OP_SessionStatResponse: { - _log(NET__NET_TRACE, _L "Received OP_SessionStatResponse. Ignoring." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_SessionStatResponse. Ignoring." __L); } break; case OP_OutOfSession: { - _log(NET__NET_TRACE, _L "Received OP_OutOfSession. Ignoring." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received OP_OutOfSession. Ignoring." __L); } break; default: @@ -534,7 +533,7 @@ void EQStream::FastQueuePacket(EQApplicationPacket **p, bool ack_req) return; if(OpMgr == nullptr || *OpMgr == nullptr) { - _log(NET__DEBUG, _L "Packet enqueued into a stream with no opcode manager, dropping." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Packet enqueued into a stream with no opcode manager, dropping." __L); delete pack; return; } @@ -561,7 +560,7 @@ void EQStream::SendPacket(uint16 opcode, EQApplicationPacket *p) // Convert the EQApplicationPacket to 1 or more EQProtocolPackets if (p->size>(MaxLen-8)) { // proto-op(2), seq(2), app-op(2) ... data ... crc(2) - _log(NET__FRAGMENT, _L "Making oversized packet, len %d" __L, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Making oversized packet, len %d" __L, p->size); unsigned char *tmpbuff=new unsigned char[p->size+3]; length=p->serialize(opcode, tmpbuff); @@ -570,7 +569,7 @@ void EQStream::SendPacket(uint16 opcode, EQApplicationPacket *p) *(uint32 *)(out->pBuffer+2)=htonl(p->Size()); used=MaxLen-10; memcpy(out->pBuffer+6,tmpbuff,used); - _log(NET__FRAGMENT, _L "First fragment: used %d/%d. Put size %d in the packet" __L, used, p->size, p->Size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "First fragment: used %d/%d. Put size %d in the packet" __L, used, p->size, p->Size()); SequencedPush(out); @@ -581,7 +580,7 @@ void EQStream::SendPacket(uint16 opcode, EQApplicationPacket *p) out->size=chunksize+2; SequencedPush(out); used+=chunksize; - _log(NET__FRAGMENT, _L "Subsequent fragment: len %d, used %d/%d." __L, chunksize, used, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Subsequent fragment: len %d, used %d/%d." __L, chunksize, used, p->size); } delete p; delete[] tmpbuff; @@ -605,22 +604,22 @@ void EQStream::SequencedPush(EQProtocolPacket *p) #else MOutboundQueue.lock(); if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Pre-Push Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-Push Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Pre-Push Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-Push Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } - _log(NET__APP_TRACE, _L "Pushing sequenced packet %d of length %d. Base Seq is %d." __L, NextOutSeq, p->size, SequencedBase); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pushing sequenced packet %d of length %d. Base Seq is %d." __L, NextOutSeq, p->size, SequencedBase); *(uint16 *)(p->pBuffer)=htons(NextOutSeq); SequencedQueue.push_back(p); NextOutSeq++; if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Push Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Push Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Push Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Push Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } MOutboundQueue.unlock(); #endif @@ -632,7 +631,7 @@ void EQStream::NonSequencedPush(EQProtocolPacket *p) delete p; #else MOutboundQueue.lock(); - _log(NET__APP_TRACE, _L "Pushing non-sequenced packet of length %d" __L, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pushing non-sequenced packet of length %d" __L, p->size); NonSequencedQueue.push(p); MOutboundQueue.unlock(); #endif @@ -641,14 +640,14 @@ void EQStream::NonSequencedPush(EQProtocolPacket *p) void EQStream::SendAck(uint16 seq) { uint16 Seq=htons(seq); - _log(NET__NET_ACKS, _L "Sending ack with sequence %d" __L, seq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Sending ack with sequence %d" __L, seq); SetLastAckSent(seq); NonSequencedPush(new EQProtocolPacket(OP_Ack,(unsigned char *)&Seq,sizeof(uint16))); } void EQStream::SendOutOfOrderAck(uint16 seq) { - _log(NET__APP_TRACE, _L "Sending out of order ack with sequence %d" __L, seq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Sending out of order ack with sequence %d" __L, seq); uint16 Seq=htons(seq); NonSequencedPush(new EQProtocolPacket(OP_OutOfOrderAck,(unsigned char *)&Seq,sizeof(uint16))); } @@ -664,7 +663,6 @@ void EQStream::Write(int eq_fd) int32 threshold=RateThreshold; MRate.unlock(); if (BytesWritten > threshold) { - //std::cout << "Over threshold: " << BytesWritten << " > " << threshold << std::endl; return; } @@ -684,7 +682,7 @@ void EQStream::Write(int eq_fd) // if we have a timeout defined and we have not received an ack recently enough, retransmit from beginning of queue if (RETRANSMIT_TIMEOUT_MULT && !SequencedQueue.empty() && NextSequencedSend && (GetState()==ESTABLISHED) && ((retransmittimer+retransmittimeout) < Timer::GetCurrentTime())) { - _log(NET__NET_TRACE, _L "Timeout since last ack received, starting retransmit at the start of our unacked " + Log.Out(Logs::Detail, Logs::Netcode, _L "Timeout since last ack received, starting retransmit at the start of our unacked " "buffer (seq %d, was %d)." __L, SequencedBase, SequencedBase+NextSequencedSend); NextSequencedSend = 0; retransmittimer = Timer::GetCurrentTime(); // don't want to endlessly retransmit the first packet @@ -705,24 +703,24 @@ void EQStream::Write(int eq_fd) // If we don't have a packet to try to combine into, use this one as the base // And remove it form the queue p = NonSequencedQueue.front(); - _log(NET__NET_COMBINE, _L "Starting combined packet with non-seq packet of len %d" __L, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Starting combined packet with non-seq packet of len %d" __L, p->size); NonSequencedQueue.pop(); } else if (!p->combine(NonSequencedQueue.front())) { // Tryint to combine this packet with the base didn't work (too big maybe) // So just send the base packet (we'll try this packet again later) - _log(NET__NET_COMBINE, _L "Combined packet full at len %d, next non-seq packet is len %d" __L, p->size, (NonSequencedQueue.front())->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Combined packet full at len %d, next non-seq packet is len %d" __L, p->size, (NonSequencedQueue.front())->size); ReadyToSend.push(p); BytesWritten+=p->size; p=nullptr; if (BytesWritten > threshold) { // Sent enough this round, lets stop to be fair - _log(NET__RATES, _L "Exceeded write threshold in nonseq (%d > %d)" __L, BytesWritten, threshold); + Log.Out(Logs::Detail, Logs::Netcode, _L "Exceeded write threshold in nonseq (%d > %d)" __L, BytesWritten, threshold); break; } } else { // Combine worked, so just remove this packet and it's spot in the queue - _log(NET__NET_COMBINE, _L "Combined non-seq packet of len %d, yeilding %d combined." __L, (NonSequencedQueue.front())->size, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Combined non-seq packet of len %d, yeilding %d combined." __L, (NonSequencedQueue.front())->size, p->size); delete NonSequencedQueue.front(); NonSequencedQueue.pop(); } @@ -733,48 +731,48 @@ void EQStream::Write(int eq_fd) if (sitr!=SequencedQueue.end()) { if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Pre-Send Seq NSS=%d Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, NextSequencedSend, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-Send Seq NSS=%d Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, NextSequencedSend, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Pre-Send Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-Send Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } uint16 seq_send = SequencedBase + NextSequencedSend; //just for logging... if(SequencedQueue.empty()) { - _log(NET__ERROR, _L "Tried to write a packet with an empty queue (%d is past next out %d)" __L, seq_send, NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Tried to write a packet with an empty queue (%d is past next out %d)" __L, seq_send, NextOutSeq); SeqEmpty=true; continue; } if(GetExecutablePlatform() == ExePlatformWorld || GetExecutablePlatform() == ExePlatformZone) { if (!RETRANSMIT_ACKED_PACKETS && (*sitr)->acked) { - _log(NET__NET_TRACE, _L "Not retransmitting seq packet %d because already marked as acked" __L, seq_send); + Log.Out(Logs::Detail, Logs::Netcode, _L "Not retransmitting seq packet %d because already marked as acked" __L, seq_send); sitr++; NextSequencedSend++; } else if (!p) { // If we don't have a packet to try to combine into, use this one as the base // Copy it first as it will still live until it is acked p=(*sitr)->Copy(); - _log(NET__NET_COMBINE, _L "Starting combined packet with seq packet %d of len %d" __L, seq_send, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Starting combined packet with seq packet %d of len %d" __L, seq_send, p->size); ++sitr; NextSequencedSend++; } else if (!p->combine(*sitr)) { // Trying to combine this packet with the base didn't work (too big maybe) // So just send the base packet (we'll try this packet again later) - _log(NET__NET_COMBINE, _L "Combined packet full at len %d, next seq packet %d is len %d" __L, p->size, seq_send, (*sitr)->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Combined packet full at len %d, next seq packet %d is len %d" __L, p->size, seq_send, (*sitr)->size); ReadyToSend.push(p); BytesWritten+=p->size; p=nullptr; if (BytesWritten > threshold) { // Sent enough this round, lets stop to be fair - _log(NET__RATES, _L "Exceeded write threshold in seq (%d > %d)" __L, BytesWritten, threshold); + Log.Out(Logs::Detail, Logs::Netcode, _L "Exceeded write threshold in seq (%d > %d)" __L, BytesWritten, threshold); break; } } else { // Combine worked - _log(NET__NET_COMBINE, _L "Combined seq packet %d of len %d, yeilding %d combined." __L, seq_send, (*sitr)->size, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Combined seq packet %d of len %d, yeilding %d combined." __L, seq_send, (*sitr)->size, p->size); ++sitr; NextSequencedSend++; } @@ -783,35 +781,35 @@ void EQStream::Write(int eq_fd) // If we don't have a packet to try to combine into, use this one as the base // Copy it first as it will still live until it is acked p=(*sitr)->Copy(); - _log(NET__NET_COMBINE, _L "Starting combined packet with seq packet %d of len %d" __L, seq_send, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Starting combined packet with seq packet %d of len %d" __L, seq_send, p->size); ++sitr; NextSequencedSend++; } else if (!p->combine(*sitr)) { // Trying to combine this packet with the base didn't work (too big maybe) // So just send the base packet (we'll try this packet again later) - _log(NET__NET_COMBINE, _L "Combined packet full at len %d, next seq packet %d is len %d" __L, p->size, seq_send, (*sitr)->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Combined packet full at len %d, next seq packet %d is len %d" __L, p->size, seq_send, (*sitr)->size); ReadyToSend.push(p); BytesWritten+=p->size; p=nullptr; if (BytesWritten > threshold) { // Sent enough this round, lets stop to be fair - _log(NET__RATES, _L "Exceeded write threshold in seq (%d > %d)" __L, BytesWritten, threshold); + Log.Out(Logs::Detail, Logs::Netcode, _L "Exceeded write threshold in seq (%d > %d)" __L, BytesWritten, threshold); break; } } else { // Combine worked - _log(NET__NET_COMBINE, _L "Combined seq packet %d of len %d, yeilding %d combined." __L, seq_send, (*sitr)->size, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Combined seq packet %d of len %d, yeilding %d combined." __L, seq_send, (*sitr)->size, p->size); ++sitr; NextSequencedSend++; } } if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Post send Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Post send Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Post send Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Post send Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } } else { // No more sequenced packets @@ -823,7 +821,7 @@ void EQStream::Write(int eq_fd) // We have a packet still, must have run out of both seq and non-seq, so send it if (p) { - _log(NET__NET_COMBINE, _L "Final combined packet not full, len %d" __L, p->size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Final combined packet not full, len %d" __L, p->size); ReadyToSend.push(p); BytesWritten+=p->size; } @@ -840,7 +838,7 @@ void EQStream::Write(int eq_fd) if(SeqEmpty && NonSeqEmpty) { //no more data to send if(CheckState(CLOSING)) { - _log(NET__DEBUG, _L "All outgoing data flushed, closing stream." __L ); + Log.Out(Logs::Detail, Logs::Netcode, _L "All outgoing data flushed, closing stream." __L ); //we are waiting for the queues to empty, now we can do our disconnect. //this packet will not actually go out until the next call to Write(). _SendDisconnect(); @@ -903,7 +901,7 @@ EQProtocolPacket *out=new EQProtocolPacket(OP_SessionResponse,nullptr,sizeof(Ses out->size=sizeof(SessionResponse); - _log(NET__NET_TRACE, _L "Sending OP_SessionResponse: session %lu, maxlen=%d, key=0x%x, compressed? %s, encoded? %s" __L, + Log.Out(Logs::Detail, Logs::Netcode, _L "Sending OP_SessionResponse: session %lu, maxlen=%d, key=0x%x, compressed? %s, encoded? %s" __L, (unsigned long)Session, MaxLen, Key, compressed?"yes":"no", encoded?"yes":"no"); NonSequencedPush(out); @@ -917,7 +915,7 @@ EQProtocolPacket *out=new EQProtocolPacket(OP_SessionRequest,nullptr,sizeof(Sess Request->Session=htonl(time(nullptr)); Request->MaxLength=htonl(512); - _log(NET__NET_TRACE, _L "Sending OP_SessionRequest: session %lu, maxlen=%d" __L, (unsigned long)ntohl(Request->Session), ntohl(Request->MaxLength)); + Log.Out(Logs::Detail, Logs::Netcode, _L "Sending OP_SessionRequest: session %lu, maxlen=%d" __L, (unsigned long)ntohl(Request->Session), ntohl(Request->MaxLength)); NonSequencedPush(out); } @@ -931,7 +929,7 @@ void EQStream::_SendDisconnect() *(uint32 *)out->pBuffer=htonl(Session); NonSequencedPush(out); - _log(NET__NET_TRACE, _L "Sending OP_SessionDisconnect: session %lu" __L, (unsigned long)Session); + Log.Out(Logs::Detail, Logs::Netcode, _L "Sending OP_SessionDisconnect: session %lu" __L, (unsigned long)Session); } void EQStream::InboundQueuePush(EQRawApplicationPacket *p) @@ -957,11 +955,10 @@ EQRawApplicationPacket *p=nullptr; if(p) { if(OpMgr != nullptr && *OpMgr != nullptr) { EmuOpcode emu_op = (*OpMgr)->EQToEmu(p->opcode); -#if EQDEBUG >= 4 - if(emu_op == OP_Unknown) { - _log(NET__ERROR, "Unable to convert EQ opcode 0x%.4x to an Application opcode.", p->opcode); + if (emu_op == OP_Unknown) { + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Unable to convert EQ opcode 0x%.4x to an Application opcode.", p->opcode); } -#endif + p->SetOpcode(emu_op); } } @@ -985,11 +982,10 @@ EQRawApplicationPacket *p=nullptr; if(p) { if(OpMgr != nullptr && *OpMgr != nullptr) { EmuOpcode emu_op = (*OpMgr)->EQToEmu(p->opcode); -#if EQDEBUG >= 4 if(emu_op == OP_Unknown) { - LogFile->write(EQEmuLog::Debug, "Unable to convert EQ opcode 0x%.4x to an Application opcode.", p->opcode); + Log.Out(Logs::General, Logs::Netcode, "Unable to convert EQ opcode 0x%.4x to an Application opcode.", p->opcode); } -#endif + p->SetOpcode(emu_op); } } @@ -1015,7 +1011,7 @@ void EQStream::InboundQueueClear() { EQApplicationPacket *p=nullptr; - _log(NET__APP_TRACE, _L "Clearing inbound queue" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Clearing inbound queue" __L); MInboundQueue.lock(); if (!InboundQueue.empty()) { @@ -1058,7 +1054,7 @@ void EQStream::OutboundQueueClear() { EQProtocolPacket *p=nullptr; - _log(NET__APP_TRACE, _L "Clearing outbound queue" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Clearing outbound queue" __L); MOutboundQueue.lock(); while(!NonSequencedQueue.empty()) { @@ -1080,7 +1076,7 @@ void EQStream::PacketQueueClear() { EQProtocolPacket *p=nullptr; - _log(NET__APP_TRACE, _L "Clearing future packet queue" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Clearing future packet queue" __L); if(!PacketQueue.empty()) { std::map::iterator itr; @@ -1112,8 +1108,7 @@ uint32 newlength=0; delete p; ProcessQueue(); } else { - _log(NET__DEBUG, _L "Incoming packet failed checksum" __L); - _hex(NET__NET_CREATE_HEX, buffer, length); + Log.Out(Logs::Detail, Logs::Netcode, _L "Incoming packet failed checksum" __L); } } @@ -1142,33 +1137,33 @@ std::deque::iterator itr, tmp; MOutboundQueue.lock(); //do a bit of sanity checking. if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Pre-Ack Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-Ack Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Pre-Ack Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Pre-Ack Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } SeqOrder ord = CompareSequence(SequencedBase, seq); if(ord == SeqInOrder) { //they are not acking anything new... - _log(NET__NET_ACKS, _L "Received an ack with no window advancement (seq %d)." __L, seq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received an ack with no window advancement (seq %d)." __L, seq); } else if(ord == SeqPast) { //they are nacking blocks going back before our buffer, wtf? - _log(NET__NET_ACKS, _L "Received an ack with backward window advancement (they gave %d, our window starts at %d). This is bad." __L, seq, SequencedBase); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received an ack with backward window advancement (they gave %d, our window starts at %d). This is bad." __L, seq, SequencedBase); } else { - _log(NET__NET_ACKS, _L "Received an ack up through sequence %d. Our base is %d." __L, seq, SequencedBase); + Log.Out(Logs::Detail, Logs::Netcode, _L "Received an ack up through sequence %d. Our base is %d." __L, seq, SequencedBase); //this is a good ack, we get to ack some blocks. seq++; //we stop at the block right after their ack, counting on the wrap of both numbers. while(SequencedBase != seq) { if(SequencedQueue.empty()) { -_log(NET__ERROR, _L "OUT OF PACKETS acked packet with sequence %lu. Next send is %d before this." __L, (unsigned long)SequencedBase, NextSequencedSend); +Log.Out(Logs::Detail, Logs::Netcode, _L "OUT OF PACKETS acked packet with sequence %lu. Next send is %d before this." __L, (unsigned long)SequencedBase, NextSequencedSend); SequencedBase = NextOutSeq; NextSequencedSend = 0; break; } - _log(NET__NET_ACKS, _L "Removing acked packet with sequence %lu. Next send is %d before this." __L, (unsigned long)SequencedBase, NextSequencedSend); + Log.Out(Logs::Detail, Logs::Netcode, _L "Removing acked packet with sequence %lu. Next send is %d before this." __L, (unsigned long)SequencedBase, NextSequencedSend); //clean out the acked packet delete SequencedQueue.front(); SequencedQueue.pop_front(); @@ -1179,10 +1174,10 @@ _log(NET__ERROR, _L "OUT OF PACKETS acked packet with sequence %lu. Next send is SequencedBase++; } if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) { - _log(NET__ERROR, _L "Post-Ack on %d Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, seq, SequencedBase, SequencedQueue.size(), NextOutSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Post-Ack on %d Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, seq, SequencedBase, SequencedQueue.size(), NextOutSeq); } if(NextSequencedSend > SequencedQueue.size()) { - _log(NET__ERROR, _L "Post-Ack Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "Post-Ack Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size()); } } @@ -1192,7 +1187,7 @@ if(NextSequencedSend > SequencedQueue.size()) { void EQStream::SetNextAckToSend(uint32 seq) { MAcks.lock(); - _log(NET__NET_ACKS, _L "Set Next Ack To Send to %lu" __L, (unsigned long)seq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Set Next Ack To Send to %lu" __L, (unsigned long)seq); NextAckToSend=seq; MAcks.unlock(); } @@ -1200,7 +1195,7 @@ void EQStream::SetNextAckToSend(uint32 seq) void EQStream::SetLastAckSent(uint32 seq) { MAcks.lock(); - _log(NET__NET_ACKS, _L "Set Last Ack Sent to %lu" __L, (unsigned long)seq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Set Last Ack Sent to %lu" __L, (unsigned long)seq); LastAckSent=seq; MAcks.unlock(); } @@ -1213,10 +1208,10 @@ void EQStream::ProcessQueue() EQProtocolPacket *qp=nullptr; while((qp=RemoveQueue(NextInSeq))!=nullptr) { - _log(NET__DEBUG, _L "Processing Queued Packet: Seq=%d" __L, NextInSeq); + Log.Out(Logs::Detail, Logs::Netcode, _L "Processing Queued Packet: Seq=%d" __L, NextInSeq); ProcessPacket(qp); delete qp; - _log(NET__APP_TRACE, _L "OP_Packet Queue size=%d" __L, PacketQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "OP_Packet Queue size=%d" __L, PacketQueue.size()); } } @@ -1227,21 +1222,21 @@ EQProtocolPacket *qp=nullptr; if ((itr=PacketQueue.find(seq))!=PacketQueue.end()) { qp=itr->second; PacketQueue.erase(itr); - _log(NET__APP_TRACE, _L "OP_Packet Queue size=%d" __L, PacketQueue.size()); + Log.Out(Logs::Detail, Logs::Netcode, _L "OP_Packet Queue size=%d" __L, PacketQueue.size()); } return qp; } void EQStream::SetStreamType(EQStreamType type) { - _log(NET__NET_TRACE, _L "Changing stream type from %s to %s" __L, StreamTypeString(StreamType), StreamTypeString(type)); + Log.Out(Logs::Detail, Logs::Netcode, _L "Changing stream type from %s to %s" __L, StreamTypeString(StreamType), StreamTypeString(type)); StreamType=type; switch (StreamType) { case LoginStream: app_opcode_size=1; compressed=false; encoded=false; - _log(NET__NET_TRACE, _L "Login stream has app opcode size %d, is not compressed or encoded." __L, app_opcode_size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Login stream has app opcode size %d, is not compressed or encoded." __L, app_opcode_size); break; case ChatOrMailStream: case ChatStream: @@ -1249,7 +1244,7 @@ void EQStream::SetStreamType(EQStreamType type) app_opcode_size=1; compressed=false; encoded=true; - _log(NET__NET_TRACE, _L "Chat/Mail stream has app opcode size %d, is not compressed, and is encoded." __L, app_opcode_size); + Log.Out(Logs::Detail, Logs::Netcode, _L "Chat/Mail stream has app opcode size %d, is not compressed, and is encoded." __L, app_opcode_size); break; case ZoneStream: case WorldStream: @@ -1257,7 +1252,7 @@ void EQStream::SetStreamType(EQStreamType type) app_opcode_size=2; compressed=true; encoded=false; - _log(NET__NET_TRACE, _L "World/Zone stream has app opcode size %d, is compressed, and is not encoded." __L, app_opcode_size); + Log.Out(Logs::Detail, Logs::Netcode, _L "World/Zone stream has app opcode size %d, is compressed, and is not encoded." __L, app_opcode_size); break; } } @@ -1307,7 +1302,7 @@ EQStream::SeqOrder EQStream::CompareSequence(uint16 expected_seq , uint16 seq) void EQStream::SetState(EQStreamState state) { MState.lock(); - _log(NET__NET_TRACE, _L "Changing state from %d to %d" __L, State, state); + Log.Out(Logs::Detail, Logs::Netcode, _L "Changing state from %d to %d" __L, State, state); State=state; MState.unlock(); } @@ -1319,29 +1314,29 @@ void EQStream::CheckTimeout(uint32 now, uint32 timeout) { EQStreamState orig_state = GetState(); if (orig_state == CLOSING && !outgoing_data) { - _log(NET__NET_TRACE, _L "Out of data in closing state, disconnecting." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Out of data in closing state, disconnecting." __L); _SendDisconnect(); SetState(DISCONNECTING); } else if (LastPacket && (now-LastPacket) > timeout) { switch(orig_state) { case CLOSING: //if we time out in the closing state, they are not acking us, just give up - _log(NET__DEBUG, _L "Timeout expired in closing state. Moving to closed state." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Timeout expired in closing state. Moving to closed state." __L); _SendDisconnect(); SetState(CLOSED); break; case DISCONNECTING: //we timed out waiting for them to send us the disconnect reply, just give up. - _log(NET__DEBUG, _L "Timeout expired in disconnecting state. Moving to closed state." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Timeout expired in disconnecting state. Moving to closed state." __L); SetState(CLOSED); break; case CLOSED: - _log(NET__DEBUG, _L "Timeout expired in closed state??" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Timeout expired in closed state??" __L); break; case ESTABLISHED: //we timed out during normal operation. Try to be nice about it. //we will almost certainly time out again waiting for the disconnect reply, but oh well. - _log(NET__DEBUG, _L "Timeout expired in established state. Closing connection." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Timeout expired in established state. Closing connection." __L); _SendDisconnect(); SetState(DISCONNECTING); break; @@ -1370,11 +1365,11 @@ void EQStream::AdjustRates(uint32 average_delta) MRate.lock(); RateThreshold=RATEBASE/average_delta; DecayRate=DECAYBASE/average_delta; - _log(NET__RATES, _L "Adjusting data rate to thresh %d, decay %d based on avg delta %d" __L, + Log.Out(Logs::Detail, Logs::Netcode, _L "Adjusting data rate to thresh %d, decay %d based on avg delta %d" __L, RateThreshold, DecayRate, average_delta); MRate.unlock(); } else { - _log(NET__RATES, _L "Not adjusting data rate because avg delta over max (%d > %d)" __L, + Log.Out(Logs::Detail, Logs::Netcode, _L "Not adjusting data rate because avg delta over max (%d > %d)" __L, average_delta, AVERAGE_DELTA_MAX); } } else { @@ -1382,7 +1377,7 @@ void EQStream::AdjustRates(uint32 average_delta) MRate.lock(); RateThreshold=RATEBASE/average_delta; DecayRate=DECAYBASE/average_delta; - _log(NET__RATES, _L "Adjusting data rate to thresh %d, decay %d based on avg delta %d" __L, + Log.Out(Logs::Detail, Logs::Netcode, _L "Adjusting data rate to thresh %d, decay %d based on avg delta %d" __L, RateThreshold, DecayRate, average_delta); MRate.unlock(); } @@ -1392,12 +1387,12 @@ void EQStream::AdjustRates(uint32 average_delta) void EQStream::Close() { if(HasOutgoingData()) { //there is pending data, wait for it to go out. - _log(NET__DEBUG, _L "Stream requested to Close(), but there is pending data, waiting for it." __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Stream requested to Close(), but there is pending data, waiting for it." __L); SetState(CLOSING); } else { //otherwise, we are done, we can drop immediately. _SendDisconnect(); - _log(NET__DEBUG, _L "Stream closing immediate due to Close()" __L); + Log.Out(Logs::Detail, Logs::Netcode, _L "Stream closing immediate due to Close()" __L); SetState(DISCONNECTING); } } @@ -1425,19 +1420,19 @@ EQStream::MatchState EQStream::CheckSignature(const Signature *sig) { } else if(p->opcode == sig->first_eq_opcode) { //opcode matches, check length.. if(p->size == sig->first_length) { - _log(NET__IDENT_TRACE, "%s:%d: First opcode matched 0x%x and length matched %d", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), sig->first_eq_opcode, p->size); + Log.Out(Logs::General, Logs::Netcode, "[IDENT_TRACE] %s:%d: First opcode matched 0x%x and length matched %d", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), sig->first_eq_opcode, p->size); res = MatchSuccessful; } else if(sig->first_length == 0) { - _log(NET__IDENT_TRACE, "%s:%d: First opcode matched 0x%x and length (%d) is ignored", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), sig->first_eq_opcode, p->size); + Log.Out(Logs::General, Logs::Netcode, "[IDENT_TRACE] %s:%d: First opcode matched 0x%x and length (%d) is ignored", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), sig->first_eq_opcode, p->size); res = MatchSuccessful; } else { //opcode matched but length did not. - _log(NET__IDENT_TRACE, "%s:%d: First opcode matched 0x%x, but length %d did not match expected %d", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), sig->first_eq_opcode, p->size, sig->first_length); + Log.Out(Logs::General, Logs::Netcode, "[IDENT_TRACE] %s:%d: First opcode matched 0x%x, but length %d did not match expected %d", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), sig->first_eq_opcode, p->size, sig->first_length); res = MatchFailed; } } else { //first opcode did not match.. - _log(NET__IDENT_TRACE, "%s:%d: First opcode 0x%x did not match expected 0x%x", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), p->opcode, sig->first_eq_opcode); + Log.Out(Logs::General, Logs::Netcode, "[IDENT_TRACE] %s:%d: First opcode 0x%x did not match expected 0x%x", long2ip(GetRemoteIP()).c_str(), ntohs(GetRemotePort()), p->opcode, sig->first_eq_opcode); res = MatchFailed; } } diff --git a/common/eq_stream_factory.cpp b/common/eq_stream_factory.cpp index 0b940c18f..7563c9b57 100644 --- a/common/eq_stream_factory.cpp +++ b/common/eq_stream_factory.cpp @@ -1,4 +1,5 @@ -#include "debug.h" +#include "global_define.h" +#include "eqemu_logsys.h" #include "eq_stream_factory.h" #ifdef _WINDOWS @@ -25,13 +26,13 @@ ThreadReturnType EQStreamFactoryReaderLoop(void *eqfs) EQStreamFactory *fs=(EQStreamFactory *)eqfs; #ifndef WIN32 - _log(COMMON__THREADS, "Starting EQStreamFactoryReaderLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Starting EQStreamFactoryReaderLoop with thread ID %d", pthread_self()); #endif fs->ReaderLoop(); #ifndef WIN32 - _log(COMMON__THREADS, "Ending EQStreamFactoryReaderLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Ending EQStreamFactoryReaderLoop with thread ID %d", pthread_self()); #endif THREAD_RETURN(nullptr); @@ -42,13 +43,13 @@ ThreadReturnType EQStreamFactoryWriterLoop(void *eqfs) EQStreamFactory *fs=(EQStreamFactory *)eqfs; #ifndef WIN32 - _log(COMMON__THREADS, "Starting EQStreamFactoryWriterLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Starting EQStreamFactoryWriterLoop with thread ID %d", pthread_self()); #endif fs->WriterLoop(); #ifndef WIN32 - _log(COMMON__THREADS, "Ending EQStreamFactoryWriterLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Ending EQStreamFactoryWriterLoop with thread ID %d", pthread_self()); #endif THREAD_RETURN(nullptr); @@ -105,8 +106,6 @@ struct sockaddr_in address; fcntl(sock, F_SETFL, O_NONBLOCK); #endif //moved these because on windows the output was delayed and causing the console window to look bad - //std::cout << "Starting factory Reader" << std::endl; - //std::cout << "Starting factory Writer" << std::endl; #ifdef _WINDOWS _beginthread(EQStreamFactoryReaderLoop,0, this); _beginthread(EQStreamFactoryWriterLoop,0, this); @@ -120,7 +119,6 @@ struct sockaddr_in address; EQStream *EQStreamFactory::Pop() { EQStream *s=nullptr; - //std::cout << "Pop():Locking MNewStreams" << std::endl; MNewStreams.lock(); if (NewStreams.size()) { s=NewStreams.front(); @@ -128,18 +126,15 @@ EQStream *s=nullptr; s->PutInUse(); } MNewStreams.unlock(); - //std::cout << "Pop(): Unlocking MNewStreams" << std::endl; return s; } void EQStreamFactory::Push(EQStream *s) { - //std::cout << "Push():Locking MNewStreams" << std::endl; MNewStreams.lock(); NewStreams.push(s); MNewStreams.unlock(); - //std::cout << "Push(): Unlocking MNewStreams" << std::endl; } void EQStreamFactory::ReaderLoop() @@ -240,7 +235,6 @@ void EQStreamFactory::CheckTimeout() //give it a little time for everybody to finish with it } else { //everybody is done, we can delete it now - //std::cout << "Removing connection" << std::endl; std::map,EQStream *>::iterator temp=stream_itr; ++stream_itr; //let whoever has the stream outside delete it @@ -318,9 +312,7 @@ Timer DecayTimer(20); stream_count=Streams.size(); MStreams.unlock(); if (!stream_count) { - //std::cout << "No streams, waiting on condition" << std::endl; WriterWork.Wait(); - //std::cout << "Awake from condition, must have a stream now" << std::endl; } } } diff --git a/common/eq_stream_ident.cpp b/common/eq_stream_ident.cpp index 97fdd2c48..6fef4275e 100644 --- a/common/eq_stream_ident.cpp +++ b/common/eq_stream_ident.cpp @@ -1,7 +1,8 @@ -#include "debug.h" +#include "global_define.h" +#include "eqemu_logsys.h" #include "eq_stream_ident.h" #include "eq_stream_proxy.h" -#include "logsys.h" + EQStreamIdentifier::~EQStreamIdentifier() { while(!m_identified.empty()) { @@ -45,7 +46,7 @@ void EQStreamIdentifier::Process() { //first see if this stream has expired if(r->expire.Check(false)) { //this stream has failed to match any pattern in our timeframe. - _log(NET__IDENTIFY, "Unable to identify stream from %s:%d before timeout.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort())); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Unable to identify stream from %s:%d before timeout.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort())); r->stream->ReleaseFromUse(); delete r; cur = m_streams.erase(cur); @@ -61,23 +62,23 @@ void EQStreamIdentifier::Process() { } if(r->stream->GetState() != ESTABLISHED) { //the stream closed before it was identified. - _log(NET__IDENTIFY, "Unable to identify stream from %s:%d before it closed.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort())); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Unable to identify stream from %s:%d before it closed.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort())); switch(r->stream->GetState()) { case ESTABLISHED: - _log(NET__IDENTIFY, "Stream state was Established"); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Stream state was Established"); break; case CLOSING: - _log(NET__IDENTIFY, "Stream state was Closing"); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Stream state was Closing"); break; case DISCONNECTING: - _log(NET__IDENTIFY, "Stream state was Disconnecting"); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Stream state was Disconnecting"); break; case CLOSED: - _log(NET__IDENTIFY, "Stream state was Closed"); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Stream state was Closed"); break; default: - _log(NET__IDENTIFY, "Stream state was Unestablished or unknown"); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Stream state was Unestablished or unknown"); break; } r->stream->ReleaseFromUse(); @@ -102,13 +103,13 @@ void EQStreamIdentifier::Process() { switch(res) { case EQStream::MatchNotReady: //the stream has not received enough packets to compare with this signature -// _log(NET__IDENT_TRACE, "%s:%d: Tried patch %s, but stream is not ready for it.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort()), p->name.c_str()); +// Log.LogDebugType(Logs::General, Logs::Netcode, "[IDENT_TRACE] %s:%d: Tried patch %s, but stream is not ready for it.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort()), p->name.c_str()); all_ready = false; break; case EQStream::MatchSuccessful: { //yay, a match. - _log(NET__IDENTIFY, "Identified stream %s:%d with signature %s", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort()), p->name.c_str()); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Identified stream %s:%d with signature %s", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort()), p->name.c_str()); // before we assign the eqstream to an interface, let the stream recognize it is in use and the session should not be reset any further r->stream->SetActive(true); @@ -122,7 +123,7 @@ void EQStreamIdentifier::Process() { } case EQStream::MatchFailed: //do nothing... - _log(NET__IDENT_TRACE, "%s:%d: Tried patch %s, and it did not match.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort()), p->name.c_str()); + Log.Out(Logs::General, Logs::Netcode, "[IDENT_TRACE] %s:%d: Tried patch %s, and it did not match.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort()), p->name.c_str()); break; } } @@ -130,7 +131,7 @@ void EQStreamIdentifier::Process() { //if we checked all patches and did not find a match. if(all_ready && !found_one) { //the stream cannot be identified. - _log(NET__IDENTIFY, "Unable to identify stream from %s:%d, no match found.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort())); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Unable to identify stream from %s:%d, no match found.", long2ip(r->stream->GetRemoteIP()).c_str(), ntohs(r->stream->GetRemotePort())); r->stream->ReleaseFromUse(); } diff --git a/common/eq_stream_proxy.cpp b/common/eq_stream_proxy.cpp index 802afe7f2..968f06d84 100644 --- a/common/eq_stream_proxy.cpp +++ b/common/eq_stream_proxy.cpp @@ -1,5 +1,5 @@ -#include "debug.h" +#include "global_define.h" #include "eq_stream_proxy.h" #include "eq_stream.h" #include "struct_strategy.h" diff --git a/common/eqdb.cpp b/common/eqdb.cpp index 03746b0d4..2c912afba 100644 --- a/common/eqdb.cpp +++ b/common/eqdb.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "eqdb.h" #include "database.h" #include diff --git a/common/eqdb_res.cpp b/common/eqdb_res.cpp index f34229a1f..11d90459d 100644 --- a/common/eqdb_res.cpp +++ b/common/eqdb_res.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "eqdb_res.h" #include diff --git a/common/eqemu_config.cpp b/common/eqemu_config.cpp index 2fe10ee9d..6e1400904 100644 --- a/common/eqemu_config.cpp +++ b/common/eqemu_config.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqemu_config.h" #include "misc_functions.h" @@ -254,10 +254,6 @@ void EQEmuConfig::do_files(TiXmlElement *ele) if (text) { OpCodesFile = text; } - text = ParseTextBlock(ele, "logsettings", true); - if (text) { - LogSettingsFile = text; - } text = ParseTextBlock(ele, "eqtime", true); if (text) { EQTimeFile = text; @@ -415,9 +411,6 @@ std::string EQEmuConfig::GetByName(const std::string &var_name) const if (var_name == "EQTimeFile") { return (EQTimeFile); } - if (var_name == "LogSettingsFile") { - return (LogSettingsFile); - } if (var_name == "MapDir") { return (MapDir); } @@ -483,7 +476,6 @@ void EQEmuConfig::Dump() const std::cout << "SpellsFile = " << SpellsFile << std::endl; std::cout << "OpCodesFile = " << OpCodesFile << std::endl; std::cout << "EQTimeFile = " << EQTimeFile << std::endl; - std::cout << "LogSettingsFile = " << LogSettingsFile << std::endl; std::cout << "MapDir = " << MapDir << std::endl; std::cout << "QuestDir = " << QuestDir << std::endl; std::cout << "PluginDir = " << PluginDir << std::endl; diff --git a/common/eqemu_config.h b/common/eqemu_config.h index 908d66aa1..1ad2174dc 100644 --- a/common/eqemu_config.h +++ b/common/eqemu_config.h @@ -80,7 +80,6 @@ class EQEmuConfig : public XMLParser std::string SpellsFile; std::string OpCodesFile; std::string EQTimeFile; - std::string LogSettingsFile; // From std::string MapDir; @@ -156,7 +155,6 @@ class EQEmuConfig : public XMLParser SpellsFile = "spells_us.txt"; OpCodesFile = "opcodes.conf"; EQTimeFile = "eqtime.cfg"; - LogSettingsFile = "log.ini"; // Dirs MapDir = "Maps"; QuestDir = "quests"; diff --git a/common/eqemu_error.cpp b/common/eqemu_error.cpp deleted file mode 100644 index ff9a7bbd6..000000000 --- a/common/eqemu_error.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ -#ifdef _WINDOWS -#include -#endif -#include "eqemu_error.h" -#include "linked_list.h" -#include "mutex.h" -#include "misc_functions.h" -#include -#include -#ifdef _WINDOWS - #include -#endif - -void UpdateWindowTitle(char* iNewTitle = 0); -void CatchSignal(int sig_num); - -const char* EQEMuErrorText[EQEMuError_MaxErrorID] = { "ErrorID# 0, No Error", - "MySQL Error #1405 or #2001 means your mysql server rejected the username and password you presented it.", - "MySQL Error #2003 means you were unable to connect to the mysql server.", - "MySQL Error #2005 means you there are too many connections on the mysql server. The server is overloaded.", - "MySQL Error #2007 means you the server is out of memory. The server is overloaded.", - }; - -LinkedList* EQEMuErrorList; -Mutex* MEQEMuErrorList; -AutoDelete< LinkedList > ADEQEMuErrorList(&EQEMuErrorList); -AutoDelete ADMEQEMuErrorList(&MEQEMuErrorList); - -const char* GetErrorText(uint32 iError) { - if (iError >= EQEMuError_MaxErrorID) - return "ErrorID# out of range"; - else - return EQEMuErrorText[iError]; -} - -void AddEQEMuError(eEQEMuError iError, bool iExitNow) { - if (!iError) - return; - if (!EQEMuErrorList) { - EQEMuErrorList = new LinkedList; - MEQEMuErrorList = new Mutex; - } - LockMutex lock(MEQEMuErrorList); - - LinkedListIterator iterator(*EQEMuErrorList); - iterator.Reset(); - while (iterator.MoreElements()) { - if (iterator.GetData()[0] == 1) { -//Umm... this gets a big WTF... -// if (*((uint32*) iterator.GetData()[1]) == iError) -//not sure whats going on, using a character as a pointer.... - if (*((eEQEMuError*) &(iterator.GetData()[1])) == iError) - return; - } - iterator.Advance(); - } - - char* tmp = new char[6]; - tmp[0] = 1; - tmp[5] = 0; - *((uint32*) &tmp[1]) = iError; - EQEMuErrorList->Append(tmp); - - if (iExitNow) - CatchSignal(2); -} - -void AddEQEMuError(char* iError, bool iExitNow) { - if (!iError) - return; - if (!EQEMuErrorList) { - EQEMuErrorList = new LinkedList; - MEQEMuErrorList = new Mutex; - } - LockMutex lock(MEQEMuErrorList); - char* tmp = strcpy(new char[strlen(iError) + 1], iError); - EQEMuErrorList->Append(tmp); - - if (iExitNow) - CatchSignal(2); -} - -uint32 CheckEQEMuError() { - if (!EQEMuErrorList) - return 0; - uint32 ret = 0; - char* tmp = 0; - bool HeaderPrinted = false; - LockMutex lock(MEQEMuErrorList); - - while ((tmp = EQEMuErrorList->Pop() )) { - if (!HeaderPrinted) { - fprintf(stdout, "===============================\nRuntime errors:\n\n"); - HeaderPrinted = true; - } - if (tmp[0] == 1) { - fprintf(stdout, "%s\n", GetErrorText(*((uint32*) &tmp[1]))); - fprintf(stdout, "For more information on this error, visit http://www.eqemu.net/eqemuerror.php?id=%u\n\n", *((uint32*) &tmp[1])); - } - else { - fprintf(stdout, "%s\n\n", tmp); - } - safe_delete(tmp); - ret++; - } - return ret; -} - -void CheckEQEMuErrorAndPause() { -#ifdef _WINDOWS - if (CheckEQEMuError()) { - fprintf(stdout, "Hit any key to exit\n"); - UpdateWindowTitle("Error"); - getch(); - } -#endif -} - diff --git a/common/eqemu_logsys.cpp b/common/eqemu_logsys.cpp new file mode 100644 index 000000000..2613cbe5b --- /dev/null +++ b/common/eqemu_logsys.cpp @@ -0,0 +1,340 @@ +/* EQEMu: Everquest Server Emulator + Copyright (C) 2001-2015 EQEMu Development Team (http://eqemulator.net) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY except by those people which sell it, which + are required to give you total support for your newly bought product; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + + +#include "eqemu_logsys.h" +#include "platform.h" +#include "string_util.h" +#include "database.h" +#include "misc.h" + +#include +#include +#include +#include +#include + +std::ofstream process_log; + +#ifdef _WINDOWS + #include + #include + #include + #include + #include + #include +#else + #include + #include +#endif + +/* Linux ANSI console color defines */ +#define LC_RESET "\033[0m" +#define LC_BLACK "\033[30m" /* Black */ +#define LC_RED "\033[31m" /* Red */ +#define LC_GREEN "\033[32m" /* Green */ +#define LC_YELLOW "\033[33m" /* Yellow */ +#define LC_BLUE "\033[34m" /* Blue */ +#define LC_MAGENTA "\033[35m" /* Magenta */ +#define LC_CYAN "\033[36m" /* Cyan */ +#define LC_WHITE "\033[37m" /* White */ + +namespace Console { + enum Color { + Black = 0, + Blue = 1, + Green = 2, + Cyan = 3, + Red = 4, + Magenta = 5, + Brown = 6, + LightGray = 7, + DarkGray = 8, + LightBlue = 9, + LightGreen = 10, + LightCyan = 11, + LightRed = 12, + LightMagenta = 13, + Yellow = 14, + White = 15, + }; +} + +EQEmuLogSys::EQEmuLogSys(){ + on_log_gmsay_hook = [](uint16 log_type, std::string&) {}; +} + +EQEmuLogSys::~EQEmuLogSys(){ +} + +void EQEmuLogSys::LoadLogSettingsDefaults() +{ + /* Get Executable platform currently running this code (Zone/World/etc) */ + log_platform = GetExecutablePlatformInt(); + + /* Zero out Array */ + for (int i = 0; i < Logs::LogCategory::MaxCategoryID; i++){ + log_settings[i].log_to_console = 0; + log_settings[i].log_to_file = 0; + log_settings[i].log_to_gmsay = 0; + } + + /* Set Defaults */ + log_settings[Logs::World_Server].log_to_console = Logs::General; + log_settings[Logs::Zone_Server].log_to_console = Logs::General; + log_settings[Logs::QS_Server].log_to_console = Logs::General; + log_settings[Logs::UCS_Server].log_to_console = Logs::General; + log_settings[Logs::Crash].log_to_console = Logs::General; + log_settings[Logs::MySQLError].log_to_console = Logs::General; + + /* Declare process file names for log writing + If there is no process_file_name declared, no log file will be written, simply + */ + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformWorld){ + platform_file_name = "world"; + } + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformQueryServ){ + platform_file_name = "query_server"; + } + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformZone){ + platform_file_name = "zone"; + } + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformUCS){ + platform_file_name = "ucs"; + } + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformLogin){ + platform_file_name = "login"; + } + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformLogin){ + platform_file_name = "launcher"; + } +} + +std::string EQEmuLogSys::FormatOutMessageString(uint16 log_category, std::string in_message){ + std::string category_string = ""; + if (log_category > 0 && Logs::LogCategoryName[log_category]){ + category_string = StringFormat("[%s] ", Logs::LogCategoryName[log_category]); + } + return StringFormat("%s%s", category_string.c_str(), in_message.c_str()); +} + +void EQEmuLogSys::ProcessGMSay(uint16 debug_level, uint16 log_category, std::string message) +{ + /* Check if category enabled for process */ + if (log_settings[log_category].log_to_gmsay == 0) + return; + + /* Enabling Netcode based GMSay output creates a feedback loop that ultimately ends in a crash */ + if (log_category == Logs::LogCategory::Netcode) + return; + + /* Make sure the message inbound is at a debug level we're set at */ + if (log_settings[log_category].log_to_gmsay < debug_level) + return; + + /* Check to see if the process that actually ran this is zone */ + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformZone){ + on_log_gmsay_hook(log_category, message); + } +} + +void EQEmuLogSys::ProcessLogWrite(uint16 debug_level, uint16 log_category, std::string message) +{ + if (log_category == Logs::Crash){ + char time_stamp[80]; + EQEmuLogSys::SetCurrentTimeStamp(time_stamp); + std::ofstream crash_log; + crash_log.open(StringFormat("logs/crash_%s_%i.txt", platform_file_name.c_str(), getpid()), std::ios_base::app | std::ios_base::out); + crash_log << time_stamp << " " << message << "\n"; + crash_log.close(); + } + + /* Check if category enabled for process */ + if (log_settings[log_category].log_to_file == 0) + return; + + /* Make sure the message inbound is at a debug level we're set at */ + if (log_settings[log_category].log_to_file < debug_level) + return; + + char time_stamp[80]; + EQEmuLogSys::SetCurrentTimeStamp(time_stamp); + + if (process_log){ + process_log << time_stamp << " " << message << std::endl; + } +} + +uint16 EQEmuLogSys::GetWindowsConsoleColorFromCategory(uint16 log_category){ + switch (log_category) { + case Logs::Status: + case Logs::Normal: + return Console::Color::Yellow; + case Logs::MySQLError: + case Logs::Error: + return Console::Color::LightRed; + case Logs::MySQLQuery: + case Logs::Debug: + return Console::Color::LightGreen; + case Logs::Quests: + return Console::Color::LightCyan; + case Logs::Commands: + return Console::Color::LightMagenta; + case Logs::Crash: + return Console::Color::LightRed; + default: + return Console::Color::Yellow; + } +} + +std::string EQEmuLogSys::GetLinuxConsoleColorFromCategory(uint16 log_category){ + switch (log_category) { + case Logs::Status: + case Logs::Normal: + return LC_YELLOW; + case Logs::MySQLError: + case Logs::Error: + return LC_RED; + case Logs::MySQLQuery: + case Logs::Debug: + return LC_GREEN; + case Logs::Quests: + return LC_CYAN; + case Logs::Commands: + return LC_MAGENTA; + case Logs::Crash: + return LC_RED; + default: + return LC_YELLOW; + } +} + +uint16 EQEmuLogSys::GetGMSayColorFromCategory(uint16 log_category){ + switch (log_category) { + case Logs::Status: + case Logs::Normal: + return 15; /* Yellow */ + case Logs::MySQLError: + case Logs::Error: + return 13; /* Red */ + case Logs::MySQLQuery: + case Logs::Debug: + return 14; /* Light Green */ + case Logs::Quests: + return 258; /* Light Cyan */ + case Logs::Commands: + return 5; /* Light Purple */ + case Logs::Crash: + return 13; /* Red */ + default: + return 15; /* Yellow */ + } +} + +void EQEmuLogSys::ProcessConsoleMessage(uint16 debug_level, uint16 log_category, const std::string message) +{ + /* Check if category enabled for process */ + if (log_settings[log_category].log_to_console == 0) + return; + + /* Make sure the message inbound is at a debug level we're set at */ + if (log_settings[log_category].log_to_console < debug_level) + return; + + #ifdef _WINDOWS + HANDLE console_handle; + console_handle = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_FONT_INFOEX info = { 0 }; + info.cbSize = sizeof(info); + info.dwFontSize.Y = 12; // leave X as zero + info.FontWeight = FW_NORMAL; + wcscpy(info.FaceName, L"Lucida Console"); + SetCurrentConsoleFontEx(console_handle, NULL, &info); + SetConsoleTextAttribute(console_handle, EQEmuLogSys::GetWindowsConsoleColorFromCategory(log_category)); + std::cout << message << "\n"; + SetConsoleTextAttribute(console_handle, Console::Color::White); + #else + std::cout << EQEmuLogSys::GetLinuxConsoleColorFromCategory(log_category) << message << LC_RESET << std::endl; + #endif +} + +void EQEmuLogSys::Out(Logs::DebugLevel debug_level, uint16 log_category, std::string message, ...) +{ + va_list args; + va_start(args, message); + std::string output_message = vStringFormat(message.c_str(), args); + va_end(args); + + std::string output_debug_message = EQEmuLogSys::FormatOutMessageString(log_category, output_message); + + EQEmuLogSys::ProcessConsoleMessage(debug_level, log_category, output_debug_message); + EQEmuLogSys::ProcessGMSay(debug_level, log_category, output_debug_message); + EQEmuLogSys::ProcessLogWrite(debug_level, log_category, output_message); +} + +void EQEmuLogSys::SetCurrentTimeStamp(char* time_stamp){ + time_t raw_time; + struct tm * time_info; + time(&raw_time); + time_info = localtime(&raw_time); + strftime(time_stamp, 80, "[%m-%d-%Y :: %H:%M:%S]", time_info); +} + +void EQEmuLogSys::MakeDirectory(std::string directory_name){ +#ifdef _WINDOWS + _mkdir(directory_name.c_str()); +#else + mkdir(directory_name.c_str(), 0755); +#endif +} + +void EQEmuLogSys::CloseFileLogs() +{ + if (process_log.is_open()){ + process_log.close(); + } +} + +void EQEmuLogSys::StartFileLogs(const std::string log_name) +{ + EQEmuLogSys::CloseFileLogs(); + + /* When loading settings, we must have been given a reason in category based logging to output to a file in order to even create or open one... */ + if (file_logs_enabled == false) + return; + + if (EQEmuLogSys::log_platform == EQEmuExePlatform::ExePlatformZone){ + if (log_name != "") + platform_file_name = log_name; + + if (platform_file_name == ""){ + return; + } + + EQEmuLogSys::Out(Logs::General, Logs::Status, "Starting File Log 'logs/%s_%i.txt'", platform_file_name.c_str(), getpid()); + EQEmuLogSys::MakeDirectory("logs/zone"); + process_log.open(StringFormat("logs/zone/%s_%i.txt", platform_file_name.c_str(), getpid()), std::ios_base::app | std::ios_base::out); + } + else{ + if (platform_file_name == ""){ + return; + } + EQEmuLogSys::Out(Logs::General, Logs::Status, "Starting File Log 'logs/%s_%i.txt'", platform_file_name.c_str(), getpid()); + process_log.open(StringFormat("logs/%s_%i.txt", platform_file_name.c_str(), getpid()), std::ios_base::app | std::ios_base::out); + } +} \ No newline at end of file diff --git a/common/eqemu_logsys.h b/common/eqemu_logsys.h new file mode 100644 index 000000000..3578aad0c --- /dev/null +++ b/common/eqemu_logsys.h @@ -0,0 +1,170 @@ +/* EQEMu: Everquest Server Emulator + Copyright (C) 2001-2015 EQEMu Development Team (http://eqemulator.net) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY except by those people which sell it, which + are required to give you total support for your newly bought product; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef EQEMU_LOGSYS_H +#define EQEMU_LOGSYS_H + +#include +#include +#include +#include + +#include "types.h" + +namespace Logs{ + enum DebugLevel { + General = 1, /* 1 - Low-Level general debugging, useful info on single line */ + Moderate, /* 2 - Informational based, used in functions, when particular things load */ + Detail, /* 3 - Use this for extreme detail in logging, usually in extreme debugging in the stack or interprocess communication */ + }; + + /* + If you add to this, make sure you update LogCategoryName + NOTE: Only add to the bottom of the enum because that is the type ID assignment + */ + + enum LogCategory { + None = 0, + AA, + AI, + Aggro, + Attack, + Client_Server_Packet, + Combat, + Commands, + Crash, + Debug, + Doors, + Error, + Guilds, + Inventory, + Launcher, + Netcode, + Normal, + Object, + Pathing, + QS_Server, + Quests, + Rules, + Skills, + Spawns, + Spells, + Status, + TCP_Connection, + Tasks, + Tradeskills, + Trading, + Tribute, + UCS_Server, + WebInterface_Server, + World_Server, + Zone_Server, + MySQLError, + MySQLQuery, + MaxCategoryID /* Don't Remove this*/ + }; + + /* If you add to this, make sure you update LogCategory */ + static const char* LogCategoryName[LogCategory::MaxCategoryID] = { + "", + "AA", + "AI", + "Aggro", + "Attack", + "Client Server Packet", + "Combat", + "Commands", + "Crash", + "Debug", + "Doors", + "Error", + "Guilds", + "Inventory", + "Launcher", + "Netcode", + "Normal", + "Object", + "Pathing", + "QS Server", + "Quests", + "Rules", + "Skills", + "Spawns", + "Spells", + "Status", + "TCP Connection", + "Tasks", + "Tradeskills", + "Trading", + "Tribute", + "UCS Server", + "WebInterface Server", + "World Server", + "Zone Server", + "MySQL Error", + "MySQL Query", + }; +} + +class EQEmuLogSys { +public: + EQEmuLogSys(); + ~EQEmuLogSys(); + + void CloseFileLogs(); + void LoadLogSettingsDefaults(); + void MakeDirectory(std::string directory_name); + void Out(Logs::DebugLevel debug_level, uint16 log_category, std::string message, ...); + void SetCurrentTimeStamp(char* time_stamp); + void StartFileLogs(const std::string log_name = ""); + + struct LogSettings{ + uint8 log_to_file; + uint8 log_to_console; + uint8 log_to_gmsay; + }; + + LogSettings log_settings[Logs::LogCategory::MaxCategoryID]; + + bool file_logs_enabled = false; /* Set when log settings are loaded to determine if keeping a file open is necessary */ + + int log_platform = 0; /* Sets Executable platform (Zone/World/UCS) etc. */ + + std::string platform_file_name; /* File name used in writing logs */ + + uint16 GetGMSayColorFromCategory(uint16 log_category); + + void OnLogHookCallBackZone(std::function f) { on_log_gmsay_hook = f; } + +private: + bool zone_general_init = false; + + std::function on_log_gmsay_hook; + std::string FormatOutMessageString(uint16 log_category, std::string in_message); + std::string GetLinuxConsoleColorFromCategory(uint16 log_category); + + uint16 GetWindowsConsoleColorFromCategory(uint16 log_category); + + void ProcessConsoleMessage(uint16 debug_level, uint16 log_category, const std::string message); + void ProcessGMSay(uint16 debug_level, uint16 log_category, std::string message); + void ProcessLogWrite(uint16 debug_level, uint16 log_category, std::string message); +}; + +extern EQEmuLogSys Log; + +#endif \ No newline at end of file diff --git a/common/eqtime.cpp b/common/eqtime.cpp index bff36bc4c..79301a28f 100644 --- a/common/eqtime.cpp +++ b/common/eqtime.cpp @@ -17,7 +17,8 @@ */ #include -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/eqtime.h" #include "../common/eq_packet_structs.h" #include @@ -140,11 +141,10 @@ bool EQTime::saveFile(const char *filename) of.open(filename); if(!of) { - LogFile->write(EQEmuLog::Error, "EQTime::saveFile failed: Unable to open file '%s'", filename); + Log.Out(Logs::General, Logs::Error, "EQTime::saveFile failed: Unable to open file '%s'", filename); return false; } //Enable for debugging - //std::cout << "SAVE: day=" << (long)eqTime.start_eqtime.day << ";hour=" << (long)eqTime.start_eqtime.hour << ";min=" << (long)eqTime.start_eqtime.minute << ";mon=" << (long)eqTime.start_eqtime.month << ";yr=" << eqTime.start_eqtime.year << ";timet=" << eqTime.start_realtime << std::endl; of << EQT_VERSION << std::endl; of << (long)eqTime.start_eqtime.day << std::endl; of << (long)eqTime.start_eqtime.hour << std::endl; @@ -164,14 +164,14 @@ bool EQTime::loadFile(const char *filename) in.open(filename); if(!in) { - LogFile->write(EQEmuLog::Error, "Could not load EQTime file %s", filename); + Log.Out(Logs::General, Logs::Error, "Could not load EQTime file %s", filename); return false; } in >> version; in.ignore(80, '\n'); if(version != EQT_VERSION) { - LogFile->write(EQEmuLog::Error, "'%s' is NOT a valid EQTime file. File version is %i, EQTime version is %i", filename, version, EQT_VERSION); + Log.Out(Logs::General, Logs::Error, "'%s' is NOT a valid EQTime file. File version is %i, EQTime version is %i", filename, version, EQT_VERSION); return false; } //in >> eqTime.start_eqtime.day; @@ -194,7 +194,6 @@ bool EQTime::loadFile(const char *filename) in.ignore(80, '\n'); in >> eqTime.start_realtime; //Enable for debugging... - //std::cout << "LOAD: day=" << (long)eqTime.start_eqtime.day << ";hour=" << (long)eqTime.start_eqtime.hour << ";min=" << (long)eqTime.start_eqtime.minute << ";mon=" << (long)eqTime.start_eqtime.month << ";yr=" << eqTime.start_eqtime.year << ";timet=" << eqTime.start_realtime << std::endl; in.close(); return true; } diff --git a/common/extprofile.cpp b/common/extprofile.cpp index 0ea3fb7a1..f29ec1e6e 100644 --- a/common/extprofile.cpp +++ b/common/extprofile.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "extprofile.h" //Set defaults in the extended profile... diff --git a/common/eqemu_error.h b/common/global_define.h similarity index 57% rename from common/eqemu_error.h rename to common/global_define.h index ffc5d69ed..0c5d32ee9 100644 --- a/common/eqemu_error.h +++ b/common/global_define.h @@ -1,5 +1,5 @@ /* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) + Copyright (C) 2001-2015 EQEMu Development Team (http://eqemu.org) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,22 +15,27 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef EQEMuError_H -#define EQEMuError_H - -#include "../common/types.h" - -enum eEQEMuError { EQEMuError_NoError, - EQEMuError_Mysql_1405, - EQEMuError_Mysql_2003, - EQEMuError_Mysql_2005, - EQEMuError_Mysql_2007, - EQEMuError_MaxErrorID }; - -void AddEQEMuError(eEQEMuError iError, bool iExitNow = false); -void AddEQEMuError(char* iError, bool iExitNow = false); -uint32 CheckEQEMuError(); -void CheckEQEMuErrorAndPause(); +#if defined(_DEBUG) && defined(WIN32) + #ifndef _CRTDBG_MAP_ALLOC + #include + #include + #endif #endif +#ifndef EQDEBUG_H +#define EQDEBUG_H + +#define _WINSOCKAPI_ //stupid windows, trying to fix the winsock2 vs. winsock issues +#if defined(WIN32) && ( defined(PACKETCOLLECTOR) || defined(COLLECTOR) ) + // Packet Collector on win32 requires winsock.h due to latest pcap.h + // winsock.h must come before windows.h + #include +#endif + +#ifdef _WINDOWS + #include + #include +#endif + +#endif diff --git a/common/guild_base.cpp b/common/guild_base.cpp index f1db14af7..1416dedf1 100644 --- a/common/guild_base.cpp +++ b/common/guild_base.cpp @@ -18,7 +18,7 @@ #include "guild_base.h" #include "database.h" -#include "logsys.h" + //#include "misc_functions.h" #include "string_util.h" #include @@ -46,7 +46,7 @@ bool BaseGuildManager::LoadGuilds() { ClearGuilds(); if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to load guilds when we have no database object."); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to load guilds when we have no database object."); return(false); } @@ -57,7 +57,6 @@ bool BaseGuildManager::LoadGuilds() { if (!results.Success()) { - _log(GUILDS__ERROR, "Error loading guilds '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -69,7 +68,6 @@ bool BaseGuildManager::LoadGuilds() { if (!results.Success()) { - _log(GUILDS__ERROR, "Error loading guild ranks '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -79,13 +77,13 @@ bool BaseGuildManager::LoadGuilds() { uint8 rankn = atoi(row[1]); if(rankn > GUILD_MAX_RANK) { - _log(GUILDS__ERROR, "Found invalid (too high) rank %d for guild %d, skipping.", rankn, guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Found invalid (too high) rank %d for guild %d, skipping.", rankn, guild_id); continue; } res = m_guilds.find(guild_id); if(res == m_guilds.end()) { - _log(GUILDS__ERROR, "Found rank %d for non-existent guild %d, skipping.", rankn, guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Found rank %d for non-existent guild %d, skipping.", rankn, guild_id); continue; } @@ -107,7 +105,7 @@ bool BaseGuildManager::LoadGuilds() { bool BaseGuildManager::RefreshGuild(uint32 guild_id) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to refresh guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to refresh guild %d when we have no database object.", guild_id); return(false); } @@ -120,13 +118,12 @@ bool BaseGuildManager::RefreshGuild(uint32 guild_id) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error reloading guilds '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } if (results.RowCount() == 0) { - _log(GUILDS__ERROR, "Unable to find guild %d in the database.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Unable to find guild %d in the database.", guild_id); return false; } @@ -140,7 +137,6 @@ bool BaseGuildManager::RefreshGuild(uint32 guild_id) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error reloading guild ranks '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -149,7 +145,7 @@ bool BaseGuildManager::RefreshGuild(uint32 guild_id) { uint8 rankn = atoi(row[1]); if(rankn > GUILD_MAX_RANK) { - _log(GUILDS__ERROR, "Found invalid (too high) rank %d for guild %d, skipping.", rankn, guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Found invalid (too high) rank %d for guild %d, skipping.", rankn, guild_id); continue; } @@ -166,7 +162,7 @@ bool BaseGuildManager::RefreshGuild(uint32 guild_id) { rank.permissions[GUILD_WARPEACE] = (row[10][0] == '1') ? true: false; } - _log(GUILDS__DB, "Successfully refreshed guild %d from the database.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Successfully refreshed guild %d from the database.", guild_id); return true; } @@ -218,14 +214,14 @@ BaseGuildManager::GuildInfo *BaseGuildManager::_CreateGuild(uint32 guild_id, con bool BaseGuildManager::_StoreGuildDB(uint32 guild_id) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to store guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to store guild %d when we have no database object.", guild_id); return(false); } std::map::const_iterator res; res = m_guilds.find(guild_id); if(res == m_guilds.end()) { - _log(GUILDS__DB, "Requested to store non-existent guild %d", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to store non-existent guild %d", guild_id); return(false); } GuildInfo *info = res->second; @@ -235,16 +231,10 @@ bool BaseGuildManager::_StoreGuildDB(uint32 guild_id) { //clear out old `guilds` entry auto results = m_db->QueryDatabase(query); - if (!results.Success()) - _log(GUILDS__ERROR, "Error clearing old guild record when storing %d '%s': %s", guild_id, query.c_str(), results.ErrorMessage().c_str()); - //clear out old `guild_ranks` entries query = StringFormat("DELETE FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id); results = m_db->QueryDatabase(query); - if (!results.Success()) - _log(GUILDS__ERROR, "Error clearing old guild_ranks records when storing %d '%s': %s", guild_id, query.c_str(), results.ErrorMessage().c_str()); - //escape our strings. char *name_esc = new char[info->name.length()*2+1]; char *motd_esc = new char[info->motd.length()*2+1]; @@ -260,7 +250,6 @@ bool BaseGuildManager::_StoreGuildDB(uint32 guild_id) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error inserting new guild record when storing %d. Giving up. '%s': %s", guild_id, query.c_str(), results.ErrorMessage().c_str()); safe_delete_array(name_esc); safe_delete_array(motd_esc); safe_delete_array(motd_set_esc); @@ -294,21 +283,20 @@ bool BaseGuildManager::_StoreGuildDB(uint32 guild_id) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error inserting new guild rank record when storing %d for %d. Giving up. '%s': %s", rank, guild_id, query.c_str(), results.ErrorMessage().c_str()); safe_delete_array(title_esc); return false; } safe_delete_array(title_esc); } - _log(GUILDS__DB, "Stored guild %d in the database", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Stored guild %d in the database", guild_id); return true; } uint32 BaseGuildManager::_GetFreeGuildID() { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested find a free guild ID when we have no database object."); + Log.Out(Logs::Detail, Logs::Guilds, "Requested find a free guild ID when we have no database object."); return(GUILD_NONE); } @@ -337,18 +325,17 @@ uint32 BaseGuildManager::_GetFreeGuildID() { if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in _GetFreeGuildID query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); continue; } if (results.RowCount() == 0) { - _log(GUILDS__DB, "Located free guild ID %d in the database", index); + Log.Out(Logs::Detail, Logs::Guilds, "Located free guild ID %d in the database", index); return index; } } - _log(GUILDS__ERROR, "Unable to find a free guild ID when requested."); + Log.Out(Logs::Detail, Logs::Guilds, "Unable to find a free guild ID when requested."); return GUILD_NONE; } @@ -518,11 +505,11 @@ uint32 BaseGuildManager::DBCreateGuild(const char* name, uint32 leader) { //now store the resulting guild setup into the DB. if(!_StoreGuildDB(new_id)) { - _log(GUILDS__ERROR, "Error storing new guild. It may have been partially created which may need manual removal."); + Log.Out(Logs::Detail, Logs::Guilds, "Error storing new guild. It may have been partially created which may need manual removal."); return(GUILD_NONE); } - _log(GUILDS__DB, "Created guild %d in the database.", new_id); + Log.Out(Logs::Detail, Logs::Guilds, "Created guild %d in the database.", new_id); return(new_id); } @@ -538,7 +525,7 @@ bool BaseGuildManager::DBDeleteGuild(uint32 guild_id) { } if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to delete guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to delete guild %d when we have no database object.", guild_id); return(false); } @@ -558,14 +545,14 @@ bool BaseGuildManager::DBDeleteGuild(uint32 guild_id) { query = StringFormat("DELETE FROM guild_bank WHERE guildid=%lu", (unsigned long)guild_id); QueryWithLogging(query, "deleting guild bank"); - _log(GUILDS__DB, "Deleted guild %d from the database.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Deleted guild %d from the database.", guild_id); return(true); } bool BaseGuildManager::DBRenameGuild(uint32 guild_id, const char* name) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to rename guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to rename guild %d when we have no database object.", guild_id); return false; } @@ -586,13 +573,13 @@ bool BaseGuildManager::DBRenameGuild(uint32 guild_id, const char* name) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error renaming guild %d '%s': %s", guild_id, query.c_str(), results.Success()); + Log.Out(Logs::Detail, Logs::Guilds, "Error renaming guild %d '%s': %s", guild_id, query.c_str(), results.Success()); safe_delete_array(esc); return false; } safe_delete_array(esc); - _log(GUILDS__DB, "Renamed guild %s (%d) to %s in database.", info->name.c_str(), guild_id, name); + Log.Out(Logs::Detail, Logs::Guilds, "Renamed guild %s (%d) to %s in database.", info->name.c_str(), guild_id, name); info->name = name; //update our local record. @@ -601,7 +588,7 @@ bool BaseGuildManager::DBRenameGuild(uint32 guild_id, const char* name) { bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to set the leader for guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to set the leader for guild %d when we have no database object.", guild_id); return false; } @@ -617,7 +604,6 @@ bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error changing leader on guild %d '%s': %s", guild_id, query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -628,7 +614,7 @@ bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) { if(!DBSetGuildRank(leader, GUILD_LEADER)) return false; - _log(GUILDS__DB, "Set guild leader for guild %d to %d in the database", guild_id, leader); + Log.Out(Logs::Detail, Logs::Guilds, "Set guild leader for guild %d to %d in the database", guild_id, leader); info->leader_char_id = leader; //update our local record. @@ -637,7 +623,7 @@ bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) { bool BaseGuildManager::DBSetGuildMOTD(uint32 guild_id, const char* motd, const char *setter) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to set the MOTD for guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to set the MOTD for guild %d when we have no database object.", guild_id); return(false); } @@ -661,7 +647,6 @@ bool BaseGuildManager::DBSetGuildMOTD(uint32 guild_id, const char* motd, const c if (!results.Success()) { - _log(GUILDS__ERROR, "Error setting MOTD for guild %d '%s': %s", guild_id, query.c_str(), results.ErrorMessage().c_str()); safe_delete_array(esc); safe_delete_array(esc_set); return false; @@ -669,7 +654,7 @@ bool BaseGuildManager::DBSetGuildMOTD(uint32 guild_id, const char* motd, const c safe_delete_array(esc); safe_delete_array(esc_set); - _log(GUILDS__DB, "Set MOTD for guild %d in the database", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Set MOTD for guild %d in the database", guild_id); info->motd = motd; //update our local record. info->motd_setter = setter; //update our local record. @@ -698,13 +683,12 @@ bool BaseGuildManager::DBSetGuildURL(uint32 GuildID, const char* URL) if (!results.Success()) { - _log(GUILDS__ERROR, "Error setting URL for guild %d '%s': %s", GuildID, query.c_str(), results.ErrorMessage().c_str()); safe_delete_array(esc); return(false); } safe_delete_array(esc); - _log(GUILDS__DB, "Set URL for guild %d in the database", GuildID); + Log.Out(Logs::Detail, Logs::Guilds, "Set URL for guild %d in the database", GuildID); info->url = URL; //update our local record. @@ -733,13 +717,12 @@ bool BaseGuildManager::DBSetGuildChannel(uint32 GuildID, const char* Channel) if (!results.Success()) { - _log(GUILDS__ERROR, "Error setting Channel for guild %d '%s': %s", GuildID, query.c_str(), results.ErrorMessage().c_str()); safe_delete_array(esc); return(false); } safe_delete_array(esc); - _log(GUILDS__DB, "Set Channel for guild %d in the database", GuildID); + Log.Out(Logs::Detail, Logs::Guilds, "Set Channel for guild %d in the database", GuildID); info->channel = Channel; //update our local record. @@ -748,7 +731,7 @@ bool BaseGuildManager::DBSetGuildChannel(uint32 GuildID, const char* Channel) bool BaseGuildManager::DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested to set char to guild %d when we have no database object.", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested to set char to guild %d when we have no database object.", guild_id); return(false); } @@ -759,7 +742,6 @@ bool BaseGuildManager::DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank) { auto results = m_db->QueryDatabase(query); if (!results.Success()) { - _log(GUILDS__ERROR, "Error Changing char %d to guild %d '%s': %s", charid, guild_id, query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -768,11 +750,10 @@ bool BaseGuildManager::DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank) { auto results = m_db->QueryDatabase(query); if (!results.Success()) { - _log(GUILDS__ERROR, "Error removing char %d from guild '%s': %s", charid, guild_id, query.c_str(), results.ErrorMessage().c_str()); return false; } } - _log(GUILDS__DB, "Set char %d to guild %d and rank %d in the database.", charid, guild_id, rank); + Log.Out(Logs::Detail, Logs::Guilds, "Set char %d to guild %d and rank %d in the database.", charid, guild_id, rank); return true; } @@ -796,7 +777,6 @@ bool BaseGuildManager::GetBankerFlag(uint32 CharID) auto results = m_db->QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__ERROR, "Error retrieving banker flag '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -827,7 +807,6 @@ bool BaseGuildManager::GetAltFlag(uint32 CharID) auto results = m_db->QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__ERROR, "Error retrieving alt flag '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -863,11 +842,10 @@ bool BaseGuildManager::DBSetPublicNote(uint32 charid, const char* note) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error setting public note for char %d '%s': %s", charid, query.c_str(), results.ErrorMessage().c_str()); return false; } - _log(GUILDS__DB, "Set public not for char %d", charid); + Log.Out(Logs::Detail, Logs::Guilds, "Set public not for char %d", charid); return true; } @@ -880,7 +858,6 @@ bool BaseGuildManager::QueryWithLogging(std::string query, const char *errmsg) { if (!results.Success()) { - _log(GUILDS__ERROR, "Error %s: '%s': %s", errmsg, query.c_str(), results.ErrorMessage().c_str()); return(false); } @@ -938,7 +915,6 @@ bool BaseGuildManager::GetEntireGuild(uint32 guild_id, std::vectorQueryDatabase(query); if (!results.Success()) { - _log(GUILDS__ERROR, "Error loading guild member list '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -948,14 +924,14 @@ bool BaseGuildManager::GetEntireGuild(uint32 guild_id, std::vectorQueryDatabase(query); if (!results.Success()) { - _log(GUILDS__ERROR, "Error loading guild member '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -978,7 +953,7 @@ bool BaseGuildManager::GetCharInfo(const char *char_name, CharGuildInfo &into) { auto row = results.begin(); ProcessGuildMember(row, into); - _log(GUILDS__DB, "Retreived guild member info for char %s from the database", char_name); + Log.Out(Logs::Detail, Logs::Guilds, "Retreived guild member info for char %s from the database", char_name); return true; @@ -987,7 +962,7 @@ bool BaseGuildManager::GetCharInfo(const char *char_name, CharGuildInfo &into) { bool BaseGuildManager::GetCharInfo(uint32 char_id, CharGuildInfo &into) { if(m_db == nullptr) { - _log(GUILDS__DB, "Requested char info on %d when we have no database object.", char_id); + Log.Out(Logs::Detail, Logs::Guilds, "Requested char info on %d when we have no database object.", char_id); return false; } @@ -1000,7 +975,6 @@ bool BaseGuildManager::GetCharInfo(uint32 char_id, CharGuildInfo &into) { #endif auto results = m_db->QueryDatabase(query); if (!results.Success()) { - _log(GUILDS__ERROR, "Error loading guild member '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1009,7 +983,7 @@ bool BaseGuildManager::GetCharInfo(uint32 char_id, CharGuildInfo &into) { auto row = results.begin(); ProcessGuildMember(row, into); - _log(GUILDS__DB, "Retreived guild member info for char %d", char_id); + Log.Out(Logs::Detail, Logs::Guilds, "Retreived guild member info for char %d", char_id); return true; @@ -1124,16 +1098,16 @@ bool BaseGuildManager::GuildExists(uint32 guild_id) const { bool BaseGuildManager::IsGuildLeader(uint32 guild_id, uint32 char_id) const { if(guild_id == GUILD_NONE) { - _log(GUILDS__PERMISSIONS, "Check leader for char %d: not a guild.", char_id); + Log.Out(Logs::Detail, Logs::Guilds, "Check leader for char %d: not a guild.", char_id); return(false); } std::map::const_iterator res; res = m_guilds.find(guild_id); if(res == m_guilds.end()) { - _log(GUILDS__PERMISSIONS, "Check leader for char %d: invalid guild.", char_id); + Log.Out(Logs::Detail, Logs::Guilds, "Check leader for char %d: invalid guild.", char_id); return(false); //invalid guild } - _log(GUILDS__PERMISSIONS, "Check leader for guild %d, char %d: leader id=%d", guild_id, char_id, res->second->leader_char_id); + Log.Out(Logs::Detail, Logs::Guilds, "Check leader for guild %d, char %d: leader id=%d", guild_id, char_id, res->second->leader_char_id); return(char_id == res->second->leader_char_id); } @@ -1163,20 +1137,20 @@ uint8 BaseGuildManager::GetDisplayedRank(uint32 guild_id, uint8 rank, uint32 cha bool BaseGuildManager::CheckGMStatus(uint32 guild_id, uint8 status) const { if(status >= 250) { - _log(GUILDS__PERMISSIONS, "Check permission on guild %d with user status %d > 250, granted.", guild_id, status); + Log.Out(Logs::Detail, Logs::Guilds, "Check permission on guild %d with user status %d > 250, granted.", guild_id, status); return(true); //250+ as allowed anything } std::map::const_iterator res; res = m_guilds.find(guild_id); if(res == m_guilds.end()) { - _log(GUILDS__PERMISSIONS, "Check permission on guild %d with user status %d, no such guild, denied.", guild_id, status); + Log.Out(Logs::Detail, Logs::Guilds, "Check permission on guild %d with user status %d, no such guild, denied.", guild_id, status); return(false); //invalid guild } bool granted = (res->second->minstatus <= status); - _log(GUILDS__PERMISSIONS, "Check permission on guild %s (%d) with user status %d. Min status %d: %s", + Log.Out(Logs::Detail, Logs::Guilds, "Check permission on guild %s (%d) with user status %d. Min status %d: %s", res->second->name.c_str(), guild_id, status, res->second->minstatus, granted?"granted":"denied"); return(granted); @@ -1184,21 +1158,21 @@ bool BaseGuildManager::CheckGMStatus(uint32 guild_id, uint8 status) const { bool BaseGuildManager::CheckPermission(uint32 guild_id, uint8 rank, GuildAction act) const { if(rank > GUILD_MAX_RANK) { - _log(GUILDS__PERMISSIONS, "Check permission on guild %d and rank %d for action %s (%d): Invalid rank, denied.", + Log.Out(Logs::Detail, Logs::Guilds, "Check permission on guild %d and rank %d for action %s (%d): Invalid rank, denied.", guild_id, rank, GuildActionNames[act], act); return(false); //invalid rank } std::map::const_iterator res; res = m_guilds.find(guild_id); if(res == m_guilds.end()) { - _log(GUILDS__PERMISSIONS, "Check permission on guild %d and rank %d for action %s (%d): Invalid guild, denied.", + Log.Out(Logs::Detail, Logs::Guilds, "Check permission on guild %d and rank %d for action %s (%d): Invalid guild, denied.", guild_id, rank, GuildActionNames[act], act); return(false); //invalid guild } bool granted = res->second->ranks[rank].permissions[act]; - _log(GUILDS__PERMISSIONS, "Check permission on guild %s (%d) and rank %s (%d) for action %s (%d): %s", + Log.Out(Logs::Detail, Logs::Guilds, "Check permission on guild %s (%d) and rank %s (%d) for action %s (%d): %s", res->second->name.c_str(), guild_id, res->second->ranks[rank].name.c_str(), rank, GuildActionNames[act], act, @@ -1245,7 +1219,6 @@ uint32 BaseGuildManager::DoesAccountContainAGuildLeader(uint32 AccountID) auto results = m_db->QueryDatabase(query); if (!results.Success()) { - _log(GUILDS__ERROR, "Error executing query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } diff --git a/common/guilds.cpp b/common/guilds.cpp index 6098c2e1b..408f28714 100644 --- a/common/guilds.cpp +++ b/common/guilds.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "misc_functions.h" #include "guilds.h" #include "database.h" diff --git a/common/item.cpp b/common/item.cpp index ce1690aaf..3581c74f6 100644 --- a/common/item.cpp +++ b/common/item.cpp @@ -17,7 +17,7 @@ */ #include "classes.h" -#include "debug.h" +#include "global_define.h" #include "item.h" #include "races.h" #include "rulesys.h" @@ -1145,7 +1145,7 @@ int16 Inventory::_PutItem(int16 slot_id, ItemInst* inst) } if (result == INVALID_INDEX) { - LogFile->write(EQEmuLog::Error, "Inventory::_PutItem: Invalid slot_id specified (%i) with parent slot id (%i)", slot_id, parentSlot); + Log.Out(Logs::General, Logs::Error, "Inventory::_PutItem: Invalid slot_id specified (%i) with parent slot id (%i)", slot_id, parentSlot); Inventory::MarkDirty(inst); // Slot not found, clean up } diff --git a/common/logsys.cpp b/common/logsys.cpp deleted file mode 100644 index c01baf04e..000000000 --- a/common/logsys.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "debug.h" -#include "eq_packet.h" -#include "logsys.h" -#include "misc.h" - -#include -#include -#include - - -#define LOG_CATEGORY(category) #category , -const char *log_category_names[NUMBER_OF_LOG_CATEGORIES] = { - #include "logtypes.h" -}; - - -//this array is private to this file, only a const version of it is exposed -#define LOG_TYPE(category, type, enabled) { enabled, LOG_ ##category, #category "__" #type }, -static LogTypeStatus real_log_type_info[NUMBER_OF_LOG_TYPES+1] = -{ - #include "logtypes.h" - { false, NUMBER_OF_LOG_CATEGORIES, "BAD TYPE" } /* dummy trailing record */ -}; -const LogTypeStatus *log_type_info = real_log_type_info; - - - -void log_hex(LogType type, const void *data, unsigned long length, unsigned char padding) { - if(!is_log_enabled(type)) - return; - char buffer[80]; - uint32 offset; - for(offset=0;offsetbuild_header_dump(buffer); - log_message(type,"%s", buffer); - log_hex(type,(const char *)p->pBuffer,p->size); -} - -void log_raw_packet(LogType type, uint16 seq, const BasePacket *p) { - if(!is_log_enabled(type)) - return; - char buffer[196]; - p->build_raw_header_dump(buffer, seq); - log_message(type,buffer); - log_hex(type,(const char *)p->pBuffer,p->size); -} - - -void log_enable(LogType t) { - real_log_type_info[t].enabled = true; -} - -void log_disable(LogType t) { - real_log_type_info[t].enabled = false; -} - -void log_toggle(LogType t) { - real_log_type_info[t].enabled = !real_log_type_info[t].enabled; -} - - -bool load_log_settings(const char *filename) { - //this is a terrible algorithm, but im lazy today - FILE *f = fopen(filename, "r"); - if(f == nullptr) - return(false); - char linebuf[512], type_name[256], value[256]; - while(!feof(f)) { - if(fgets(linebuf, 512, f) == nullptr) - continue; -#ifdef _WINDOWS - if (sscanf(linebuf, "%[^=]=%[^\n]\n", type_name, value) != 2) - continue; -#else - if (sscanf(linebuf, "%[^=]=%[^\r\n]\n", type_name, value) != 2) - continue; -#endif - - if(type_name[0] == '\0' || type_name[0] == '#') - continue; - - //first make sure we understand the value - bool enabled; - if(!strcasecmp(value, "on") || !strcasecmp(value, "true") || !strcasecmp(value, "yes") || !strcasecmp(value, "enabled") || !strcmp(value, "1")) - enabled = true; - else if(!strcasecmp(value, "off") || !strcasecmp(value, "false") || !strcasecmp(value, "no") || !strcasecmp(value, "disabled") || !strcmp(value, "0")) - enabled = false; - else { - printf("Unable to parse value '%s' from %s. Skipping line.", value, filename); - continue; - } - - int r; - //first see if it is a category name - for(r = 0; r < NUMBER_OF_LOG_CATEGORIES; r++) { - if(!strcasecmp(log_category_names[r], type_name)) - break; - } - if(r != NUMBER_OF_LOG_CATEGORIES) { - //matched a category. - int k; - for(k = 0; k < NUMBER_OF_LOG_TYPES; k++) { - if(log_type_info[k].category != r) - continue; //does not match this category. - if(enabled) - log_enable(LogType(k)); - else - log_disable(LogType(k)); - } - continue; - } - - for(r = 0; r < NUMBER_OF_LOG_TYPES; r++) { - if(!strcasecmp(log_type_info[r].name, type_name)) - break; - } - if(r == NUMBER_OF_LOG_TYPES) { - printf("Unable to locate log type %s from file %s. Skipping line.", type_name, filename); - continue; - } - - //got it all figured out, do something now... - if(enabled) - log_enable(LogType(r)); - else - log_disable(LogType(r)); - } - fclose(f); - return(true); -} - diff --git a/common/logsys.h b/common/logsys.h deleted file mode 100644 index 84741cdb4..000000000 --- a/common/logsys.h +++ /dev/null @@ -1,179 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ -#ifndef LOGSYS_H_ -#define LOGSYS_H_ - -/* -* -* Usage: -* -* These are the main functions provided by logsys: -* - _log(TYPE, fmt, ...) - Log a message in any context -* - mlog(TYPE, fmt, ...) - Zone only. Log a message from a Mob:: context, prefixing it with the mob's name. -* - clog(TYPE, fmt, ...) - World only. Log a message from a Client:: context, prefixing it with the client's account name. -* - zlog(TYPE, fmt, ...) - World only. Log a message from a ZoneServer:: context, prefixing it with the zones id/name or ip/port. -* - _hex(TYPE, data, length) - Log hex dump in any context. -* - mhex(TYPE, data, length) - Zone only. Log a hex dump from a Mob:: context, prefixing it with the mob's name -* - _pkt(TYPE, BasePacket *) - Log a packet hex dump with header in any context. -* - mhex(TYPE, data, length) - Zone only. Log a packet hex dump from a Mob:: context, prefixing it with the mob's name -* Types are defined in logtypes.h -* -* this is very C-ish, not C++ish, but thats how I felt like writting it -*/ - -#include -#include "types.h" - -#define LOG_CATEGORY(category) LOG_ ##category , -typedef enum { - #include "logtypes.h" - NUMBER_OF_LOG_CATEGORIES -} LogCategory; - -#define LOG_TYPE(category, type, enabled) category##__##type , -typedef enum { - #include "logtypes.h" - NUMBER_OF_LOG_TYPES -} LogType; - -extern const char *log_category_names[NUMBER_OF_LOG_CATEGORIES]; - -typedef struct { - bool enabled; - LogCategory category; - const char *name; -} LogTypeStatus; - -//expose a read-only pointer -extern const LogTypeStatus *log_type_info; - -// For log_packet, et all. -class BasePacket; - -extern void log_message(LogType type, const char *fmt, ...); -extern void log_messageVA(LogType type, const char *fmt, va_list args); -extern void log_hex(LogType type, const void *data, unsigned long length, unsigned char padding=4); -extern void log_packet(LogType type, const BasePacket *p); -extern void log_raw_packet(LogType type, uint16 seq, const BasePacket *p); - -#ifdef DISABLE_LOGSYS - //completely disabled, this is the best I can come up with since we have no variadic macros - inline void _log(LogType, const char *, ...) {}//i feel dirty for putting this ifdef here, but I dont wanna have to include a header in all zone files to get it - inline void mlog(LogType, const char *, ...) {} - inline void clog(LogType, const char *, ...) {} - inline void zlog(LogType, const char *, ...) {} -#else //!DISABLE_LOGSYS - - //we have variadic macros, hooray! - //the do-while construct is needed to allow a ; at the end of log(); lines when used - //in conditional statements without {}'s - #define _log( type, format, ...) \ - do { \ - if(log_type_info[ type ].enabled) { \ - log_message(type, format, ##__VA_ARGS__); \ - } \ - } while(false) - #ifdef ZONE - class Mob; - extern void log_message_mob(LogType type, Mob *who, const char *fmt, ...); - #define mlog( type, format, ...) \ - do { \ - if(IsLoggingEnabled()) \ - if(log_type_info[ type ].enabled) { \ - log_message_mob(type, this, format, ##__VA_ARGS__); \ - } \ - } while(false) - #endif - #ifdef WORLD - class Client; - extern void log_message_client(LogType type, Client *who, const char *fmt, ...); - #define clog( type, format, ...) \ - do { \ - if(log_type_info[ type ].enabled) { \ - log_message_client(type, this, format, ##__VA_ARGS__); \ - } \ - } while(false) - - class ZoneServer; - extern void log_message_zone(LogType type, ZoneServer *who, const char *fmt, ...); - #define zlog( type, format, ...) \ - do { \ - if(log_type_info[ type ].enabled) { \ - log_message_zone(type, this, format, ##__VA_ARGS__); \ - } \ - } while(false) - #endif -#endif //!DISABLE_LOGSYS - -#ifndef DISABLE_LOGSYS -/* these are macros which do not use ..., and work for anybody */ - #define _hex( type, data, len) \ - do { \ - if(log_type_info[ type ].enabled) { \ - log_hex(type, (const char *)data, len); \ - } \ - } while(false) - #define _pkt( type, packet) \ - do { \ - if(log_type_info[ type ].enabled) { \ - log_packet(type, packet); \ - } \ - } while(false) - #define _raw( type, seq, packet) \ - do { \ - if(log_type_info[ type ].enabled) { \ - log_raw_packet(type, seq, packet); \ - } \ - } while(false) - -#else - #define _hex( type, data, len) {} - #define _pkt( type, packet) {} - #define _raw( type, seq, packet) {} -#endif //!DISABLE_LOGSYS -#ifdef ZONE - class Mob; - extern void log_hex_mob(LogType type, Mob *who, const char *data, uint32 length); - #define mhex( type, data, len) \ - do { \ - if(IsLoggingEnabled()) \ - if(log_type_info[ type ].enabled) { \ - log_hex_mob(type, this, data, len); \ - } \ - } while(false) - extern void log_packet_mob(LogType type, Mob *who, const BasePacket *p); - #define mpkt( type, packet) \ - do { \ - if(IsLoggingEnabled()) \ - if(log_type_info[ type ].enabled) { \ - log_packet_mob(type, this, packet); \ - } \ - } while(false) -#endif - -extern void log_enable(LogType t); -extern void log_disable(LogType t); -extern void log_toggle(LogType t); - -#define is_log_enabled( type ) \ - log_type_info[ type ].enabled - -extern bool load_log_settings(const char *filename); - -#endif /*LOGSYS_H_*/ - diff --git a/common/logsys_eqemu.cpp b/common/logsys_eqemu.cpp deleted file mode 100644 index f91de2cea..000000000 --- a/common/logsys_eqemu.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "debug.h" -#include "logsys.h" -#include "string_util.h" - -#include -#include - -#include - -void log_message(LogType type, const char *fmt, ...) { - va_list args; - va_start(args, fmt); - log_messageVA(type, fmt, args); - va_end(args); -} - -void log_messageVA(LogType type, const char *fmt, va_list args) { - std::string prefix_buffer = StringFormat("[%s] ", log_type_info[type].name); - - LogFile->writePVA(EQEmuLog::Debug, prefix_buffer.c_str(), fmt, args); -} - diff --git a/common/logtypes.h b/common/logtypes.h deleted file mode 100644 index 8ebd48f9a..000000000 --- a/common/logtypes.h +++ /dev/null @@ -1,266 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef LOG_CATEGORY -#define LOG_CATEGORY(name) -#endif -#ifndef LOG_TYPE -#define LOG_TYPE(cat, type, default_value) -#endif -#ifndef ENABLED -#define ENABLED true -#endif -#ifndef DISABLED -#define DISABLED false -#endif - - -LOG_CATEGORY( CHAT ) -LOG_TYPE( CHAT, SAY, DISABLED ) -LOG_TYPE( CHAT, EMOTE, DISABLED ) -LOG_TYPE( CHAT, OOC, DISABLED ) -LOG_TYPE( CHAT, GROUP, DISABLED ) -LOG_TYPE( CHAT, GUILD, DISABLED ) - -LOG_CATEGORY( MAIL ) -LOG_TYPE( MAIL, INIT, ENABLED ) -LOG_TYPE( MAIL, ERROR, ENABLED ) -LOG_TYPE( MAIL, CLIENT, DISABLED ) -LOG_TYPE( MAIL, TRACE, DISABLED ) -LOG_TYPE( MAIL, PACKETS, DISABLED) - -LOG_CATEGORY( CHANNELS ) -LOG_TYPE( CHANNELS, INIT, ENABLED ) -LOG_TYPE( CHANNELS, ERROR, ENABLED ) -LOG_TYPE( CHANNELS, CLIENT, DISABLED ) -LOG_TYPE( CHANNELS, TRACE, DISABLED ) -LOG_TYPE( CHANNELS, PACKETS, DISABLED) - -LOG_CATEGORY( UCS ) -LOG_TYPE( UCS, INIT, ENABLED ) -LOG_TYPE( UCS, ERROR, ENABLED ) -LOG_TYPE( UCS, CLIENT, DISABLED ) -LOG_TYPE( UCS, TRACE, DISABLED ) -LOG_TYPE( UCS, PACKETS, DISABLED) - -LOG_CATEGORY( QUERYSERV ) -LOG_TYPE( QUERYSERV, INIT, ENABLED ) -LOG_TYPE( QUERYSERV, ERROR, ENABLED ) -LOG_TYPE( QUERYSERV, CLIENT, DISABLED ) -LOG_TYPE( QUERYSERV, TRACE, DISABLED ) -LOG_TYPE( QUERYSERV, PACKETS, DISABLED) - -LOG_CATEGORY( SOCKET_SERVER) -LOG_TYPE( SOCKET_SERVER, INIT, ENABLED) -LOG_TYPE( SOCKET_SERVER, ERROR, ENABLED) -LOG_TYPE( SOCKET_SERVER, CLIENT, DISABLED) -LOG_TYPE( SOCKET_SERVER, TRACE, DISABLED) -LOG_TYPE( SOCKET_SERVER, PACKETS, DISABLED) - -LOG_CATEGORY( SPAWNS ) -LOG_TYPE( SPAWNS, MAIN, DISABLED ) -LOG_TYPE( SPAWNS, CONDITIONS, DISABLED ) -LOG_TYPE( SPAWNS, LIMITS, DISABLED ) - -LOG_CATEGORY( AI ) -LOG_TYPE( AI, ERROR, ENABLED ) -LOG_TYPE( AI, WAYPOINTS, DISABLED ) -LOG_TYPE( AI, BUFFS, DISABLED ) -LOG_TYPE( AI, SPELLS, DISABLED ) - -LOG_CATEGORY( PATHING) -LOG_TYPE( PATHING, DEBUG, DISABLED ) - -LOG_CATEGORY( QUESTS ) -LOG_TYPE( QUESTS, PATHING, DISABLED ) - -LOG_CATEGORY( SPELLS ) -LOG_TYPE( SPELLS, LOAD, DISABLED ) -LOG_TYPE( SPELLS, LOAD_ERR, DISABLED ) -LOG_TYPE( SPELLS, CASTING_ERR, DISABLED ) -LOG_TYPE( SPELLS, CASTING, DISABLED ) -LOG_TYPE( SPELLS, EFFECT_VALUES, DISABLED ) -LOG_TYPE( SPELLS, RESISTS, DISABLED ) -LOG_TYPE( SPELLS, STACKING, DISABLED ) -LOG_TYPE( SPELLS, BARDS, DISABLED ) -LOG_TYPE( SPELLS, BUFFS, DISABLED ) -LOG_TYPE( SPELLS, PROCS, DISABLED ) -LOG_TYPE( SPELLS, MODIFIERS, DISABLED ) -LOG_TYPE( SPELLS, CRITS, DISABLED ) -LOG_TYPE( SPELLS, REZ, DISABLED ) - -LOG_CATEGORY( FACTION ) - -LOG_CATEGORY( ZONE ) -LOG_TYPE( ZONE, GROUND_SPAWNS, DISABLED ) -LOG_TYPE( ZONE, SPAWNS, ENABLED) -LOG_TYPE( ZONE, INIT, ENABLED ) -LOG_TYPE( ZONE, INIT_ERR, ENABLED ) -LOG_TYPE( ZONE, WORLD, ENABLED ) -LOG_TYPE( ZONE, WORLD_ERR, ENABLED ) -LOG_TYPE( ZONE, WORLD_TRACE, DISABLED ) - -LOG_CATEGORY( TASKS ) -LOG_TYPE( TASKS, GLOBALLOAD, DISABLED ) -LOG_TYPE( TASKS, CLIENTLOAD, DISABLED ) -LOG_TYPE( TASKS, UPDATE, DISABLED ) -LOG_TYPE( TASKS, CLIENTSAVE, DISABLED ) -LOG_TYPE( TASKS, PACKETS, DISABLED ) -LOG_TYPE( TASKS, PROXIMITY, DISABLED ) - - -LOG_CATEGORY( TRADING ) -LOG_TYPE( TRADING, ERROR, ENABLED ) -LOG_TYPE( TRADING, CLIENT, DISABLED ) -LOG_TYPE( TRADING, NPC, DISABLED ) -LOG_TYPE( TRADING, HOLDER, DISABLED ) -LOG_TYPE( TRADING, BARTER, DISABLED ) -LOG_TYPE( TRADING, PACKETS, DISABLED ) - -LOG_CATEGORY( INVENTORY ) -LOG_TYPE( INVENTORY, ERROR, ENABLED ) -LOG_TYPE( INVENTORY, SLOTS, ENABLED ) -LOG_TYPE( INVENTORY, BANDOLIER, ENABLED ) - -LOG_CATEGORY( TRADESKILLS ) -LOG_TYPE( TRADESKILLS, IN, DISABLED ) -LOG_TYPE( TRADESKILLS, OUT, DISABLED ) -LOG_TYPE( TRADESKILLS, SQL, DISABLED ) -LOG_TYPE( TRADESKILLS, TRACE, DISABLED ) - -LOG_CATEGORY( TRIBUTE ) -LOG_TYPE( TRIBUTE, ERROR, DISABLED ) -LOG_TYPE( TRIBUTE, IN, DISABLED ) -LOG_TYPE( TRIBUTE, OUT, DISABLED ) - -LOG_CATEGORY( AA ) -LOG_TYPE( AA, ERROR, ENABLED ) -LOG_TYPE( AA, MESSAGE, DISABLED ) -LOG_TYPE( AA, IN, DISABLED ) -LOG_TYPE( AA, OUT, DISABLED ) -LOG_TYPE( AA, BONUSES, DISABLED ) - - -LOG_CATEGORY( DOORS ) -LOG_TYPE( DOORS, INFO, DISABLED ) - -LOG_CATEGORY( PETS ) -LOG_TYPE( PETS, AGGRO, DISABLED ) - -LOG_CATEGORY( COMBAT ) -LOG_TYPE( COMBAT, ATTACKS, DISABLED ) -LOG_TYPE( COMBAT, TOHIT, DISABLED ) -LOG_TYPE( COMBAT, MISSES, DISABLED ) -LOG_TYPE( COMBAT, DAMAGE, DISABLED ) -LOG_TYPE( COMBAT, HITS, DISABLED ) -LOG_TYPE( COMBAT, RANGED, DISABLED ) -LOG_TYPE( COMBAT, SPECIAL_ATTACKS, DISABLED ) -LOG_TYPE( COMBAT, PROCS, DISABLED ) - -LOG_CATEGORY( GUILDS ) -LOG_TYPE( GUILDS, ERROR, ENABLED ) -LOG_TYPE( GUILDS, ACTIONS, ENABLED ) -LOG_TYPE( GUILDS, DB, DISABLED ) -LOG_TYPE( GUILDS, PERMISSIONS, DISABLED ) -LOG_TYPE( GUILDS, REFRESH, DISABLED ) //inter-zone refresh comm -LOG_TYPE( GUILDS, IN_PACKETS, DISABLED ) -LOG_TYPE( GUILDS, OUT_PACKETS, DISABLED ) -LOG_TYPE( GUILDS, IN_PACKET_TRACE, DISABLED ) //hex dumps -LOG_TYPE( GUILDS, OUT_PACKET_TRACE, DISABLED ) //hex dumps -LOG_TYPE( GUILDS, BANK_ERROR, ENABLED ) - -LOG_CATEGORY( CLIENT ) -LOG_TYPE( CLIENT, ERROR, ENABLED ) -LOG_TYPE( CLIENT, DUELING, DISABLED ) -LOG_TYPE( CLIENT, SPELLS, DISABLED ) -LOG_TYPE( CLIENT, NET_ERR, ENABLED ) -LOG_TYPE( CLIENT, NET_IN_TRACE, DISABLED ) -LOG_TYPE( CLIENT, EXP, DISABLED ) - -LOG_CATEGORY( SKILLS ) -LOG_TYPE( SKILLS, GAIN, DISABLED ) - -LOG_CATEGORY( RULES ) -LOG_TYPE( RULES, ERROR, DISABLED ) -LOG_TYPE( RULES, CHANGE, DISABLED ) - -LOG_CATEGORY( NET ) -LOG_TYPE( NET, WORLD, ENABLED ) -LOG_TYPE( NET, OPCODES, ENABLED ) -LOG_TYPE( NET, IDENTIFY, ENABLED ) -LOG_TYPE( NET, IDENT_TRACE, ENABLED ) -LOG_TYPE( NET, STRUCTS, ENABLED ) -LOG_TYPE( NET, STRUCT_HEX, ENABLED ) -LOG_TYPE( NET, ERROR, ENABLED ) -LOG_TYPE( NET, DEBUG, DISABLED ) -LOG_TYPE( NET, APP_TRACE, DISABLED ) -LOG_TYPE( NET, APP_CREATE, DISABLED ) -LOG_TYPE( NET, APP_CREATE_HEX, DISABLED ) -LOG_TYPE( NET, NET_TRACE, DISABLED ) -LOG_TYPE( NET, NET_COMBINE, DISABLED ) -LOG_TYPE( NET, FRAGMENT, DISABLED ) -LOG_TYPE( NET, FRAGMENT_HEX, DISABLED ) -LOG_TYPE( NET, NET_CREATE, DISABLED ) -LOG_TYPE( NET, NET_CREATE_HEX, DISABLED ) -LOG_TYPE( NET, NET_ACKS, DISABLED ) -LOG_TYPE( NET, RATES, DISABLED ) - -LOG_CATEGORY( DATABASE ) - -LOG_CATEGORY( COMMON ) -LOG_TYPE( COMMON, ERROR, ENABLED ) -LOG_TYPE( COMMON, THREADS, ENABLED ) - -LOG_CATEGORY( LAUNCHER ) -LOG_TYPE( LAUNCHER, ERROR, ENABLED ) -LOG_TYPE( LAUNCHER, INIT, ENABLED ) -LOG_TYPE( LAUNCHER, STATUS, ENABLED ) -LOG_TYPE( LAUNCHER, NET, ENABLED ) -LOG_TYPE( LAUNCHER, WORLD, ENABLED ) - -LOG_CATEGORY( WORLD ) -LOG_TYPE( WORLD, CONFIG, ENABLED ) -LOG_TYPE( WORLD, INIT, ENABLED ) -LOG_TYPE( WORLD, INIT_ERR, ENABLED ) -LOG_TYPE( WORLD, CLIENT, ENABLED ) -LOG_TYPE( WORLD, ZONE, ENABLED ) -LOG_TYPE( WORLD, LS, ENABLED ) -LOG_TYPE( WORLD, CLIENT_ERR, ENABLED ) -LOG_TYPE( WORLD, ZONE_ERR, ENABLED ) -LOG_TYPE( WORLD, LS_ERR, ENABLED ) -LOG_TYPE( WORLD, SHUTDOWN, ENABLED ) -LOG_TYPE( WORLD, CLIENTLIST, DISABLED ) -LOG_TYPE( WORLD, CLIENTLIST_ERR, ENABLED ) -LOG_TYPE( WORLD, ZONELIST, ENABLED ) -LOG_TYPE( WORLD, ZONELIST_ERR, ENABLED ) -LOG_TYPE( WORLD, CLIENT_TRACE, DISABLED ) -LOG_TYPE( WORLD, ZONE_TRACE, DISABLED ) -LOG_TYPE( WORLD, LS_TRACE, DISABLED ) -LOG_TYPE( WORLD, CONSOLE, ENABLED ) -LOG_TYPE( WORLD, HTTP, ENABLED ) -LOG_TYPE( WORLD, HTTP_ERR, ENABLED ) -LOG_TYPE( WORLD, PERL, ENABLED ) -LOG_TYPE( WORLD, PERL_ERR, ENABLED ) -LOG_TYPE( WORLD, EQW, ENABLED ) -LOG_TYPE( WORLD, LAUNCH, ENABLED ) -LOG_TYPE( WORLD, LAUNCH_ERR, ENABLED ) -LOG_TYPE( WORLD, LAUNCH_TRACE, ENABLED ) - -#undef LOG_TYPE -#undef LOG_CATEGORY - diff --git a/common/loottable.h b/common/loottable.h index 8ad2f1e72..d046c0c08 100644 --- a/common/loottable.h +++ b/common/loottable.h @@ -19,6 +19,7 @@ #ifndef _EQEMU_LOOTTABLE_H #define _EQEMU_LOOTTABLE_H +#include "types.h" #pragma pack(1) struct LootTableEntries_Struct { diff --git a/common/misc.cpp b/common/misc.cpp index 61ac556f5..792dfcbab 100644 --- a/common/misc.cpp +++ b/common/misc.cpp @@ -2,7 +2,7 @@ // VS6 doesn't like the length of STL generated names: disabling #pragma warning(disable:4786) #endif -#include "debug.h" +#include "global_define.h" #include #include #include diff --git a/common/misc_functions.cpp b/common/misc_functions.cpp index 18171c0a8..dcdbad561 100644 --- a/common/misc_functions.cpp +++ b/common/misc_functions.cpp @@ -17,7 +17,7 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "misc_functions.h" #include #include diff --git a/common/misc_functions.h b/common/misc_functions.h index 610a86b04..346f5a753 100644 --- a/common/misc_functions.h +++ b/common/misc_functions.h @@ -40,7 +40,7 @@ #define VERIFY_PACKET_LENGTH(OPCode, Packet, StructName) \ if(Packet->size != sizeof(StructName)) \ { \ - _log(NET__ERROR, "Size mismatch in " #OPCode " expected %i got %i", sizeof(StructName), Packet->size); \ + Log.Out(Logs::Detail, Logs::Netcode, "Size mismatch in " #OPCode " expected %i got %i", sizeof(StructName), Packet->size); \ DumpPacket(Packet); \ return; \ } diff --git a/common/moremath.cpp b/common/moremath.cpp index 84f0b8900..bd8412458 100644 --- a/common/moremath.cpp +++ b/common/moremath.cpp @@ -15,7 +15,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" + +#include "types.h" // Quagmire - i was really surprised, but i couldnt find the equivilent standard library function signed char sign(signed int tmp) { diff --git a/common/moremath.h b/common/moremath.h index d000a54b8..8f03bcea3 100644 --- a/common/moremath.h +++ b/common/moremath.h @@ -18,6 +18,8 @@ #ifndef MOREMATH_H #define MOREMATH_H +#include "types.h" + signed char sign(signed int tmp); signed char sign(double tmp); uint32 pow32(uint32 base, uint32 exponet); diff --git a/common/mutex.cpp b/common/mutex.cpp index 7bea92b0d..1dfacb5bb 100644 --- a/common/mutex.cpp +++ b/common/mutex.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/mutex.h" #include diff --git a/common/opcode_map.cpp b/common/opcode_map.cpp index fdaaf3fa1..7c8fed281 100644 --- a/common/opcode_map.cpp +++ b/common/opcode_map.cpp @@ -1,4 +1,4 @@ -#include "debug.h" +#include "global_define.h" #include #include diff --git a/common/packet_dump_file.cpp b/common/packet_dump_file.cpp index 95a72bb60..514ea610b 100644 --- a/common/packet_dump_file.cpp +++ b/common/packet_dump_file.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include diff --git a/common/packet_functions.cpp b/common/packet_functions.cpp index 5860f9cc8..dbd10f14f 100644 --- a/common/packet_functions.cpp +++ b/common/packet_functions.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include diff --git a/common/packetfile.cpp b/common/packetfile.cpp index 699e26357..5885382ff 100644 --- a/common/packetfile.cpp +++ b/common/packetfile.cpp @@ -221,7 +221,6 @@ OldPacketFileReader::~OldPacketFileReader() { bool OldPacketFileReader::OpenFile(const char *name) { CloseFile(); - //printf("Opening packet file: %s\n", name); in = fopen(name, "rb"); if(in == NULL) { @@ -263,7 +262,6 @@ void OldPacketFileReader::CloseFile() { if(in != NULL) { fclose(in); in = NULL; - //printf("Closed packet file.\n"); } } @@ -334,7 +332,6 @@ NewPacketFileReader::~NewPacketFileReader() { bool NewPacketFileReader::OpenFile(const char *name) { CloseFile(); - //printf("Opening packet file: %s\n", name); in = fopen(name, "rb"); if(in == NULL) { @@ -376,7 +373,6 @@ void NewPacketFileReader::CloseFile() { if(in != NULL) { fclose(in); in = NULL; - //printf("Closed packet file.\n"); } } diff --git a/common/patches/patches.cpp b/common/patches/patches.cpp index b993b57dd..55c0d4e8b 100644 --- a/common/patches/patches.cpp +++ b/common/patches/patches.cpp @@ -1,5 +1,5 @@ -#include "../debug.h" +#include "../global_define.h" #include "patches.h" #include "titanium.h" diff --git a/common/patches/rof.cpp b/common/patches/rof.cpp index e6dfad3c3..3440ee3d0 100644 --- a/common/patches/rof.cpp +++ b/common/patches/rof.cpp @@ -1,7 +1,8 @@ -#include "../debug.h" +#include "../global_define.h" +#include "../eqemu_logsys.h" #include "rof.h" #include "../opcodemgr.h" -#include "../logsys.h" + #include "../eq_stream_ident.h" #include "../crc32.h" @@ -51,7 +52,7 @@ namespace RoF //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -77,7 +78,7 @@ namespace RoF - _log(NET__IDENTIFY, "Registered patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Registered patch %s", name); } void Reload() @@ -92,10 +93,10 @@ namespace RoF opfile += name; opfile += ".conf"; if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } @@ -315,7 +316,7 @@ namespace RoF if (EntryCount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); delete in; return; } @@ -550,7 +551,7 @@ namespace RoF if (ItemCount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); delete in; @@ -584,14 +585,14 @@ namespace RoF safe_delete_array(Serialized); } else { - _log(NET__ERROR, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); } } delete[] __emu_buffer; - //_log(NET__ERROR, "Sending inventory to client"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending inventory to client"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); dest->FastQueuePacket(&in, ack_req); } @@ -1028,16 +1029,16 @@ namespace RoF ENCODE(OP_GroupUpdate) { - //_log(NET__ERROR, "OP_GroupUpdate"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] OP_GroupUpdate"); EQApplicationPacket *in = *p; GroupJoin_Struct *gjs = (GroupJoin_Struct*)in->pBuffer; - //_log(NET__ERROR, "Received outgoing OP_GroupUpdate with action code %i", gjs->action); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received outgoing OP_GroupUpdate with action code %i", gjs->action); if ((gjs->action == groupActLeave) || (gjs->action == groupActDisband)) { if ((gjs->action == groupActDisband) || !strcmp(gjs->yourname, gjs->membername)) { - //_log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandYou, sizeof(structs::GroupGeneric_Struct)); @@ -1055,14 +1056,14 @@ namespace RoF return; } //if(gjs->action == groupActLeave) - // _log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + // Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandOther, sizeof(structs::GroupGeneric_Struct)); structs::GroupGeneric_Struct *ggs = (structs::GroupGeneric_Struct*)outapp->pBuffer; memcpy(ggs->name1, gjs->yourname, sizeof(ggs->name1)); memcpy(ggs->name2, gjs->membername, sizeof(ggs->name2)); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; @@ -1072,19 +1073,19 @@ namespace RoF if (in->size == sizeof(GroupUpdate2_Struct)) { // Group Update2 - //_log(NET__ERROR, "Struct is GroupUpdate2"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Struct is GroupUpdate2"); unsigned char *__emu_buffer = in->pBuffer; GroupUpdate2_Struct *gu2 = (GroupUpdate2_Struct*)__emu_buffer; - //_log(NET__ERROR, "Yourname is %s", gu2->yourname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Yourname is %s", gu2->yourname); int MemberCount = 1; int PacketLength = 8 + strlen(gu2->leadersname) + 1 + 22 + strlen(gu2->yourname) + 1; for (int i = 0; i < 5; ++i) { - //_log(NET__ERROR, "Membername[%i] is %s", i, gu2->membername[i]); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Membername[%i] is %s", i, gu2->membername[i]); if (gu2->membername[i][0] != '\0') { PacketLength += (22 + strlen(gu2->membername[i]) + 1); @@ -1092,7 +1093,7 @@ namespace RoF } } - //_log(NET__ERROR, "Leadername is %s", gu2->leadersname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Leadername is %s", gu2->leadersname); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupUpdateB, PacketLength); @@ -1138,7 +1139,7 @@ namespace RoF VARSTRUCT_ENCODE_TYPE(uint16, Buffer, 0); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); outapp = new EQApplicationPacket(OP_GroupLeadershipAAUpdate, sizeof(GroupLeadershipAAUpdate_Struct)); @@ -1154,7 +1155,7 @@ namespace RoF return; } - //_log(NET__ERROR, "Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); ENCODE_LENGTH_EXACT(GroupJoin_Struct); SETUP_DIRECT_ENCODE(GroupJoin_Struct, structs::GroupJoin_Struct); @@ -1166,7 +1167,7 @@ namespace RoF GLAAus->NPCMarkerID = emu->NPCMarkerID; memcpy(&GLAAus->LeaderAAs, &emu->leader_aas, sizeof(GLAAus->LeaderAAs)); - //_hex(NET__ERROR, __packet->pBuffer, __packet->size); + //Log.Hex(Logs::Netcode, __packet->pBuffer, __packet->size); FINISH_ENCODE(); @@ -1462,7 +1463,7 @@ namespace RoF char *serialized = SerializeItem((ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0); if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; return; } @@ -2632,7 +2633,7 @@ namespace RoF outapp->WriteUInt8(0); // Unknown - _log(NET__STRUCTS, "Player Profile Packet is %i bytes", outapp->GetWritePosition()); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Player Profile Packet is %i bytes", outapp->GetWritePosition()); unsigned char *NewBuffer = new unsigned char[outapp->GetWritePosition()]; memcpy(NewBuffer, outapp->pBuffer, outapp->GetWritePosition()); @@ -2643,7 +2644,7 @@ namespace RoF outapp->WriteUInt32(outapp->size - 9); CRC32::SetEQChecksum(outapp->pBuffer, outapp->size - 1, 8); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp, ack_req); delete in; @@ -2885,8 +2886,6 @@ namespace RoF } } - _hex(NET__ERROR, eq, sizeof(structs::SendAA_Struct) + emu->total_abilities*sizeof(structs::AA_Ability)); - FINISH_ENCODE(); } @@ -3453,7 +3452,7 @@ namespace RoF if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); delete in; return; } @@ -3699,7 +3698,7 @@ namespace RoF VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, x); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; } @@ -3786,16 +3785,16 @@ namespace RoF //determine and verify length int entrycount = in->size / sizeof(Spawn_Struct); if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); delete in; return; } - //_log(NET__STRUCTS, "Spawn name is [%s]", emu->name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn name is [%s]", emu->name); emu = (Spawn_Struct *)__emu_buffer; - //_log(NET__STRUCTS, "Spawn packet size is %i, entries = %i", in->size, entrycount); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn packet size is %i, entries = %i", in->size, entrycount); char *Buffer = (char *)in->pBuffer, *BufferStart; @@ -4034,10 +4033,10 @@ namespace RoF Buffer += 29; if (Buffer != (BufferStart + PacketSize)) { - _log(NET__ERROR, "SPAWN ENCODE LOGIC PROBLEM: Buffer pointer is now %i from end", Buffer - (BufferStart + PacketSize)); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] SPAWN ENCODE LOGIC PROBLEM: Buffer pointer is now %i from end", Buffer - (BufferStart + PacketSize)); } - //_log(NET__ERROR, "Sending zone spawn for %s packet is %i bytes", emu->name, outapp->size); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending zone spawn for %s packet is %i bytes", emu->name, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp, ack_req); } @@ -4451,8 +4450,8 @@ namespace RoF DECODE(OP_GroupDisband) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_Disband"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_Disband"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupGeneric_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupGeneric_Struct); @@ -4465,8 +4464,8 @@ namespace RoF DECODE(OP_GroupFollow) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -4479,8 +4478,8 @@ namespace RoF DECODE(OP_GroupFollow2) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow2"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow2"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -4493,8 +4492,8 @@ namespace RoF DECODE(OP_GroupInvite) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupInvite"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupInvite_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupInvite_Struct); @@ -4506,7 +4505,7 @@ namespace RoF DECODE(OP_GroupInvite2) { - //_log(NET__ERROR, "Received incoming OP_GroupInvite2. Forwarding"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite2. Forwarding"); DECODE_FORWARD(OP_GroupInvite); } @@ -4650,14 +4649,12 @@ namespace RoF DECODE_LENGTH_EXACT(structs::MoveItem_Struct); SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - //_log(NET__ERROR, "Moved item from %u to %u", eq->from_slot.MainSlot, eq->to_slot.MainSlot); - _log(NET__ERROR, "MoveItem SlotType from %i to %i, MainSlot from %i to %i, SubSlot from %i to %i, AugSlot from %i to %i, Unknown01 from %i to %i, Number %u", eq->from_slot.SlotType, eq->to_slot.SlotType, eq->from_slot.MainSlot, eq->to_slot.MainSlot, eq->from_slot.SubSlot, eq->to_slot.SubSlot, eq->from_slot.AugSlot, eq->to_slot.AugSlot, eq->from_slot.Unknown01, eq->to_slot.Unknown01, eq->number_in_stack); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Moved item from %u to %u", eq->from_slot.MainSlot, eq->to_slot.MainSlot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] MoveItem SlotType from %i to %i, MainSlot from %i to %i, SubSlot from %i to %i, AugSlot from %i to %i, Unknown01 from %i to %i, Number %u", eq->from_slot.SlotType, eq->to_slot.SlotType, eq->from_slot.MainSlot, eq->to_slot.MainSlot, eq->from_slot.SubSlot, eq->to_slot.SubSlot, eq->from_slot.AugSlot, eq->to_slot.AugSlot, eq->from_slot.Unknown01, eq->to_slot.Unknown01, eq->number_in_stack); emu->from_slot = RoFToServerSlot(eq->from_slot); emu->to_slot = RoFToServerSlot(eq->to_slot); IN(number_in_stack); - _hex(NET__ERROR, eq, sizeof(structs::MoveItem_Struct)); - FINISH_DIRECT_DECODE(); } @@ -4980,7 +4977,7 @@ namespace RoF std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary); const Item_Struct *item = inst->GetUnscaledItem(); - //_log(NET__ERROR, "Serialize called for: %s", item->Name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Serialize called for: %s", item->Name); RoF::structs::ItemSerializationHeader hdr; @@ -5089,7 +5086,7 @@ namespace RoF } ss.write((const char*)&null_term, sizeof(uint8)); - //_log(NET__ERROR, "ItemBody struct is %i bytes", sizeof(RoF::structs::ItemBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody struct is %i bytes", sizeof(RoF::structs::ItemBodyStruct)); RoF::structs::ItemBodyStruct ibs; memset(&ibs, 0, sizeof(RoF::structs::ItemBodyStruct)); @@ -5196,7 +5193,7 @@ namespace RoF ss.write((const char*)&null_term, sizeof(uint8)); } - //_log(NET__ERROR, "ItemBody secondary struct is %i bytes", sizeof(RoF::structs::ItemSecondaryBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody secondary struct is %i bytes", sizeof(RoF::structs::ItemSecondaryBodyStruct)); RoF::structs::ItemSecondaryBodyStruct isbs; memset(&isbs, 0, sizeof(RoF::structs::ItemSecondaryBodyStruct)); @@ -5237,7 +5234,7 @@ namespace RoF ss.write((const char*)&null_term, sizeof(uint8)); } - //_log(NET__ERROR, "ItemBody tertiary struct is %i bytes", sizeof(RoF::structs::ItemTertiaryBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody tertiary struct is %i bytes", sizeof(RoF::structs::ItemTertiaryBodyStruct)); RoF::structs::ItemTertiaryBodyStruct itbs; memset(&itbs, 0, sizeof(RoF::structs::ItemTertiaryBodyStruct)); @@ -5276,7 +5273,7 @@ namespace RoF // Effect Structures Broken down to allow variable length strings for effect names int32 effect_unknown = 0; - //_log(NET__ERROR, "ItemBody Click effect struct is %i bytes", sizeof(RoF::structs::ClickEffectStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody Click effect struct is %i bytes", sizeof(RoF::structs::ClickEffectStruct)); RoF::structs::ClickEffectStruct ices; memset(&ices, 0, sizeof(RoF::structs::ClickEffectStruct)); @@ -5303,7 +5300,7 @@ namespace RoF ss.write((const char*)&effect_unknown, sizeof(int32)); // clickunk7 - //_log(NET__ERROR, "ItemBody proc effect struct is %i bytes", sizeof(RoF::structs::ProcEffectStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody proc effect struct is %i bytes", sizeof(RoF::structs::ProcEffectStruct)); RoF::structs::ProcEffectStruct ipes; memset(&ipes, 0, sizeof(RoF::structs::ProcEffectStruct)); @@ -5327,7 +5324,7 @@ namespace RoF ss.write((const char*)&effect_unknown, sizeof(int32)); // unknown5 - //_log(NET__ERROR, "ItemBody worn effect struct is %i bytes", sizeof(RoF::structs::WornEffectStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody worn effect struct is %i bytes", sizeof(RoF::structs::WornEffectStruct)); RoF::structs::WornEffectStruct iwes; memset(&iwes, 0, sizeof(RoF::structs::WornEffectStruct)); @@ -5418,7 +5415,7 @@ namespace RoF ss.write((const char*)&effect_unknown, sizeof(int32)); // unknown6 // End of Effects - //_log(NET__ERROR, "ItemBody Quaternary effect struct is %i bytes", sizeof(RoF::structs::ItemQuaternaryBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody Quaternary effect struct is %i bytes", sizeof(RoF::structs::ItemQuaternaryBodyStruct)); RoF::structs::ItemQuaternaryBodyStruct iqbs; memset(&iqbs, 0, sizeof(RoF::structs::ItemQuaternaryBodyStruct)); @@ -5608,7 +5605,7 @@ namespace RoF RoFSlot.MainSlot = TempSlot; } - _log(NET__ERROR, "Convert Server Slot %i to RoF Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoFSlot.SlotType, RoFSlot.Unknown02, RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert Server Slot %i to RoF Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoFSlot.SlotType, RoFSlot.Unknown02, RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01); return RoFSlot; } @@ -5649,7 +5646,7 @@ namespace RoF RoFSlot.SubSlot = TempSlot - ((RoFSlot.MainSlot + 2) * EmuConstants::ITEM_CONTAINER_SIZE); } - _log(NET__ERROR, "Convert Server Slot %i to RoF Slots: Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert Server Slot %i to RoF Slots: Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01); return RoFSlot; } @@ -5754,7 +5751,7 @@ namespace RoF ServerSlot = INVALID_INDEX; } - _log(NET__ERROR, "Convert RoF Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoFSlot.SlotType, RoFSlot.Unknown02, RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01, ServerSlot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert RoF Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoFSlot.SlotType, RoFSlot.Unknown02, RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01, ServerSlot); return ServerSlot; } @@ -5789,7 +5786,7 @@ namespace RoF ServerSlot = TempSlot; } - _log(NET__ERROR, "Convert RoF Slots: Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01, ServerSlot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert RoF Slots: Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoFSlot.MainSlot, RoFSlot.SubSlot, RoFSlot.AugSlot, RoFSlot.Unknown01, ServerSlot); return ServerSlot; } diff --git a/common/patches/rof2.cpp b/common/patches/rof2.cpp index 59761c2b9..8c93cc4c7 100644 --- a/common/patches/rof2.cpp +++ b/common/patches/rof2.cpp @@ -1,7 +1,8 @@ -#include "../debug.h" +#include "../global_define.h" +#include "../eqemu_logsys.h" #include "rof2.h" #include "../opcodemgr.h" -#include "../logsys.h" + #include "../eq_stream_ident.h" #include "../crc32.h" @@ -51,7 +52,7 @@ namespace RoF2 //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -77,7 +78,7 @@ namespace RoF2 - _log(NET__IDENTIFY, "Registered patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Registered patch %s", name); } void Reload() @@ -92,10 +93,10 @@ namespace RoF2 opfile += name; opfile += ".conf"; if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } @@ -381,7 +382,7 @@ namespace RoF2 if (EntryCount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); delete in; return; } @@ -616,7 +617,7 @@ namespace RoF2 if (ItemCount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); delete in; @@ -650,14 +651,14 @@ namespace RoF2 safe_delete_array(Serialized); } else { - _log(NET__ERROR, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); } } delete[] __emu_buffer; - //_log(NET__ERROR, "Sending inventory to client"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending inventory to client"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); dest->FastQueuePacket(&in, ack_req); } @@ -1094,16 +1095,16 @@ namespace RoF2 ENCODE(OP_GroupUpdate) { - //_log(NET__ERROR, "OP_GroupUpdate"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] OP_GroupUpdate"); EQApplicationPacket *in = *p; GroupJoin_Struct *gjs = (GroupJoin_Struct*)in->pBuffer; - //_log(NET__ERROR, "Received outgoing OP_GroupUpdate with action code %i", gjs->action); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received outgoing OP_GroupUpdate with action code %i", gjs->action); if ((gjs->action == groupActLeave) || (gjs->action == groupActDisband)) { if ((gjs->action == groupActDisband) || !strcmp(gjs->yourname, gjs->membername)) { - //_log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandYou, sizeof(structs::GroupGeneric_Struct)); @@ -1121,14 +1122,14 @@ namespace RoF2 return; } //if(gjs->action == groupActLeave) - // _log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + // Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandOther, sizeof(structs::GroupGeneric_Struct)); structs::GroupGeneric_Struct *ggs = (structs::GroupGeneric_Struct*)outapp->pBuffer; memcpy(ggs->name1, gjs->yourname, sizeof(ggs->name1)); memcpy(ggs->name2, gjs->membername, sizeof(ggs->name2)); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; @@ -1138,19 +1139,19 @@ namespace RoF2 if (in->size == sizeof(GroupUpdate2_Struct)) { // Group Update2 - //_log(NET__ERROR, "Struct is GroupUpdate2"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Struct is GroupUpdate2"); unsigned char *__emu_buffer = in->pBuffer; GroupUpdate2_Struct *gu2 = (GroupUpdate2_Struct*)__emu_buffer; - //_log(NET__ERROR, "Yourname is %s", gu2->yourname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Yourname is %s", gu2->yourname); int MemberCount = 1; int PacketLength = 8 + strlen(gu2->leadersname) + 1 + 22 + strlen(gu2->yourname) + 1; for (int i = 0; i < 5; ++i) { - //_log(NET__ERROR, "Membername[%i] is %s", i, gu2->membername[i]); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Membername[%i] is %s", i, gu2->membername[i]); if (gu2->membername[i][0] != '\0') { PacketLength += (22 + strlen(gu2->membername[i]) + 1); @@ -1158,7 +1159,7 @@ namespace RoF2 } } - //_log(NET__ERROR, "Leadername is %s", gu2->leadersname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Leadername is %s", gu2->leadersname); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupUpdateB, PacketLength); @@ -1204,7 +1205,7 @@ namespace RoF2 VARSTRUCT_ENCODE_TYPE(uint16, Buffer, 0); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); outapp = new EQApplicationPacket(OP_GroupLeadershipAAUpdate, sizeof(GroupLeadershipAAUpdate_Struct)); @@ -1220,7 +1221,7 @@ namespace RoF2 return; } - //_log(NET__ERROR, "Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); ENCODE_LENGTH_EXACT(GroupJoin_Struct); SETUP_DIRECT_ENCODE(GroupJoin_Struct, structs::GroupJoin_Struct); @@ -1232,7 +1233,7 @@ namespace RoF2 GLAAus->NPCMarkerID = emu->NPCMarkerID; memcpy(&GLAAus->LeaderAAs, &emu->leader_aas, sizeof(GLAAus->LeaderAAs)); - //_hex(NET__ERROR, __packet->pBuffer, __packet->size); + //Log.Hex(Logs::Netcode, __packet->pBuffer, __packet->size); FINISH_ENCODE(); @@ -1528,7 +1529,7 @@ namespace RoF2 char *serialized = SerializeItem((ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0, old_item_pkt->PacketType); if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; return; } @@ -2716,7 +2717,7 @@ namespace RoF2 // Think we need 1 byte of padding at the end outapp->WriteUInt8(0); // Unknown - _log(NET__STRUCTS, "Player Profile Packet is %i bytes", outapp->GetWritePosition()); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Player Profile Packet is %i bytes", outapp->GetWritePosition()); unsigned char *NewBuffer = new unsigned char[outapp->GetWritePosition()]; memcpy(NewBuffer, outapp->pBuffer, outapp->GetWritePosition()); @@ -2727,7 +2728,7 @@ namespace RoF2 outapp->WriteUInt32(outapp->size - 9); CRC32::SetEQChecksum(outapp->pBuffer, outapp->size - 1, 8); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp, ack_req); delete in; @@ -2969,8 +2970,6 @@ namespace RoF2 } } - _hex(NET__ERROR, eq, sizeof(structs::SendAA_Struct) + emu->total_abilities*sizeof(structs::AA_Ability)); - FINISH_ENCODE(); } @@ -3519,7 +3518,7 @@ namespace RoF2 if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); delete in; return; } @@ -3766,7 +3765,7 @@ namespace RoF2 VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, x); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; } @@ -3853,16 +3852,16 @@ namespace RoF2 //determine and verify length int entrycount = in->size / sizeof(Spawn_Struct); if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); delete in; return; } - //_log(NET__STRUCTS, "Spawn name is [%s]", emu->name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn name is [%s]", emu->name); emu = (Spawn_Struct *)__emu_buffer; - //_log(NET__STRUCTS, "Spawn packet size is %i, entries = %i", in->size, entrycount); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn packet size is %i, entries = %i", in->size, entrycount); char *Buffer = (char *)in->pBuffer, *BufferStart; @@ -4105,10 +4104,10 @@ namespace RoF2 Buffer += 29; if (Buffer != (BufferStart + PacketSize)) { - _log(NET__ERROR, "SPAWN ENCODE LOGIC PROBLEM: Buffer pointer is now %i from end", Buffer - (BufferStart + PacketSize)); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] SPAWN ENCODE LOGIC PROBLEM: Buffer pointer is now %i from end", Buffer - (BufferStart + PacketSize)); } - //_log(NET__ERROR, "Sending zone spawn for %s packet is %i bytes", emu->name, outapp->size); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending zone spawn for %s packet is %i bytes", emu->name, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp, ack_req); } @@ -4523,8 +4522,8 @@ namespace RoF2 DECODE(OP_GroupDisband) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_Disband"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_Disband"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupGeneric_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupGeneric_Struct); @@ -4537,8 +4536,8 @@ namespace RoF2 DECODE(OP_GroupFollow) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -4551,8 +4550,8 @@ namespace RoF2 DECODE(OP_GroupFollow2) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow2"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow2"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -4565,8 +4564,8 @@ namespace RoF2 DECODE(OP_GroupInvite) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupInvite"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupInvite_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupInvite_Struct); @@ -4578,7 +4577,7 @@ namespace RoF2 DECODE(OP_GroupInvite2) { - //_log(NET__ERROR, "Received incoming OP_GroupInvite2. Forwarding"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite2. Forwarding"); DECODE_FORWARD(OP_GroupInvite); } @@ -4721,14 +4720,11 @@ namespace RoF2 DECODE_LENGTH_EXACT(structs::MoveItem_Struct); SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - //_log(NET__ERROR, "Moved item from %u to %u", eq->from_slot.MainSlot, eq->to_slot.MainSlot); - _log(NET__ERROR, "MoveItem SlotType from %i to %i, MainSlot from %i to %i, SubSlot from %i to %i, AugSlot from %i to %i, Unknown01 from %i to %i, Number %u", eq->from_slot.SlotType, eq->to_slot.SlotType, eq->from_slot.MainSlot, eq->to_slot.MainSlot, eq->from_slot.SubSlot, eq->to_slot.SubSlot, eq->from_slot.AugSlot, eq->to_slot.AugSlot, eq->from_slot.Unknown01, eq->to_slot.Unknown01, eq->number_in_stack); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] MoveItem SlotType from %i to %i, MainSlot from %i to %i, SubSlot from %i to %i, AugSlot from %i to %i, Unknown01 from %i to %i, Number %u", eq->from_slot.SlotType, eq->to_slot.SlotType, eq->from_slot.MainSlot, eq->to_slot.MainSlot, eq->from_slot.SubSlot, eq->to_slot.SubSlot, eq->from_slot.AugSlot, eq->to_slot.AugSlot, eq->from_slot.Unknown01, eq->to_slot.Unknown01, eq->number_in_stack); emu->from_slot = RoF2ToServerSlot(eq->from_slot); emu->to_slot = RoF2ToServerSlot(eq->to_slot); IN(number_in_stack); - _hex(NET__ERROR, eq, sizeof(structs::MoveItem_Struct)); - FINISH_DIRECT_DECODE(); } @@ -5051,7 +5047,7 @@ namespace RoF2 std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary); const Item_Struct *item = inst->GetUnscaledItem(); - //_log(NET__ERROR, "Serialize called for: %s", item->Name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Serialize called for: %s", item->Name); RoF2::structs::ItemSerializationHeader hdr; @@ -5159,7 +5155,7 @@ namespace RoF2 } ss.write((const char*)&null_term, sizeof(uint8)); - //_log(NET__ERROR, "ItemBody struct is %i bytes", sizeof(RoF2::structs::ItemBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody struct is %i bytes", sizeof(RoF2::structs::ItemBodyStruct)); RoF2::structs::ItemBodyStruct ibs; memset(&ibs, 0, sizeof(RoF2::structs::ItemBodyStruct)); @@ -5266,7 +5262,7 @@ namespace RoF2 ss.write((const char*)&null_term, sizeof(uint8)); } - //_log(NET__ERROR, "ItemBody secondary struct is %i bytes", sizeof(RoF2::structs::ItemSecondaryBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody secondary struct is %i bytes", sizeof(RoF2::structs::ItemSecondaryBodyStruct)); RoF2::structs::ItemSecondaryBodyStruct isbs; memset(&isbs, 0, sizeof(RoF2::structs::ItemSecondaryBodyStruct)); @@ -5307,7 +5303,7 @@ namespace RoF2 ss.write((const char*)&null_term, sizeof(uint8)); } - //_log(NET__ERROR, "ItemBody tertiary struct is %i bytes", sizeof(RoF2::structs::ItemTertiaryBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody tertiary struct is %i bytes", sizeof(RoF2::structs::ItemTertiaryBodyStruct)); RoF2::structs::ItemTertiaryBodyStruct itbs; memset(&itbs, 0, sizeof(RoF2::structs::ItemTertiaryBodyStruct)); @@ -5346,7 +5342,7 @@ namespace RoF2 // Effect Structures Broken down to allow variable length strings for effect names int32 effect_unknown = 0; - //_log(NET__ERROR, "ItemBody Click effect struct is %i bytes", sizeof(RoF2::structs::ClickEffectStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody Click effect struct is %i bytes", sizeof(RoF2::structs::ClickEffectStruct)); RoF2::structs::ClickEffectStruct ices; memset(&ices, 0, sizeof(RoF2::structs::ClickEffectStruct)); @@ -5373,7 +5369,7 @@ namespace RoF2 ss.write((const char*)&effect_unknown, sizeof(int32)); // clickunk7 - //_log(NET__ERROR, "ItemBody proc effect struct is %i bytes", sizeof(RoF2::structs::ProcEffectStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody proc effect struct is %i bytes", sizeof(RoF2::structs::ProcEffectStruct)); RoF2::structs::ProcEffectStruct ipes; memset(&ipes, 0, sizeof(RoF2::structs::ProcEffectStruct)); @@ -5397,7 +5393,7 @@ namespace RoF2 ss.write((const char*)&effect_unknown, sizeof(int32)); // unknown5 - //_log(NET__ERROR, "ItemBody worn effect struct is %i bytes", sizeof(RoF2::structs::WornEffectStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody worn effect struct is %i bytes", sizeof(RoF2::structs::WornEffectStruct)); RoF2::structs::WornEffectStruct iwes; memset(&iwes, 0, sizeof(RoF2::structs::WornEffectStruct)); @@ -5488,7 +5484,7 @@ namespace RoF2 ss.write((const char*)&effect_unknown, sizeof(int32)); // unknown6 // End of Effects - //_log(NET__ERROR, "ItemBody Quaternary effect struct is %i bytes", sizeof(RoF2::structs::ItemQuaternaryBodyStruct)); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] ItemBody Quaternary effect struct is %i bytes", sizeof(RoF2::structs::ItemQuaternaryBodyStruct)); RoF2::structs::ItemQuaternaryBodyStruct iqbs; memset(&iqbs, 0, sizeof(RoF2::structs::ItemQuaternaryBodyStruct)); @@ -5699,7 +5695,7 @@ namespace RoF2 RoF2Slot.MainSlot = TempSlot; } - _log(NET__ERROR, "Convert Server Slot %i to RoF2 Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoF2Slot.SlotType, RoF2Slot.Unknown02, RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert Server Slot %i to RoF2 Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoF2Slot.SlotType, RoF2Slot.Unknown02, RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01); return RoF2Slot; } @@ -5740,7 +5736,7 @@ namespace RoF2 RoF2Slot.SubSlot = TempSlot - ((RoF2Slot.MainSlot + 2) * EmuConstants::ITEM_CONTAINER_SIZE); } - _log(NET__ERROR, "Convert Server Slot %i to RoF2 Slots: Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert Server Slot %i to RoF2 Slots: Main %i, Sub %i, Aug %i, Unk1 %i", ServerSlot, RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01); return RoF2Slot; } @@ -5849,7 +5845,7 @@ namespace RoF2 ServerSlot = RoF2Slot.MainSlot + EmuConstants::CORPSE_BEGIN; } - _log(NET__ERROR, "Convert RoF2 Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoF2Slot.SlotType, RoF2Slot.Unknown02, RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01, ServerSlot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert RoF2 Slots: Type %i, Unk2 %i, Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoF2Slot.SlotType, RoF2Slot.Unknown02, RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01, ServerSlot); return ServerSlot; } @@ -5884,7 +5880,7 @@ namespace RoF2 ServerSlot = TempSlot; } - _log(NET__ERROR, "Convert RoF2 Slots: Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01, ServerSlot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Convert RoF2 Slots: Main %i, Sub %i, Aug %i, Unk1 %i to Server Slot %i", RoF2Slot.MainSlot, RoF2Slot.SubSlot, RoF2Slot.AugSlot, RoF2Slot.Unknown01, ServerSlot); return ServerSlot; } diff --git a/common/patches/sod.cpp b/common/patches/sod.cpp index 050701d3a..7a67e56c3 100644 --- a/common/patches/sod.cpp +++ b/common/patches/sod.cpp @@ -1,7 +1,8 @@ -#include "../debug.h" +#include "../global_define.h" +#include "../eqemu_logsys.h" #include "sod.h" #include "../opcodemgr.h" -#include "../logsys.h" + #include "../eq_stream_ident.h" #include "../crc32.h" @@ -49,7 +50,7 @@ namespace SoD //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -75,7 +76,7 @@ namespace SoD - _log(NET__IDENTIFY, "Registered patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Registered patch %s", name); } void Reload() @@ -90,10 +91,10 @@ namespace SoD opfile += name; opfile += ".conf"; if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } @@ -246,7 +247,7 @@ namespace SoD if (EntryCount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); delete in; return; } @@ -358,7 +359,7 @@ namespace SoD if (ItemCount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); delete in; @@ -390,14 +391,14 @@ namespace SoD } else { - _log(NET__ERROR, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); } } delete[] __emu_buffer; - //_log(NET__ERROR, "Sending inventory to client"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending inventory to client"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); dest->FastQueuePacket(&in, ack_req); } @@ -759,16 +760,16 @@ namespace SoD ENCODE(OP_GroupUpdate) { - //_log(NET__ERROR, "OP_GroupUpdate"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] OP_GroupUpdate"); EQApplicationPacket *in = *p; GroupJoin_Struct *gjs = (GroupJoin_Struct*)in->pBuffer; - //_log(NET__ERROR, "Received outgoing OP_GroupUpdate with action code %i", gjs->action); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received outgoing OP_GroupUpdate with action code %i", gjs->action); if ((gjs->action == groupActLeave) || (gjs->action == groupActDisband)) { if ((gjs->action == groupActDisband) || !strcmp(gjs->yourname, gjs->membername)) { - //_log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandYou, sizeof(structs::GroupGeneric_Struct)); @@ -786,14 +787,14 @@ namespace SoD return; } //if(gjs->action == groupActLeave) - // _log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + // Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandOther, sizeof(structs::GroupGeneric_Struct)); structs::GroupGeneric_Struct *ggs = (structs::GroupGeneric_Struct*)outapp->pBuffer; memcpy(ggs->name1, gjs->yourname, sizeof(ggs->name1)); memcpy(ggs->name2, gjs->membername, sizeof(ggs->name2)); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; @@ -803,19 +804,19 @@ namespace SoD if (in->size == sizeof(GroupUpdate2_Struct)) { // Group Update2 - //_log(NET__ERROR, "Struct is GroupUpdate2"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Struct is GroupUpdate2"); unsigned char *__emu_buffer = in->pBuffer; GroupUpdate2_Struct *gu2 = (GroupUpdate2_Struct*)__emu_buffer; - //_log(NET__ERROR, "Yourname is %s", gu2->yourname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Yourname is %s", gu2->yourname); int MemberCount = 1; int PacketLength = 8 + strlen(gu2->leadersname) + 1 + 22 + strlen(gu2->yourname) + 1; for (int i = 0; i < 5; ++i) { - //_log(NET__ERROR, "Membername[%i] is %s", i, gu2->membername[i]); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Membername[%i] is %s", i, gu2->membername[i]); if (gu2->membername[i][0] != '\0') { PacketLength += (22 + strlen(gu2->membername[i]) + 1); @@ -823,7 +824,7 @@ namespace SoD } } - //_log(NET__ERROR, "Leadername is %s", gu2->leadersname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Leadername is %s", gu2->leadersname); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupUpdateB, PacketLength); char *Buffer = (char *)outapp->pBuffer; @@ -868,7 +869,7 @@ namespace SoD VARSTRUCT_ENCODE_TYPE(uint16, Buffer, 0); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); outapp = new EQApplicationPacket(OP_GroupLeadershipAAUpdate, sizeof(GroupLeadershipAAUpdate_Struct)); @@ -883,7 +884,7 @@ namespace SoD return; } - //_log(NET__ERROR, "Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); ENCODE_LENGTH_EXACT(GroupJoin_Struct); SETUP_DIRECT_ENCODE(GroupJoin_Struct, structs::GroupJoin_Struct); @@ -895,7 +896,7 @@ namespace SoD GLAAus->NPCMarkerID = emu->NPCMarkerID; memcpy(&GLAAus->LeaderAAs, &emu->leader_aas, sizeof(GLAAus->LeaderAAs)); - //_hex(NET__ERROR, __packet->pBuffer, __packet->size); + //Log.Hex(Logs::Netcode, __packet->pBuffer, __packet->size); FINISH_ENCODE(); @@ -1043,7 +1044,7 @@ namespace SoD char *serialized = SerializeItem((ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0); if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; return; } @@ -2237,7 +2238,7 @@ namespace SoD if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); delete in; return; } @@ -2417,7 +2418,7 @@ namespace SoD VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, x); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; } @@ -2492,16 +2493,16 @@ namespace SoD //determine and verify length int entrycount = in->size / sizeof(Spawn_Struct); if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); delete in; return; } - //_log(NET__STRUCTS, "Spawn name is [%s]", emu->name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn name is [%s]", emu->name); emu = (Spawn_Struct *)__emu_buffer; - //_log(NET__STRUCTS, "Spawn packet size is %i, entries = %i", in->size, entrycount); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn packet size is %i, entries = %i", in->size, entrycount); char *Buffer = (char *)in->pBuffer; @@ -3113,8 +3114,8 @@ namespace SoD DECODE(OP_GroupDisband) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_Disband"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_Disband"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupGeneric_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupGeneric_Struct); @@ -3127,8 +3128,8 @@ namespace SoD DECODE(OP_GroupFollow) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -3141,8 +3142,8 @@ namespace SoD DECODE(OP_GroupFollow2) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow2"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow2"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -3155,8 +3156,8 @@ namespace SoD DECODE(OP_GroupInvite) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupInvite"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupInvite_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupInvite_Struct); @@ -3168,7 +3169,7 @@ namespace SoD DECODE(OP_GroupInvite2) { - //_log(NET__ERROR, "Received incoming OP_GroupInvite2. Forwarding"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite2. Forwarding"); DECODE_FORWARD(OP_GroupInvite); } @@ -3241,7 +3242,7 @@ namespace SoD DECODE_LENGTH_EXACT(structs::MoveItem_Struct); SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - _log(NET__ERROR, "Moved item from %u to %u", eq->from_slot, eq->to_slot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Moved item from %u to %u", eq->from_slot, eq->to_slot); emu->from_slot = SoDToServerSlot(eq->from_slot); emu->to_slot = SoDToServerSlot(eq->to_slot); @@ -3534,7 +3535,7 @@ namespace SoD std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary); const Item_Struct *item = inst->GetUnscaledItem(); - //_log(NET__ERROR, "Serialize called for: %s", item->Name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Serialize called for: %s", item->Name); SoD::structs::ItemSerializationHeader hdr; hdr.stacksize = stackable ? charges : 1; hdr.unknown004 = 0; diff --git a/common/patches/sof.cpp b/common/patches/sof.cpp index 1aa0a05bb..094023317 100644 --- a/common/patches/sof.cpp +++ b/common/patches/sof.cpp @@ -1,7 +1,8 @@ -#include "../debug.h" +#include "../global_define.h" +#include "../eqemu_logsys.h" #include "sof.h" #include "../opcodemgr.h" -#include "../logsys.h" + #include "../eq_stream_ident.h" #include "../crc32.h" @@ -49,7 +50,7 @@ namespace SoF //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -75,7 +76,7 @@ namespace SoF - _log(NET__IDENTIFY, "Registered patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Registered patch %s", name); } void Reload() @@ -90,10 +91,10 @@ namespace SoF opfile += name; opfile += ".conf"; if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } @@ -213,7 +214,7 @@ namespace SoF //determine and verify length int entrycount = in->size / sizeof(BazaarSearchResults_Struct); if (entrycount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); delete in; return; @@ -336,7 +337,7 @@ namespace SoF if (ItemCount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); delete in; @@ -370,14 +371,14 @@ namespace SoF } else { - _log(NET__ERROR, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); } } delete[] __emu_buffer; - //_log(NET__ERROR, "Sending inventory to client"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending inventory to client"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); dest->FastQueuePacket(&in, ack_req); } @@ -842,7 +843,7 @@ namespace SoF char *serialized = SerializeItem((ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0); if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; return; } @@ -1836,7 +1837,7 @@ namespace SoF if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); delete in; return; } @@ -2016,7 +2017,7 @@ namespace SoF //determine and verify length int entrycount = in->size / sizeof(Spawn_Struct); if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); delete in; return; } @@ -2225,8 +2226,8 @@ namespace SoF //kill off the emu structure and send the eq packet. delete[] __emu_buffer; - //_log(NET__ERROR, "Sending zone spawns"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending zone spawns"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); dest->FastQueuePacket(&in, ack_req); } @@ -2579,7 +2580,7 @@ namespace SoF DECODE_LENGTH_EXACT(structs::MoveItem_Struct); SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - _log(NET__ERROR, "Moved item from %u to %u", eq->from_slot, eq->to_slot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Moved item from %u to %u", eq->from_slot, eq->to_slot); emu->from_slot = SoFToServerSlot(eq->from_slot); emu->to_slot = SoFToServerSlot(eq->to_slot); @@ -2858,7 +2859,7 @@ namespace SoF std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary); const Item_Struct *item = inst->GetUnscaledItem(); - //_log(NET__ERROR, "Serialize called for: %s", item->Name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Serialize called for: %s", item->Name); SoF::structs::ItemSerializationHeader hdr; hdr.stacksize = stackable ? charges : 1; hdr.unknown004 = 0; diff --git a/common/patches/ss_define.h b/common/patches/ss_define.h index 23d5dbbad..aaa41db23 100644 --- a/common/patches/ss_define.h +++ b/common/patches/ss_define.h @@ -64,16 +64,14 @@ //check length of packet before decoding. Call before setup. #define ENCODE_LENGTH_EXACT(struct_) \ if((*p)->size != sizeof(struct_)) { \ - _log(NET__STRUCTS, "Wrong size on outbound %s (" #struct_ "): Got %d, expected %d", opcodes->EmuToName((*p)->GetOpcode()), (*p)->size, sizeof(struct_)); \ - _hex(NET__STRUCT_HEX, (*p)->pBuffer, (*p)->size); \ + Log.Out(Logs::Detail, Logs::Netcode, "Wrong size on outbound %s (" #struct_ "): Got %d, expected %d", opcodes->EmuToName((*p)->GetOpcode()), (*p)->size, sizeof(struct_)); \ delete *p; \ *p = nullptr; \ return; \ } #define ENCODE_LENGTH_ATLEAST(struct_) \ if((*p)->size < sizeof(struct_)) { \ - _log(NET__STRUCTS, "Wrong size on outbound %s (" #struct_ "): Got %d, expected at least %d", opcodes->EmuToName((*p)->GetOpcode()), (*p)->size, sizeof(struct_)); \ - _hex(NET__STRUCT_HEX, (*p)->pBuffer, (*p)->size); \ + Log.Out(Logs::Detail, Logs::Netcode, "Wrong size on outbound %s (" #struct_ "): Got %d, expected at least %d", opcodes->EmuToName((*p)->GetOpcode()), (*p)->size, sizeof(struct_)); \ delete *p; \ *p = nullptr; \ return; \ @@ -127,15 +125,13 @@ #define DECODE_LENGTH_EXACT(struct_) \ if(__packet->size != sizeof(struct_)) { \ __packet->SetOpcode(OP_Unknown); /* invalidate the packet */ \ - _log(NET__STRUCTS, "Wrong size on incoming %s (" #struct_ "): Got %d, expected %d", opcodes->EmuToName(__packet->GetOpcode()), __packet->size, sizeof(struct_)); \ - _hex(NET__STRUCT_HEX, __packet->pBuffer, __packet->size); \ + Log.Out(Logs::Detail, Logs::Netcode, "Wrong size on incoming %s (" #struct_ "): Got %d, expected %d", opcodes->EmuToName(__packet->GetOpcode()), __packet->size, sizeof(struct_)); \ return; \ } #define DECODE_LENGTH_ATLEAST(struct_) \ if(__packet->size < sizeof(struct_)) { \ __packet->SetOpcode(OP_Unknown); /* invalidate the packet */ \ - _log(NET__STRUCTS, "Wrong size on incoming %s (" #struct_ "): Got %d, expected at least %d", opcodes->EmuToName(__packet->GetOpcode()), __packet->size, sizeof(struct_)); \ - _hex(NET__STRUCT_HEX, __packet->pBuffer, __packet->size); \ + Log.Out(Logs::Detail, Logs::Netcode, "Wrong size on incoming %s (" #struct_ "): Got %d, expected at least %d", opcodes->EmuToName(__packet->GetOpcode()), __packet->size, sizeof(struct_)); \ return; \ } diff --git a/common/patches/template.cpp b/common/patches/template.cpp index 8c4be992c..5120a2ef2 100644 --- a/common/patches/template.cpp +++ b/common/patches/template.cpp @@ -23,7 +23,7 @@ void Register(EQStreamIdentifier &into) { //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if(!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + logger.LogDebugType(EQEmuLogSys::General, EQEmuLogSys::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -55,10 +55,10 @@ void Reload() { opfile += name; opfile += ".conf"; if(!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + logger.LogDebugType(EQEmuLogSys::General, EQEmuLogSys::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + logger.LogDebugType(EQEmuLogSys::General, EQEmuLogSys::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } diff --git a/common/patches/titanium.cpp b/common/patches/titanium.cpp index 31579e91b..09e8b22fd 100644 --- a/common/patches/titanium.cpp +++ b/common/patches/titanium.cpp @@ -1,7 +1,8 @@ -#include "../debug.h" +#include "../global_define.h" +#include "../eqemu_logsys.h" #include "titanium.h" #include "../opcodemgr.h" -#include "../logsys.h" + #include "../eq_stream_ident.h" #include "../crc32.h" #include "../races.h" @@ -47,7 +48,7 @@ namespace Titanium //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -73,7 +74,7 @@ namespace Titanium - _log(NET__IDENTIFY, "Registered patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Registered patch %s", name); } void Reload() @@ -88,10 +89,10 @@ namespace Titanium opfile += name; opfile += ".conf"; if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } @@ -186,7 +187,7 @@ namespace Titanium //determine and verify length int entrycount = in->size / sizeof(BazaarSearchResults_Struct); if (entrycount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); delete in; return; @@ -267,7 +268,7 @@ namespace Titanium int itemcount = in->size / sizeof(InternalSerializedItem_Struct); if (itemcount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); delete in; return; } @@ -284,7 +285,7 @@ namespace Titanium safe_delete_array(serialized); } else { - _log(NET__STRUCTS, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); } } @@ -711,7 +712,7 @@ namespace Titanium char *serialized = SerializeItem((ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0); if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; return; } @@ -1286,7 +1287,7 @@ namespace Titanium if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); delete in; return; } @@ -1403,7 +1404,7 @@ namespace Titanium //determine and verify length int entrycount = in->size / sizeof(Spawn_Struct); if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); delete in; return; } @@ -1773,7 +1774,7 @@ namespace Titanium DECODE_LENGTH_EXACT(structs::MoveItem_Struct); SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - _log(NET__ERROR, "Moved item from %u to %u", eq->from_slot, eq->to_slot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Moved item from %u to %u", eq->from_slot, eq->to_slot); emu->from_slot = TitaniumToServerSlot(eq->from_slot); emu->to_slot = TitaniumToServerSlot(eq->to_slot); diff --git a/common/patches/underfoot.cpp b/common/patches/underfoot.cpp index 33ea71653..b3fa83419 100644 --- a/common/patches/underfoot.cpp +++ b/common/patches/underfoot.cpp @@ -1,7 +1,8 @@ -#include "../debug.h" +#include "../global_define.h" +#include "../eqemu_logsys.h" #include "underfoot.h" #include "../opcodemgr.h" -#include "../logsys.h" + #include "../eq_stream_ident.h" #include "../crc32.h" @@ -49,7 +50,7 @@ namespace Underfoot //TODO: figure out how to support shared memory with multiple patches... opcodes = new RegularOpcodeManager(); if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); return; } } @@ -75,7 +76,7 @@ namespace Underfoot - _log(NET__IDENTIFY, "Registered patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[IDENTIFY] Registered patch %s", name); } void Reload() @@ -90,10 +91,10 @@ namespace Underfoot opfile += name; opfile += ".conf"; if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); return; } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); + Log.Out(Logs::General, Logs::Netcode, "[OPCODES] Reloaded opcodes for patch %s", name); } } @@ -306,7 +307,7 @@ namespace Underfoot if (EntryCount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); delete in; return; } @@ -493,7 +494,7 @@ namespace Underfoot if (ItemCount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); delete in; @@ -525,14 +526,14 @@ namespace Underfoot safe_delete_array(Serialized); } else { - _log(NET__ERROR, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); } } delete[] __emu_buffer; - //_log(NET__ERROR, "Sending inventory to client"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Sending inventory to client"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); dest->FastQueuePacket(&in, ack_req); } @@ -915,16 +916,16 @@ namespace Underfoot ENCODE(OP_GroupUpdate) { - //_log(NET__ERROR, "OP_GroupUpdate"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] OP_GroupUpdate"); EQApplicationPacket *in = *p; GroupJoin_Struct *gjs = (GroupJoin_Struct*)in->pBuffer; - //_log(NET__ERROR, "Received outgoing OP_GroupUpdate with action code %i", gjs->action); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received outgoing OP_GroupUpdate with action code %i", gjs->action); if ((gjs->action == groupActLeave) || (gjs->action == groupActDisband)) { if ((gjs->action == groupActDisband) || !strcmp(gjs->yourname, gjs->membername)) { - //_log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandYou, sizeof(structs::GroupGeneric_Struct)); @@ -943,14 +944,14 @@ namespace Underfoot return; } //if(gjs->action == groupActLeave) - // _log(NET__ERROR, "Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + // Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Group Leave, yourname = %s, membername = %s", gjs->yourname, gjs->membername); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupDisbandOther, sizeof(structs::GroupGeneric_Struct)); structs::GroupGeneric_Struct *ggs = (structs::GroupGeneric_Struct*)outapp->pBuffer; memcpy(ggs->name1, gjs->yourname, sizeof(ggs->name1)); memcpy(ggs->name2, gjs->membername, sizeof(ggs->name2)); - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; @@ -960,19 +961,19 @@ namespace Underfoot if (in->size == sizeof(GroupUpdate2_Struct)) { // Group Update2 - //_log(NET__ERROR, "Struct is GroupUpdate2"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Struct is GroupUpdate2"); unsigned char *__emu_buffer = in->pBuffer; GroupUpdate2_Struct *gu2 = (GroupUpdate2_Struct*)__emu_buffer; - //_log(NET__ERROR, "Yourname is %s", gu2->yourname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Yourname is %s", gu2->yourname); int MemberCount = 1; int PacketLength = 8 + strlen(gu2->leadersname) + 1 + 22 + strlen(gu2->yourname) + 1; for (int i = 0; i < 5; ++i) { - //_log(NET__ERROR, "Membername[%i] is %s", i, gu2->membername[i]); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Membername[%i] is %s", i, gu2->membername[i]); if (gu2->membername[i][0] != '\0') { PacketLength += (22 + strlen(gu2->membername[i]) + 1); @@ -980,7 +981,7 @@ namespace Underfoot } } - //_log(NET__ERROR, "Leadername is %s", gu2->leadersname); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Leadername is %s", gu2->leadersname); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupUpdateB, PacketLength); @@ -1026,7 +1027,7 @@ namespace Underfoot VARSTRUCT_ENCODE_TYPE(uint16, Buffer, 0); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); outapp = new EQApplicationPacket(OP_GroupLeadershipAAUpdate, sizeof(GroupLeadershipAAUpdate_Struct)); @@ -1040,7 +1041,7 @@ namespace Underfoot delete in; return; } - //_log(NET__ERROR, "Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Generic GroupUpdate, yourname = %s, membername = %s", gjs->yourname, gjs->membername); ENCODE_LENGTH_EXACT(GroupJoin_Struct); SETUP_DIRECT_ENCODE(GroupJoin_Struct, structs::GroupJoin_Struct); @@ -1052,7 +1053,7 @@ namespace Underfoot GLAAus->NPCMarkerID = emu->NPCMarkerID; memcpy(&GLAAus->LeaderAAs, &emu->leader_aas, sizeof(GLAAus->LeaderAAs)); - //_hex(NET__ERROR, __packet->pBuffer, __packet->size); + //Log.Hex(Logs::Netcode, __packet->pBuffer, __packet->size); FINISH_ENCODE(); @@ -1266,7 +1267,7 @@ namespace Underfoot char *serialized = SerializeItem((ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0); if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; return; } @@ -2503,7 +2504,7 @@ namespace Underfoot if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); delete in; return; } @@ -2683,7 +2684,7 @@ namespace Underfoot VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, x); } - //_hex(NET__ERROR, outapp->pBuffer, outapp->size); + //Log.Hex(Logs::Netcode, outapp->pBuffer, outapp->size); dest->FastQueuePacket(&outapp); delete in; } @@ -2753,16 +2754,16 @@ namespace Underfoot //determine and verify length int entrycount = in->size / sizeof(Spawn_Struct); if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); delete in; return; } - //_log(NET__STRUCTS, "Spawn name is [%s]", emu->name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn name is [%s]", emu->name); emu = (Spawn_Struct *)__emu_buffer; - //_log(NET__STRUCTS, "Spawn packet size is %i, entries = %i", in->size, entrycount); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[STRUCTS] Spawn packet size is %i, entries = %i", in->size, entrycount); char *Buffer = (char *)in->pBuffer; @@ -3426,8 +3427,8 @@ namespace Underfoot DECODE(OP_GroupDisband) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_Disband"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_Disband"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupGeneric_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupGeneric_Struct); @@ -3440,8 +3441,8 @@ namespace Underfoot DECODE(OP_GroupFollow) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -3454,8 +3455,8 @@ namespace Underfoot DECODE(OP_GroupFollow2) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupFollow2"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupFollow2"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupFollow_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupFollow_Struct); @@ -3468,8 +3469,8 @@ namespace Underfoot DECODE(OP_GroupInvite) { //EQApplicationPacket *in = __packet; - //_log(NET__ERROR, "Received incoming OP_GroupInvite"); - //_hex(NET__ERROR, in->pBuffer, in->size); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite"); + //Log.Hex(Logs::Netcode, in->pBuffer, in->size); DECODE_LENGTH_EXACT(structs::GroupInvite_Struct); SETUP_DIRECT_DECODE(GroupGeneric_Struct, structs::GroupInvite_Struct); @@ -3481,7 +3482,7 @@ namespace Underfoot DECODE(OP_GroupInvite2) { - //_log(NET__ERROR, "Received incoming OP_GroupInvite2. Forwarding"); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Received incoming OP_GroupInvite2. Forwarding"); DECODE_FORWARD(OP_GroupInvite); } @@ -3556,7 +3557,7 @@ namespace Underfoot DECODE_LENGTH_EXACT(structs::MoveItem_Struct); SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - _log(NET__ERROR, "Moved item from %u to %u", eq->from_slot, eq->to_slot); + Log.Out(Logs::General, Logs::Netcode, "[ERROR] Moved item from %u to %u", eq->from_slot, eq->to_slot); emu->from_slot = UnderfootToServerSlot(eq->from_slot); emu->to_slot = UnderfootToServerSlot(eq->to_slot); @@ -3779,7 +3780,7 @@ namespace Underfoot std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary); const Item_Struct *item = inst->GetUnscaledItem(); - //_log(NET__ERROR, "Serialize called for: %s", item->Name); + //Log.LogDebugType(Logs::General, Logs::Netcode, "[ERROR] Serialize called for: %s", item->Name); Underfoot::structs::ItemSerializationHeader hdr; hdr.stacksize = stackable ? charges : 1; hdr.unknown004 = 0; diff --git a/common/perl_eqdb.cpp b/common/perl_eqdb.cpp index 8e7fb1138..2cd9fa38d 100644 --- a/common/perl_eqdb.cpp +++ b/common/perl_eqdb.cpp @@ -28,7 +28,7 @@ typedef const char Const_char; #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/useperl.h" #include "eqdb.h" diff --git a/common/perl_eqdb_res.cpp b/common/perl_eqdb_res.cpp index b4f22affb..2782a6f05 100644 --- a/common/perl_eqdb_res.cpp +++ b/common/perl_eqdb_res.cpp @@ -28,7 +28,7 @@ typedef const char Const_char; #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/useperl.h" #include "eqdb_res.h" diff --git a/common/platform.cpp b/common/platform.cpp index 1a7b2ed7f..4955d6639 100644 --- a/common/platform.cpp +++ b/common/platform.cpp @@ -10,3 +10,6 @@ const EQEmuExePlatform& GetExecutablePlatform() { return exe_platform; } +int GetExecutablePlatformInt(){ + return exe_platform; +} \ No newline at end of file diff --git a/common/platform.h b/common/platform.h index 7eaae045b..281402291 100644 --- a/common/platform.h +++ b/common/platform.h @@ -18,5 +18,6 @@ enum EQEmuExePlatform void RegisterExecutablePlatform(EQEmuExePlatform p); const EQEmuExePlatform& GetExecutablePlatform(); +int GetExecutablePlatformInt(); #endif diff --git a/common/proc_launcher.cpp b/common/proc_launcher.cpp index 0ea0d9636..d44cc9c46 100644 --- a/common/proc_launcher.cpp +++ b/common/proc_launcher.cpp @@ -19,7 +19,8 @@ #include #include -#include "debug.h" +#include "global_define.h" +#include "types.h" #include "proc_launcher.h" #ifdef _WINDOWS #include diff --git a/common/proc_launcher.h b/common/proc_launcher.h index 64133481e..6289579cd 100644 --- a/common/proc_launcher.h +++ b/common/proc_launcher.h @@ -18,7 +18,7 @@ #ifndef PROCLAUNCHER_H_ #define PROCLAUNCHER_H_ -#include "debug.h" +#include "global_define.h" #include #include diff --git a/common/ptimer.cpp b/common/ptimer.cpp index bd753d391..b41a45677 100644 --- a/common/ptimer.cpp +++ b/common/ptimer.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "timer.h" #include "ptimer.h" @@ -135,7 +135,7 @@ bool PersistentTimer::Load(Database *db) { auto results = db->QueryDatabase(query); if (!results.Success()) { #if EQDEBUG > 5 - LogFile->write(EQEmuLog::Error, "Error in PersistentTimer::Load, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in PersistentTimer::Load, error: %s", results.ErrorMessage().c_str()); #endif return false; } @@ -168,7 +168,7 @@ bool PersistentTimer::Store(Database *db) { auto results = db->QueryDatabase(query); if (!results.Success()) { #if EQDEBUG > 5 - LogFile->write(EQEmuLog::Error, "Error in PersistentTimer::Store, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in PersistentTimer::Store, error: %s", results.ErrorMessage().c_str()); #endif return false; } @@ -188,7 +188,7 @@ bool PersistentTimer::Clear(Database *db) { auto results = db->QueryDatabase(query); if (!results.Success()) { #if EQDEBUG > 5 - LogFile->write(EQEmuLog::Error, "Error in PersistentTimer::Clear, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in PersistentTimer::Clear, error: %s", results.ErrorMessage().c_str()); #endif return false; } @@ -200,7 +200,7 @@ bool PersistentTimer::Clear(Database *db) { /* This function checks if the timer triggered */ bool PersistentTimer::Expired(Database *db, bool iReset) { if (this == nullptr) { - LogFile->write(EQEmuLog::Error, "Null timer during ->Check()!?\n"); + Log.Out(Logs::General, Logs::Error, "Null timer during ->Check()!?\n"); return(true); } uint32 current_time = get_current_time(); @@ -292,7 +292,7 @@ bool PTimerList::Load(Database *db) { auto results = db->QueryDatabase(query); if (!results.Success()) { #if EQDEBUG > 5 - LogFile->write(EQEmuLog::Error, "Error in PersistentTimer::Load, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in PersistentTimer::Load, error: %s", results.ErrorMessage().c_str()); #endif return false; } @@ -351,7 +351,7 @@ bool PTimerList::Clear(Database *db) { auto results = db->QueryDatabase(query); if (!results.Success()) { #if EQDEBUG > 5 - LogFile->write(EQEmuLog::Error, "Error in PersistentTimer::Clear, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in PersistentTimer::Clear, error: %s", results.ErrorMessage().c_str()); #endif return false; } @@ -443,7 +443,7 @@ bool PTimerList::ClearOffline(Database *db, uint32 char_id, pTimerType type) { auto results = db->QueryDatabase(query); if (!results.Success()) { #if EQDEBUG > 5 - LogFile->write(EQEmuLog::Error, "Error in PTimerList::ClearOffline, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in PTimerList::ClearOffline, error: %s", results.ErrorMessage().c_str()); #endif return false; } diff --git a/common/rulesys.cpp b/common/rulesys.cpp index ae1b8e5f6..a53dbcabe 100644 --- a/common/rulesys.cpp +++ b/common/rulesys.cpp @@ -17,7 +17,7 @@ */ #include "rulesys.h" -#include "logsys.h" + #include "database.h" #include "string_util.h" #include @@ -107,7 +107,7 @@ bool RuleManager::ListRules(const char *catname, std::vector &into if(catname != nullptr) { cat = FindCategory(catname); if(cat == InvalidCategory) { - _log(RULES__ERROR, "Unable to find category '%s'", catname); + Log.Out(Logs::Detail, Logs::Rules, "Unable to find category '%s'", catname); return(false); } } @@ -168,18 +168,18 @@ bool RuleManager::SetRule(const char *rule_name, const char *rule_value, Databas switch(type) { case IntRule: m_RuleIntValues [index] = atoi(rule_value); - _log(RULES__CHANGE, "Set rule %s to value %d", rule_name, m_RuleIntValues[index]); + Log.Out(Logs::Detail, Logs::Rules, "Set rule %s to value %d", rule_name, m_RuleIntValues[index]); break; case RealRule: m_RuleRealValues[index] = atof(rule_value); - _log(RULES__CHANGE, "Set rule %s to value %.13f", rule_name, m_RuleRealValues[index]); + Log.Out(Logs::Detail, Logs::Rules, "Set rule %s to value %.13f", rule_name, m_RuleRealValues[index]); break; case BoolRule: uint32 val = 0; if(!strcasecmp(rule_value, "on") || !strcasecmp(rule_value, "true") || !strcasecmp(rule_value, "yes") || !strcasecmp(rule_value, "enabled") || !strcmp(rule_value, "1")) val = 1; m_RuleBoolValues[index] = val; - _log(RULES__CHANGE, "Set rule %s to value %s", rule_name, m_RuleBoolValues[index] == 1 ?"true":"false"); + Log.Out(Logs::Detail, Logs::Rules, "Set rule %s to value %s", rule_name, m_RuleBoolValues[index] == 1 ?"true":"false"); break; } @@ -190,7 +190,7 @@ bool RuleManager::SetRule(const char *rule_name, const char *rule_value, Databas } void RuleManager::ResetRules() { - _log(RULES__CHANGE, "Resetting running rules to default values"); + Log.Out(Logs::Detail, Logs::Rules, "Resetting running rules to default values"); #define RULE_INT(cat, rule, default_value) \ m_RuleIntValues[ Int__##rule ] = default_value; #define RULE_REAL(cat, rule, default_value) \ @@ -214,7 +214,7 @@ bool RuleManager::_FindRule(const char *rule_name, RuleType &type_into, uint16 & return(true); } } - _log(RULES__ERROR, "Unable to find rule '%s'", rule_name); + Log.Out(Logs::Detail, Logs::Rules, "Unable to find rule '%s'", rule_name); return(false); } @@ -241,14 +241,14 @@ void RuleManager::SaveRules(Database *db, const char *ruleset) { m_activeRuleset = _FindOrCreateRuleset(db, ruleset); if(m_activeRuleset == -1) { - _log(RULES__ERROR, "Unable to find or create rule set %s", ruleset); + Log.Out(Logs::Detail, Logs::Rules, "Unable to find or create rule set %s", ruleset); return; } m_activeName = ruleset; } - _log(RULES__CHANGE, "Saving running rules into rule set %s (%d)", ruleset, m_activeRuleset); + Log.Out(Logs::Detail, Logs::Rules, "Saving running rules into rule set %s (%d)", ruleset, m_activeRuleset); } else { - _log(RULES__CHANGE, "Saving running rules into running rule set %s", m_activeName.c_str(), m_activeRuleset); + Log.Out(Logs::Detail, Logs::Rules, "Saving running rules into running rule set %s", m_activeName.c_str(), m_activeRuleset); } int r; @@ -269,11 +269,11 @@ bool RuleManager::LoadRules(Database *db, const char *ruleset) { int rsid = GetRulesetID(db, ruleset); if(rsid < 0) { - _log(RULES__ERROR, "Failed to find ruleset '%s' for load operation. Canceling.", ruleset); + Log.Out(Logs::Detail, Logs::Rules, "Failed to find ruleset '%s' for load operation. Canceling.", ruleset); return(false); } - _log(RULES__CHANGE, "Loading rule set '%s' (%d)", ruleset, rsid); + Log.Out(Logs::Detail, Logs::Rules, "Loading rule set '%s' (%d)", ruleset, rsid); m_activeRuleset = rsid; m_activeName = ruleset; @@ -282,13 +282,12 @@ bool RuleManager::LoadRules(Database *db, const char *ruleset) { auto results = db->QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadRules query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return false; } for(auto row = results.begin(); row != results.end(); ++row) if(!SetRule(row[0], row[1], nullptr, false)) - _log(RULES__ERROR, "Unable to interpret rule record for %s", row[0]); + Log.Out(Logs::Detail, Logs::Rules, "Unable to interpret rule record for %s", row[0]); return true; } @@ -313,8 +312,6 @@ void RuleManager::_SaveRule(Database *db, RuleType type, uint16 index) { " VALUES(%d, '%s', '%s')", m_activeRuleset, _GetRuleName(type, index), vstr); auto results = db->QueryDatabase(query); - if (!results.Success()) - _log(RULES__ERROR, "Fauled to set rule in the database: %s: %s", query.c_str(), results.ErrorMessage().c_str()); } @@ -329,7 +326,6 @@ int RuleManager::GetRulesetID(Database *db, const char *rulesetname) { safe_delete_array(rst); auto results = db->QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadRules query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return -1; } @@ -356,7 +352,6 @@ int RuleManager::_FindOrCreateRuleset(Database *db, const char *ruleset) { auto results = db->QueryDatabase(query); if (!results.Success()) { - _log(RULES__ERROR, "Fauled to create rule set in the database: %s: %s", query.c_str(), results.ErrorMessage().c_str()); return -1; } @@ -369,7 +364,6 @@ std::string RuleManager::GetRulesetName(Database *db, int id) { auto results = db->QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadRules query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return ""; } @@ -390,7 +384,6 @@ bool RuleManager::ListRulesets(Database *db, std::map &into) { auto results = db->QueryDatabase(query); if (results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ListRulesets query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return false; } diff --git a/common/ruletypes.h b/common/ruletypes.h index 79e28c143..59726bcaa 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -602,4 +602,3 @@ RULE_CATEGORY_END() #undef RULE_REAL #undef RULE_BOOL #undef RULE_CATEGORY_END - diff --git a/common/seperator.h b/common/seperator.h index 62054d137..7e81f8164 100644 --- a/common/seperator.h +++ b/common/seperator.h @@ -23,8 +23,9 @@ #ifndef SEPERATOR_H #define SEPERATOR_H -#include +#include "types.h" #include +#include class Seperator { diff --git a/common/servertalk.h b/common/servertalk.h index f458c758e..547dda9b1 100644 --- a/common/servertalk.h +++ b/common/servertalk.h @@ -180,16 +180,17 @@ #define ServerOP_CZSignalClientByName 0x4007 #define ServerOP_CZMessagePlayer 0x4008 #define ServerOP_ReloadWorld 0x4009 - -#define ServerOP_QSPlayerLogTrades 0x4010 -#define ServerOP_QSPlayerLogHandins 0x4011 -#define ServerOP_QSPlayerLogNPCKills 0x4012 -#define ServerOP_QSPlayerLogDeletes 0x4013 -#define ServerOP_QSPlayerLogMoves 0x4014 -#define ServerOP_QSPlayerLogMerchantTransactions 0x4015 -#define ServerOP_QSSendQuery 0x4016 -#define ServerOP_CZSignalNPC 0x4017 -#define ServerOP_CZSetEntityVariableByNPCTypeID 0x4018 +#define ServerOP_ReloadLogs 0x4010 +/* Query Server OP Codes */ +#define ServerOP_QSPlayerLogTrades 0x5010 +#define ServerOP_QSPlayerLogHandins 0x5011 +#define ServerOP_QSPlayerLogNPCKills 0x5012 +#define ServerOP_QSPlayerLogDeletes 0x5013 +#define ServerOP_QSPlayerLogMoves 0x5014 +#define ServerOP_QSPlayerLogMerchantTransactions 0x5015 +#define ServerOP_QSSendQuery 0x5016 +#define ServerOP_CZSignalNPC 0x5017 +#define ServerOP_CZSetEntityVariableByNPCTypeID 0x5018 /* Query Serv Generic Packet Flag/Type Enumeration */ enum { QSG_LFGuild = 0 }; diff --git a/common/shareddb.cpp b/common/shareddb.cpp index 3276bff25..969ca2d58 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -46,7 +46,6 @@ bool SharedDatabase::SetHideMe(uint32 account_id, uint8 hideme) std::string query = StringFormat("UPDATE account SET hideme = %i WHERE id = %i", hideme, account_id); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetGMSpeed query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -58,7 +57,6 @@ uint8 SharedDatabase::GetGMSpeed(uint32 account_id) std::string query = StringFormat("SELECT gmspeed FROM account WHERE id = '%i'", account_id); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetGMSpeed query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -75,7 +73,6 @@ bool SharedDatabase::SetGMSpeed(uint32 account_id, uint8 gmspeed) std::string query = StringFormat("UPDATE account SET gmspeed = %i WHERE id = %i", gmspeed, account_id); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetGMSpeed query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -127,7 +124,6 @@ bool SharedDatabase::VerifyInventory(uint32 account_id, int16 slot_id, const Ite account_id, slot_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error runing inventory verification query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); //returning true is less harmful in the face of a query error return true; } @@ -219,7 +215,6 @@ bool SharedDatabase::UpdateInventorySlot(uint32 char_id, const ItemInst* inst, i } if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "UpdateInventorySlot query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -265,7 +260,6 @@ bool SharedDatabase::UpdateSharedBankSlot(uint32 char_id, const ItemInst* inst, } if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "UpdateSharedBankSlot query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -278,7 +272,6 @@ bool SharedDatabase::DeleteInventorySlot(uint32 char_id, int16 slot_id) { std::string query = StringFormat("DELETE FROM inventory WHERE charid = %i AND slotid = %i", char_id, slot_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "DeleteInventorySlot query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -291,7 +284,6 @@ bool SharedDatabase::DeleteInventorySlot(uint32 char_id, int16 slot_id) { char_id, base_slot_id, (base_slot_id+10)); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "DeleteInventorySlot, bags query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -306,7 +298,6 @@ bool SharedDatabase::DeleteSharedBankSlot(uint32 char_id, int16 slot_id) { std::string query = StringFormat("DELETE FROM sharedbank WHERE acctid=%i AND slotid=%i", account_id, slot_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "DeleteSharedBankSlot query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -320,7 +311,6 @@ bool SharedDatabase::DeleteSharedBankSlot(uint32 char_id, int16 slot_id) { account_id, base_slot_id, (base_slot_id+10)); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "DeleteSharedBankSlot, bags query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -334,7 +324,6 @@ int32 SharedDatabase::GetSharedPlatinum(uint32 account_id) std::string query = StringFormat("SELECT sharedplat FROM account WHERE id = '%i'", account_id); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetSharedPlatinum query '" << query << "' " << results.ErrorMessage().c_str() << std::endl; return false; } @@ -350,7 +339,6 @@ bool SharedDatabase::SetSharedPlatinum(uint32 account_id, int32 amount_to_add) { std::string query = StringFormat("UPDATE account SET sharedplat = sharedplat + %i WHERE id = %i", amount_to_add, account_id); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetSharedPlatinum query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -410,7 +398,7 @@ bool SharedDatabase::GetSharedBank(uint32 id, Inventory* inv, bool is_charid) { "FROM sharedbank WHERE acctid=%i", id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Database::GetSharedBank(uint32 account_id): %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Database::GetSharedBank(uint32 account_id): %s", results.ErrorMessage().c_str()); return false; } @@ -430,7 +418,7 @@ bool SharedDatabase::GetSharedBank(uint32 id, Inventory* inv, bool is_charid) { const Item_Struct* item = GetItem(item_id); if (!item) { - LogFile->write(EQEmuLog::Error, + Log.Out(Logs::General, Logs::Error, "Warning: %s %i has an invalid item_id %i in inventory slot %i", ((is_charid==true) ? "charid" : "acctid"), id, item_id, slot_id); continue; @@ -479,7 +467,7 @@ bool SharedDatabase::GetSharedBank(uint32 id, Inventory* inv, bool is_charid) { if (put_slot_id != INVALID_INDEX) continue; - LogFile->write(EQEmuLog::Error, "Warning: Invalid slot_id for item in shared bank inventory: %s=%i, item_id=%i, slot_id=%i", + Log.Out(Logs::General, Logs::Error, "Warning: Invalid slot_id for item in shared bank inventory: %s=%i, item_id=%i, slot_id=%i", ((is_charid==true)? "charid": "acctid"), id, item_id, slot_id); if (is_charid) @@ -498,8 +486,7 @@ bool SharedDatabase::GetInventory(uint32 char_id, Inventory* inv) { "FROM inventory WHERE charid = %i ORDER BY slotid", char_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "GetInventory query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); - LogFile->write(EQEmuLog::Error, "If you got an error related to the 'instnodrop' field, run the following SQL Queries:\nalter table inventory add instnodrop tinyint(1) unsigned default 0 not null;\n"); + Log.Out(Logs::General, Logs::Error, "If you got an error related to the 'instnodrop' field, run the following SQL Queries:\nalter table inventory add instnodrop tinyint(1) unsigned default 0 not null;\n"); return false; } @@ -527,7 +514,7 @@ bool SharedDatabase::GetInventory(uint32 char_id, Inventory* inv) { const Item_Struct* item = GetItem(item_id); if (!item) { - LogFile->write(EQEmuLog::Error,"Warning: charid %i has an invalid item_id %i in inventory slot %i", char_id, item_id, slot_id); + Log.Out(Logs::General, Logs::Error,"Warning: charid %i has an invalid item_id %i in inventory slot %i", char_id, item_id, slot_id); continue; } @@ -595,7 +582,7 @@ bool SharedDatabase::GetInventory(uint32 char_id, Inventory* inv) { else if (slot_id >= 3111 && slot_id <= 3179) { // Admins: please report any occurrences of this error - LogFile->write(EQEmuLog::Error, "Warning: Defunct location for item in inventory: charid=%i, item_id=%i, slot_id=%i .. pushing to cursor...", char_id, item_id, slot_id); + Log.Out(Logs::General, Logs::Error, "Warning: Defunct location for item in inventory: charid=%i, item_id=%i, slot_id=%i .. pushing to cursor...", char_id, item_id, slot_id); put_slot_id = inv->PushCursor(*inst); } else @@ -607,7 +594,7 @@ bool SharedDatabase::GetInventory(uint32 char_id, Inventory* inv) { // Save ptr to item in inventory if (put_slot_id == INVALID_INDEX) { - LogFile->write(EQEmuLog::Error, "Warning: Invalid slot_id for item in inventory: charid=%i, item_id=%i, slot_id=%i",char_id, item_id, slot_id); + Log.Out(Logs::General, Logs::Error, "Warning: Invalid slot_id for item in inventory: charid=%i, item_id=%i, slot_id=%i",char_id, item_id, slot_id); } } @@ -625,8 +612,7 @@ bool SharedDatabase::GetInventory(uint32 account_id, char* name, Inventory* inv) name, account_id); auto results = QueryDatabase(query); if (!results.Success()){ - LogFile->write(EQEmuLog::Error, "GetInventory query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); - LogFile->write(EQEmuLog::Error, "If you got an error related to the 'instnodrop' field, run the following SQL Queries:\nalter table inventory add instnodrop tinyint(1) unsigned default 0 not null;\n"); + Log.Out(Logs::General, Logs::Error, "If you got an error related to the 'instnodrop' field, run the following SQL Queries:\nalter table inventory add instnodrop tinyint(1) unsigned default 0 not null;\n"); return false; } @@ -714,7 +700,7 @@ bool SharedDatabase::GetInventory(uint32 account_id, char* name, Inventory* inv) // Save ptr to item in inventory if (put_slot_id == INVALID_INDEX) - LogFile->write(EQEmuLog::Error, "Warning: Invalid slot_id for item in inventory: name=%s, acctid=%i, item_id=%i, slot_id=%i", name, account_id, item_id, slot_id); + Log.Out(Logs::General, Logs::Error, "Warning: Invalid slot_id for item in inventory: name=%s, acctid=%i, item_id=%i, slot_id=%i", name, account_id, item_id, slot_id); } @@ -730,7 +716,6 @@ void SharedDatabase::GetItemsCount(int32 &item_count, uint32 &max_id) { const std::string query = "SELECT MAX(id), count(*) FROM items"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetItemsCount '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -770,7 +755,7 @@ bool SharedDatabase::LoadItems() { items_hash = new EQEmu::FixedMemoryHashSet(reinterpret_cast(items_mmf->Get()), size); mutex.Unlock(); } catch(std::exception& ex) { - LogFile->write(EQEmuLog::Error, "Error Loading Items: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Error Loading Items: %s", ex.what()); return false; } @@ -815,7 +800,6 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ "updated FROM items ORDER BY id"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "LoadItems '%s', %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1028,7 +1012,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ try { hash.insert(item.ID, item); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "Database::LoadItems: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Database::LoadItems: %s", ex.what()); break; } } @@ -1083,13 +1067,12 @@ std::string SharedDatabase::GetBook(const char *txtfile) std::string query = StringFormat("SELECT txtfile FROM books WHERE name = '%s'", txtfile2); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetBook query '" << query << "' " << results.ErrorMessage() << std::endl; txtout.assign(" ",1); return txtout; } if (results.RowCount() == 0) { - LogFile->write(EQEmuLog::Error, "No book to send, (%s)", txtfile); + Log.Out(Logs::General, Logs::Error, "No book to send, (%s)", txtfile); txtout.assign(" ",1); return txtout; } @@ -1107,7 +1090,6 @@ void SharedDatabase::GetFactionListInfo(uint32 &list_count, uint32 &max_lists) { const std::string query = "SELECT COUNT(*), MAX(id) FROM npc_faction"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error getting npc faction info from database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1142,7 +1124,6 @@ void SharedDatabase::LoadNPCFactionLists(void *data, uint32 size, uint32 list_co "ON npc_faction.id = npc_faction_entries.npc_faction_id ORDER BY npc_faction.id;"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error getting npc faction info from database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1208,7 +1189,7 @@ bool SharedDatabase::LoadNPCFactionLists() { faction_hash = new EQEmu::FixedMemoryHashSet(reinterpret_cast(faction_mmf->Get()), size); mutex.Unlock(); } catch(std::exception& ex) { - LogFile->write(EQEmuLog::Error, "Error Loading npc factions: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Error Loading npc factions: %s", ex.what()); return false; } @@ -1226,8 +1207,8 @@ ItemInst* SharedDatabase::CreateItem(uint32 item_id, int16 charges, uint32 aug1, inst = CreateBaseItem(item, charges); if (inst == nullptr) { - LogFile->write(EQEmuLog::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateItem()"); - LogFile->write(EQEmuLog::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); + Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateItem()"); + Log.Out(Logs::General, Logs::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); return nullptr; } @@ -1252,8 +1233,8 @@ ItemInst* SharedDatabase::CreateItem(const Item_Struct* item, int16 charges, uin inst = CreateBaseItem(item, charges); if (inst == nullptr) { - LogFile->write(EQEmuLog::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateItem()"); - LogFile->write(EQEmuLog::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); + Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateItem()"); + Log.Out(Logs::General, Logs::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); return nullptr; } @@ -1283,8 +1264,8 @@ ItemInst* SharedDatabase::CreateBaseItem(const Item_Struct* item, int16 charges) inst = new ItemInst(item, charges); if (inst == nullptr) { - LogFile->write(EQEmuLog::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateBaseItem()"); - LogFile->write(EQEmuLog::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); + Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateBaseItem()"); + Log.Out(Logs::General, Logs::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); return nullptr; } @@ -1323,7 +1304,6 @@ bool SharedDatabase::GetCommandSettings(std::map &commands) { const std::string query = "SELECT command, access FROM commands"; auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetCommands query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -1354,7 +1334,7 @@ bool SharedDatabase::LoadSkillCaps() { mutex.Unlock(); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "Error loading skill caps: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Error loading skill caps: %s", ex.what()); return false; } @@ -1370,7 +1350,7 @@ void SharedDatabase::LoadSkillCaps(void *data) { const std::string query = "SELECT skillID, class, level, cap FROM skill_caps ORDER BY skillID, class, level"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error loading skill caps from database: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error loading skill caps from database: %s", results.ErrorMessage().c_str()); return; } @@ -1472,7 +1452,6 @@ void SharedDatabase::LoadDamageShieldTypes(SPDat_Spell_Struct* sp, int32 iMaxSpe "AND `spellid` <= %i", iMaxSpellID); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadDamageShieldTypes: %s %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1492,7 +1471,6 @@ int SharedDatabase::GetMaxSpellID() { std::string query = "SELECT MAX(id) FROM spells_new"; auto results = QueryDatabase(query); if (!results.Success()) { - _log(SPELLS__LOAD_ERR, "Error in GetMaxSpellID query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return -1; } @@ -1507,12 +1485,11 @@ void SharedDatabase::LoadSpells(void *data, int max_spells) { const std::string query = "SELECT * FROM spells_new ORDER BY id ASC"; auto results = QueryDatabase(query); if (!results.Success()) { - _log(SPELLS__LOAD_ERR, "Error in LoadSpells query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return; } if(results.ColumnCount() <= SPELL_LOAD_FIELD_COUNT) { - _log(SPELLS__LOAD_ERR, "Fatal error loading spells: Spell field count < SPELL_LOAD_FIELD_COUNT(%u)", SPELL_LOAD_FIELD_COUNT); + Log.Out(Logs::Detail, Logs::Spells, "Fatal error loading spells: Spell field count < SPELL_LOAD_FIELD_COUNT(%u)", SPELL_LOAD_FIELD_COUNT); return; } @@ -1522,7 +1499,7 @@ void SharedDatabase::LoadSpells(void *data, int max_spells) { for (auto row = results.begin(); row != results.end(); ++row) { tempid = atoi(row[0]); if(tempid >= max_spells) { - _log(SPELLS__LOAD_ERR, "Non fatal error: spell.id >= max_spells, ignoring."); + Log.Out(Logs::Detail, Logs::Spells, "Non fatal error: spell.id >= max_spells, ignoring."); continue; } @@ -1668,7 +1645,6 @@ int SharedDatabase::GetMaxBaseDataLevel() { const std::string query = "SELECT MAX(level) FROM base_data"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetMaxBaseDataLevel query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return -1; } @@ -1701,7 +1677,7 @@ bool SharedDatabase::LoadBaseData() { mutex.Unlock(); } catch(std::exception& ex) { - LogFile->write(EQEmuLog::Error, "Error Loading Base Data: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Error Loading Base Data: %s", ex.what()); return false; } @@ -1714,7 +1690,6 @@ void SharedDatabase::LoadBaseData(void *data, int max_level) { const std::string query = "SELECT * FROM base_data ORDER BY level, class ASC"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadBaseData query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1726,22 +1701,22 @@ void SharedDatabase::LoadBaseData(void *data, int max_level) { cl = atoi(row[1]); if(lvl <= 0) { - LogFile->write(EQEmuLog::Error, "Non fatal error: base_data.level <= 0, ignoring."); + Log.Out(Logs::General, Logs::Error, "Non fatal error: base_data.level <= 0, ignoring."); continue; } if(lvl >= max_level) { - LogFile->write(EQEmuLog::Error, "Non fatal error: base_data.level >= max_level, ignoring."); + Log.Out(Logs::General, Logs::Error, "Non fatal error: base_data.level >= max_level, ignoring."); continue; } if(cl <= 0) { - LogFile->write(EQEmuLog::Error, "Non fatal error: base_data.cl <= 0, ignoring."); + Log.Out(Logs::General, Logs::Error, "Non fatal error: base_data.cl <= 0, ignoring."); continue; } if(cl > 16) { - LogFile->write(EQEmuLog::Error, "Non fatal error: base_data.class > 16, ignoring."); + Log.Out(Logs::General, Logs::Error, "Non fatal error: base_data.class > 16, ignoring."); continue; } @@ -1794,7 +1769,6 @@ void SharedDatabase::GetLootTableInfo(uint32 &loot_table_count, uint32 &max_loot const std::string query = "SELECT COUNT(*), MAX(id), (SELECT COUNT(*) FROM loottable_entries) FROM loottable"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error getting loot table info from database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1816,7 +1790,6 @@ void SharedDatabase::GetLootDropInfo(uint32 &loot_drop_count, uint32 &max_loot_d const std::string query = "SELECT COUNT(*), MAX(id), (SELECT COUNT(*) FROM lootdrop_entries) FROM lootdrop"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error getting loot table info from database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1842,7 +1815,6 @@ void SharedDatabase::LoadLootTables(void *data, uint32 size) { "ON loottable.id = loottable_entries.loottable_id ORDER BY id"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error getting loot table info from database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1896,7 +1868,6 @@ void SharedDatabase::LoadLootDrops(void *data, uint32 size) { "ON lootdrop.id = lootdrop_entries.lootdrop_id ORDER BY lootdrop_id"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error getting loot drop info from database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); } uint32 current_id = 0; @@ -1950,7 +1921,7 @@ bool SharedDatabase::LoadLoot() { loot_drop_mmf->Size()); mutex.Unlock(); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "Error loading loot: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Error loading loot: %s", ex.what()); return false; } @@ -1966,7 +1937,7 @@ const LootTable_Struct* SharedDatabase::GetLootTable(uint32 loottable_id) { return &loot_table_hash->at(loottable_id); } } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "Could not get loot table: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Could not get loot table: %s", ex.what()); } return nullptr; } @@ -1980,7 +1951,7 @@ const LootDrop_Struct* SharedDatabase::GetLootDrop(uint32 lootdrop_id) { return &loot_drop_hash->at(lootdrop_id); } } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "Could not get loot drop: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Could not get loot drop: %s", ex.what()); } return nullptr; } @@ -2005,7 +1976,6 @@ void SharedDatabase::GetBotInspectMessage(uint32 botid, InspectMessage_Struct* m std::string query = StringFormat("SELECT BotInspectMessage FROM bots WHERE BotID = %i", botid); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetBotInspectMessage query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -2018,11 +1988,7 @@ void SharedDatabase::GetBotInspectMessage(uint32 botid, InspectMessage_Struct* m } void SharedDatabase::SetBotInspectMessage(uint32 botid, const InspectMessage_Struct* message) { - std::string msg = EscapeString(message->text); std::string query = StringFormat("UPDATE bots SET BotInspectMessage = '%s' WHERE BotID = %i", msg.c_str(), botid); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in SetBotInspectMessage query '" << query << "' " << results.ErrorMessage() << std::endl; - + QueryDatabase(query); } diff --git a/common/spdat.cpp b/common/spdat.cpp index 8bceec249..4b847b75e 100644 --- a/common/spdat.cpp +++ b/common/spdat.cpp @@ -70,8 +70,9 @@ */ -#include "../common/logsys.h" -#include "../common/logtypes.h" + + +#include "../common/eqemu_logsys.h" #include "classes.h" #include "spdat.h" @@ -838,7 +839,7 @@ DmgShieldType GetDamageShieldType(uint16 spell_id, int32 DSType) // If we have a DamageShieldType for this spell from the damageshieldtypes table, return that, // else, make a guess, based on the resist type. Default return value is DS_THORNS if (IsValidSpell(spell_id)) { - _log(SPELLS__EFFECT_VALUES, "DamageShieldType for spell %i (%s) is %X\n", spell_id, + Log.Out(Logs::Detail, Logs::Spells, "DamageShieldType for spell %i (%s) is %X\n", spell_id, spells[spell_id].name, spells[spell_id].DamageShieldType); if (spells[spell_id].DamageShieldType) diff --git a/common/struct_strategy.cpp b/common/struct_strategy.cpp index 9b568b12e..49f422177 100644 --- a/common/struct_strategy.cpp +++ b/common/struct_strategy.cpp @@ -1,7 +1,8 @@ -#include "debug.h" +#include "global_define.h" +#include "eqemu_logsys.h" #include "struct_strategy.h" -#include "logsys.h" + #include "eq_stream.h" #include @@ -38,13 +39,13 @@ void StructStrategy::ErrorEncoder(EQApplicationPacket **in_p, EQStream *dest, bo EQApplicationPacket *p = *in_p; *in_p = nullptr; - _log(NET__STRUCTS, "Error encoding opcode %s: no encoder provided. Dropping.", OpcodeManager::EmuToName(p->GetOpcode())); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Error encoding opcode %s: no encoder provided. Dropping.", OpcodeManager::EmuToName(p->GetOpcode())); delete p; } void StructStrategy::ErrorDecoder(EQApplicationPacket *p) { - _log(NET__STRUCTS, "Error decoding opcode %s: no decoder provided. Invalidating.", OpcodeManager::EmuToName(p->GetOpcode())); + Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Error decoding opcode %s: no decoder provided. Invalidating.", OpcodeManager::EmuToName(p->GetOpcode())); p->SetOpcode(OP_Unknown); } diff --git a/common/tcp_connection.cpp b/common/tcp_connection.cpp index 890a46adc..7a393c8f5 100644 --- a/common/tcp_connection.cpp +++ b/common/tcp_connection.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #include @@ -540,7 +541,6 @@ bool TCPConnection::Process() { if (!RecvData(errbuf)) { struct in_addr in; in.s_addr = GetrIP(); - //std::cout << inet_ntoa(in) << ":" << GetrPort() << ": " << errbuf << std::endl; return false; } /* we break to do the send */ @@ -899,7 +899,7 @@ ThreadReturnType TCPConnection::TCPConnectionLoop(void* tmp) { } TCPConnection* tcpc = (TCPConnection*) tmp; #ifndef WIN32 - _log(COMMON__THREADS, "Starting TCPConnectionLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::TCP_Connection, "%s Starting TCPConnectionLoop with thread ID %d", __FUNCTION__, pthread_self()); #endif tcpc->MLoopRunning.lock(); while (tcpc->RunLoop()) { @@ -926,7 +926,7 @@ ThreadReturnType TCPConnection::TCPConnectionLoop(void* tmp) { tcpc->MLoopRunning.unlock(); #ifndef WIN32 - _log(COMMON__THREADS, "Ending TCPConnectionLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::TCP_Connection, "%s Ending TCPConnectionLoop with thread ID %d", __FUNCTION__, pthread_self()); #endif THREAD_RETURN(nullptr); diff --git a/common/tcp_server.cpp b/common/tcp_server.cpp index f99fb256d..0f9b0445c 100644 --- a/common/tcp_server.cpp +++ b/common/tcp_server.cpp @@ -1,5 +1,6 @@ -#include "debug.h" +#include "global_define.h" #include "tcp_server.h" +#include "../common/eqemu_logsys.h" #include #include @@ -67,7 +68,7 @@ ThreadReturnType BaseTCPServer::TCPServerLoop(void* tmp) { BaseTCPServer* tcps = (BaseTCPServer*) tmp; #ifndef WIN32 - _log(COMMON__THREADS, "Starting TCPServerLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Starting TCPServerLoop with thread ID %d", pthread_self()); #endif tcps->MLoopRunning.lock(); @@ -78,7 +79,7 @@ ThreadReturnType BaseTCPServer::TCPServerLoop(void* tmp) { tcps->MLoopRunning.unlock(); #ifndef WIN32 - _log(COMMON__THREADS, "Ending TCPServerLoop with thread ID %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Ending TCPServerLoop with thread ID %d", pthread_self()); #endif THREAD_RETURN(nullptr); diff --git a/common/tcp_server.h b/common/tcp_server.h index 3e28a7ac7..0bc1966c0 100644 --- a/common/tcp_server.h +++ b/common/tcp_server.h @@ -2,7 +2,7 @@ #define TCPSERVER_H_ #include "types.h" - +#include "mutex.h" #include #include diff --git a/common/timeoutmgr.cpp b/common/timeoutmgr.cpp index 771ce16af..998195cb3 100644 --- a/common/timeoutmgr.cpp +++ b/common/timeoutmgr.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" //#define TIMEOUT_DEBUG @@ -43,7 +43,7 @@ void TimeoutManager::CheckTimeouts() { Timeoutable *it = *cur; if(it->next_check.Check()) { #ifdef TIMEOUT_DEBUG - LogFile->write(EQEmuLog::Debug, "Checking timeout on 0x%x\n", it); + Log.Out(Logs::General, Logs::None,, "Checking timeout on 0x%x\n", it); #endif it->CheckTimeout(); } @@ -58,13 +58,13 @@ void TimeoutManager::AddMember(Timeoutable *who) { DeleteMember(who); //just in case... prolly not needed. members.push_back(who); #ifdef TIMEOUT_DEBUG - LogFile->write(EQEmuLog::Debug, "Adding timeoutable 0x%x\n", who); + Log.Out(Logs::General, Logs::None,, "Adding timeoutable 0x%x\n", who); #endif } void TimeoutManager::DeleteMember(Timeoutable *who) { #ifdef TIMEOUT_DEBUG - LogFile->write(EQEmuLog::Debug, "Removing timeoutable 0x%x\n", who); + Log.Out(Logs::General, Logs::None,, "Removing timeoutable 0x%x\n", who); #endif std::vector::iterator cur,end; cur = members.begin(); diff --git a/common/timer.h b/common/timer.h index c4d89fe11..4b2719dc6 100644 --- a/common/timer.h +++ b/common/timer.h @@ -22,7 +22,7 @@ // Disgrace: for windows compile #ifdef _WINDOWS - #include "debug.h" + #include "global_define.h" int gettimeofday (timeval *tp, ...); #endif diff --git a/common/worldconn.cpp b/common/worldconn.cpp index d43009b23..e85d24a75 100644 --- a/common/worldconn.cpp +++ b/common/worldconn.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #include "worldconn.h" @@ -43,7 +44,7 @@ bool WorldConnection::SendPacket(ServerPacket* pack) { void WorldConnection::OnConnected() { const EQEmuConfig *Config=EQEmuConfig::get(); - _log(NET__WORLD, "Connected to World: %s:%d", Config->WorldIP.c_str(), Config->WorldTCPPort); + Log.Out(Logs::General, Logs::Netcode, "[WORLD] Connected to World: %s:%d", Config->WorldIP.c_str(), Config->WorldTCPPort); ServerPacket* pack = new ServerPacket(ServerOP_ZAAuth, 16); MD5::Generate((const uchar*) m_password.c_str(), m_password.length(), pack->pBuffer); @@ -75,7 +76,7 @@ bool WorldConnection::Connect() { if (tcpc.Connect(Config->WorldIP.c_str(), Config->WorldTCPPort, errbuf)) { return true; } else { - _log(NET__WORLD, "WorldConnection connect: Connecting to the server %s:%d failed: %s", Config->WorldIP.c_str(), Config->WorldTCPPort, errbuf); + Log.Out(Logs::General, Logs::Netcode, "[WORLD] WorldConnection connect: Connecting to the server %s:%d failed: %s", Config->WorldIP.c_str(), Config->WorldTCPPort, errbuf); } return false; } diff --git a/common/xml_parser.cpp b/common/xml_parser.cpp index 7f84e0d47..f252ce177 100644 --- a/common/xml_parser.cpp +++ b/common/xml_parser.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" +#include "global_define.h" #include "xml_parser.h" XMLParser::XMLParser() { diff --git a/common/xml_parser.h b/common/xml_parser.h index f96cbb044..38ed6d254 100644 --- a/common/xml_parser.h +++ b/common/xml_parser.h @@ -18,7 +18,7 @@ #ifndef XMLParser_H #define XMLParser_H -#include "debug.h" +#include "global_define.h" #include "tinyxml/tinyxml.h" #include "../common/types.h" diff --git a/eqlaunch/eqlaunch.cpp b/eqlaunch/eqlaunch.cpp index fbac09541..76c9b48d1 100644 --- a/eqlaunch/eqlaunch.cpp +++ b/eqlaunch/eqlaunch.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/proc_launcher.h" #include "../common/eqemu_config.h" #include "../common/servertalk.h" @@ -30,12 +31,15 @@ #include #include +EQEmuLogSys Log; + bool RunLoops = false; void CatchSignal(int sig_num); int main(int argc, char *argv[]) { RegisterExecutablePlatform(ExePlatformLaunch); + Log.LoadLogSettingsDefaults(); set_exception_handler(); std::string launcher_name; @@ -43,13 +47,13 @@ int main(int argc, char *argv[]) { launcher_name = argv[1]; } if(launcher_name.length() < 1) { - _log(LAUNCHER__ERROR, "You must specfify a launcher name as the first argument to this program."); + Log.Out(Logs::Detail, Logs::Launcher, "You must specfify a launcher name as the first argument to this program."); return 1; } - _log(LAUNCHER__INIT, "Loading server configuration.."); + Log.Out(Logs::Detail, Logs::Launcher, "Loading server configuration.."); if (!EQEmuConfig::LoadConfig()) { - _log(LAUNCHER__ERROR, "Loading server configuration failed."); + Log.Out(Logs::Detail, Logs::Launcher, "Loading server configuration failed."); return 1; } const EQEmuConfig *Config = EQEmuConfig::get(); @@ -58,16 +62,16 @@ int main(int argc, char *argv[]) { * Setup nice signal handlers */ if (signal(SIGINT, CatchSignal) == SIG_ERR) { - _log(LAUNCHER__ERROR, "Could not set signal handler"); + Log.Out(Logs::Detail, Logs::Launcher, "Could not set signal handler"); return 1; } if (signal(SIGTERM, CatchSignal) == SIG_ERR) { - _log(LAUNCHER__ERROR, "Could not set signal handler"); + Log.Out(Logs::Detail, Logs::Launcher, "Could not set signal handler"); return 1; } #ifndef WIN32 if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { - _log(LAUNCHER__ERROR, "Could not set signal handler"); + Log.Out(Logs::Detail, Logs::Launcher, "Could not set signal handler"); return 1; } @@ -88,7 +92,7 @@ int main(int argc, char *argv[]) { std::map zones; WorldServer world(zones, launcher_name.c_str(), Config); if (!world.Connect()) { - _log(LAUNCHER__ERROR, "worldserver.Connect() FAILED! Will retry."); + Log.Out(Logs::Detail, Logs::Launcher, "worldserver.Connect() FAILED! Will retry."); } std::map::iterator zone, zend; @@ -96,7 +100,7 @@ int main(int argc, char *argv[]) { Timer InterserverTimer(INTERSERVER_TIMER); // does auto-reconnect - _log(LAUNCHER__INIT, "Starting main loop..."); + Log.Out(Logs::Detail, Logs::Launcher, "Starting main loop..."); // zones["test"] = new ZoneLaunch(&world, "./zone", "dynamic_1"); @@ -173,12 +177,14 @@ int main(int argc, char *argv[]) { delete zone->second; } + Log.CloseFileLogs(); + return 0; } void CatchSignal(int sig_num) { - _log(LAUNCHER__STATUS, "Caught signal %d", sig_num); + Log.Out(Logs::Detail, Logs::Launcher, "Caught signal %d", sig_num); RunLoops = false; } diff --git a/eqlaunch/worldserver.cpp b/eqlaunch/worldserver.cpp index 1754b6564..a4b27a983 100644 --- a/eqlaunch/worldserver.cpp +++ b/eqlaunch/worldserver.cpp @@ -15,7 +15,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" + +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/servertalk.h" #include "../common/eqemu_config.h" #include "../common/string_util.h" @@ -72,14 +74,14 @@ void WorldServer::Process() { break; } case ServerOP_ZAAuthFailed: { - _log(LAUNCHER__ERROR, "World server responded 'Not Authorized', disabling reconnect"); + Log.Out(Logs::Detail, Logs::Launcher, "World server responded 'Not Authorized', disabling reconnect"); pTryReconnect = false; Disconnect(); break; } case ServerOP_LauncherZoneRequest: { if(pack->size != sizeof(LauncherZoneRequest)) { - _log(LAUNCHER__NET, "Invalid size of LauncherZoneRequest: %d", pack->size); + Log.Out(Logs::Detail, Logs::Launcher, "Invalid size of LauncherZoneRequest: %d", pack->size); break; } const LauncherZoneRequest *lzr = (const LauncherZoneRequest *) pack->pBuffer; @@ -88,9 +90,9 @@ void WorldServer::Process() { switch(ZoneRequestCommands(lzr->command)) { case ZR_Start: { if(m_zones.find(lzr->short_name) != m_zones.end()) { - _log(LAUNCHER__ERROR, "World told us to start zone %s, but it is already running.", lzr->short_name); + Log.Out(Logs::Detail, Logs::Launcher, "World told us to start zone %s, but it is already running.", lzr->short_name); } else { - _log(LAUNCHER__WORLD, "World told us to start zone %s.", lzr->short_name); + Log.Out(Logs::Detail, Logs::Launcher, "World told us to start zone %s.", lzr->short_name); ZoneLaunch *l = new ZoneLaunch(this, m_name, lzr->short_name, m_config); m_zones[lzr->short_name] = l; } @@ -99,9 +101,9 @@ void WorldServer::Process() { case ZR_Restart: { std::map::iterator res = m_zones.find(lzr->short_name); if(res == m_zones.end()) { - _log(LAUNCHER__ERROR, "World told us to restart zone %s, but it is not running.", lzr->short_name); + Log.Out(Logs::Detail, Logs::Launcher, "World told us to restart zone %s, but it is not running.", lzr->short_name); } else { - _log(LAUNCHER__WORLD, "World told us to restart zone %s.", lzr->short_name); + Log.Out(Logs::Detail, Logs::Launcher, "World told us to restart zone %s.", lzr->short_name); res->second->Restart(); } break; @@ -109,9 +111,9 @@ void WorldServer::Process() { case ZR_Stop: { std::map::iterator res = m_zones.find(lzr->short_name); if(res == m_zones.end()) { - _log(LAUNCHER__ERROR, "World told us to stop zone %s, but it is not running.", lzr->short_name); + Log.Out(Logs::Detail, Logs::Launcher, "World told us to stop zone %s, but it is not running.", lzr->short_name); } else { - _log(LAUNCHER__WORLD, "World told us to stop zone %s.", lzr->short_name); + Log.Out(Logs::Detail, Logs::Launcher, "World told us to stop zone %s.", lzr->short_name); res->second->Stop(); } break; @@ -125,7 +127,7 @@ void WorldServer::Process() { } default: { - _log(LAUNCHER__NET, "Unknown opcode 0x%x from World of len %d", pack->opcode, pack->size); + Log.Out(Logs::Detail, Logs::Launcher, "Unknown opcode 0x%x from World of len %d", pack->opcode, pack->size); break; } } diff --git a/eqlaunch/zone_launch.cpp b/eqlaunch/zone_launch.cpp index fee133da7..8c1e62223 100644 --- a/eqlaunch/zone_launch.cpp +++ b/eqlaunch/zone_launch.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/eqemu_config.h" #include "zone_launch.h" #include "worldserver.h" @@ -71,7 +72,7 @@ void ZoneLaunch::Start() { //spec is consumed, even on failure m_ref = ProcLauncher::get()->Launch(spec); if(m_ref == ProcLauncher::ProcError) { - _log(LAUNCHER__ERROR, "Failure to launch '%s %s %s'. ", m_config->ZoneExe.c_str(), m_zone.c_str(), m_launcherName); + Log.Out(Logs::Detail, Logs::Launcher, "Failure to launch '%s %s %s'. ", m_config->ZoneExe.c_str(), m_zone.c_str(), m_launcherName); m_timer.Start(m_config->RestartWait); return; } @@ -83,17 +84,17 @@ void ZoneLaunch::Start() { SendStatus(); - _log(LAUNCHER__STATUS, "Zone %s has been started.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s has been started.", m_zone.c_str()); } void ZoneLaunch::Restart() { switch(m_state) { case StateRestartPending: - _log(LAUNCHER__STATUS, "Restart of zone %s requested when a restart is already pending.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Restart of zone %s requested when a restart is already pending.", m_zone.c_str()); break; case StateStartPending: //we havent started yet, do nothing - _log(LAUNCHER__STATUS, "Restart of %s before it has started. Ignoring.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Restart of %s before it has started. Ignoring.", m_zone.c_str()); break; case StateStarted: //process is running along, kill it off.. @@ -101,20 +102,20 @@ void ZoneLaunch::Restart() { break; //we have no proc ref... cannot stop.. if(!ProcLauncher::get()->Terminate(m_ref, true)) { //failed to terminate the process, its not likely that it will work if we try again, so give up. - _log(LAUNCHER__ERROR, "Failed to terminate zone %s. Giving up and moving to stopped.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Failed to terminate zone %s. Giving up and moving to stopped.", m_zone.c_str()); m_state = StateStopped; break; } - _log(LAUNCHER__STATUS, "Termination signal sent to zone %s.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Termination signal sent to zone %s.", m_zone.c_str()); m_timer.Start(m_config->TerminateWait); m_state = StateRestartPending; break; case StateStopPending: - _log(LAUNCHER__STATUS, "Restart of zone %s requested when a stop is pending. Ignoring.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Restart of zone %s requested when a stop is pending. Ignoring.", m_zone.c_str()); break; case StateStopped: //process is already stopped... nothing to do.. - _log(LAUNCHER__STATUS, "Restart requested when zone %s is already stopped.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Restart requested when zone %s is already stopped.", m_zone.c_str()); break; } } @@ -123,7 +124,7 @@ void ZoneLaunch::Stop(bool graceful) { switch(m_state) { case StateStartPending: //we havent started yet, transition directly to stopped. - _log(LAUNCHER__STATUS, "Stopping zone %s before it has started.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Stopping zone %s before it has started.", m_zone.c_str()); m_state = StateStopped; break; case StateStarted: @@ -133,17 +134,17 @@ void ZoneLaunch::Stop(bool graceful) { break; //we have no proc ref... cannot stop.. if(!ProcLauncher::get()->Terminate(m_ref, graceful)) { //failed to terminate the process, its not likely that it will work if we try again, so give up. - _log(LAUNCHER__ERROR, "Failed to terminate zone %s. Giving up and moving to stopped.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Failed to terminate zone %s. Giving up and moving to stopped.", m_zone.c_str()); m_state = StateStopped; break; } - _log(LAUNCHER__STATUS, "Termination signal sent to zone %s.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Termination signal sent to zone %s.", m_zone.c_str()); m_timer.Start(m_config->TerminateWait); m_state = StateStopPending; break; case StateStopped: //process is already stopped... nothing to do.. - _log(LAUNCHER__STATUS, "Stop requested when zone %s is already stopped.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Stop requested when zone %s is already stopped.", m_zone.c_str()); break; } } @@ -163,17 +164,17 @@ bool ZoneLaunch::Process() { m_timer.Disable(); //actually start up the program - _log(LAUNCHER__STATUS, "Starting zone %s", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Starting zone %s", m_zone.c_str()); Start(); //now update the shared timer to reflect the proper start interval. if(s_running == 1) { //we are the first zone started. wait that interval. - _log(LAUNCHER__STATUS, "Waiting %d milliseconds before booting the second zone.", m_config->InitialBootWait); + Log.Out(Logs::Detail, Logs::Launcher, "Waiting %d milliseconds before booting the second zone.", m_config->InitialBootWait); s_startTimer.Start(m_config->InitialBootWait); } else { //just some follow on zone, use that interval. - _log(LAUNCHER__STATUS, "Waiting %d milliseconds before booting the next zone.", m_config->ZoneBootInterval); + Log.Out(Logs::Detail, Logs::Launcher, "Waiting %d milliseconds before booting the next zone.", m_config->ZoneBootInterval); s_startTimer.Start(m_config->ZoneBootInterval); } @@ -186,7 +187,7 @@ bool ZoneLaunch::Process() { //waiting for notification that our child has died.. if(m_timer.Check()) { //we have timed out, try to kill the child again - _log(LAUNCHER__STATUS, "Zone %s refused to die, killing again.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s refused to die, killing again.", m_zone.c_str()); Restart(); } break; @@ -196,12 +197,12 @@ bool ZoneLaunch::Process() { //we have timed out, try to kill the child again m_killFails++; if(m_killFails > 5) { //should get this number from somewhere.. - _log(LAUNCHER__STATUS, "Zone %s refused to die, giving up and acting like its dead.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s refused to die, giving up and acting like its dead.", m_zone.c_str()); m_state = StateStopped; s_running--; SendStatus(); } else { - _log(LAUNCHER__STATUS, "Zone %s refused to die, killing again.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s refused to die, killing again.", m_zone.c_str()); Stop(false); } } @@ -220,29 +221,29 @@ void ZoneLaunch::OnTerminate(const ProcLauncher::ProcRef &ref, const ProcLaunche switch(m_state) { case StateStartPending: - _log(LAUNCHER__STATUS, "Zone %s has gone down before we started it..?? Restart timer started.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s has gone down before we started it..?? Restart timer started.", m_zone.c_str()); m_state = StateStartPending; m_timer.Start(m_config->RestartWait); break; case StateStarted: //something happened to our happy process... - _log(LAUNCHER__STATUS, "Zone %s has gone down. Restart timer started.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s has gone down. Restart timer started.", m_zone.c_str()); m_state = StateStartPending; m_timer.Start(m_config->RestartWait); break; case StateRestartPending: //it finally died, start it on up again - _log(LAUNCHER__STATUS, "Zone %s has terminated. Transitioning to starting state.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s has terminated. Transitioning to starting state.", m_zone.c_str()); m_state = StateStartPending; break; case StateStopPending: //it finally died, transition to close. - _log(LAUNCHER__STATUS, "Zone %s has terminated. Transitioning to stopped state.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Zone %s has terminated. Transitioning to stopped state.", m_zone.c_str()); m_state = StateStopped; break; case StateStopped: //we already thought it was stopped... dont care... - _log(LAUNCHER__STATUS, "Notified of zone %s terminating when we thought it was stopped.", m_zone.c_str()); + Log.Out(Logs::Detail, Logs::Launcher, "Notified of zone %s terminating when we thought it was stopped.", m_zone.c_str()); break; } diff --git a/loginserver/main.cpp b/loginserver/main.cpp index 820cc9113..31941b800 100644 --- a/loginserver/main.cpp +++ b/loginserver/main.cpp @@ -22,6 +22,7 @@ #include "../common/timer.h" #include "../common/platform.h" #include "../common/crash.h" +#include "../common/eqemu_logsys.h" #include "login_server.h" #include #include @@ -30,6 +31,7 @@ TimeoutManager timeout_manager; LoginServer server; +EQEmuLogSys logger; ErrorLog *server_log; bool run_server = true; diff --git a/queryserv/database.cpp b/queryserv/database.cpp index 56e09e238..e788c801c 100644 --- a/queryserv/database.cpp +++ b/queryserv/database.cpp @@ -18,7 +18,8 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #include #include @@ -68,14 +69,14 @@ bool Database::Connect(const char* host, const char* user, const char* passwd, c char errbuf[MYSQL_ERRMSG_SIZE]; if (!Open(host, user, passwd, database, port, &errnum, errbuf)) { - LogFile->write(EQEmuLog::Error, "Failed to connect to database: Error: %s", errbuf); + Log.Out(Logs::General, Logs::Error, "Failed to connect to database: Error: %s", errbuf); HandleMysqlError(errnum); return false; } else { - LogFile->write(EQEmuLog::Status, "Using database '%s' at %s:%d",database,host,port); + Log.Out(Logs::General, Logs::Status, "Using database '%s' at %s:%d",database,host,port); return true; } } @@ -115,8 +116,8 @@ void Database::AddSpeech(const char* from, const char* to, const char* message, safe_delete_array(escapedMessage); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Speech Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Speech Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } @@ -135,8 +136,8 @@ void Database::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) { QS->char2_money.silver, QS->char2_money.copper, QS->char2_count); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Trade Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Trade Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } if(detailCount == 0) @@ -155,8 +156,8 @@ void Database::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) { QS->items[i].aug_3, QS->items[i].aug_4, QS->items[i].aug_5); results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Trade Log Record Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Trade Log Record Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } } @@ -178,8 +179,8 @@ void Database::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCount) QS->npc_count); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Handin Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Handin Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } if(detailCount == 0) @@ -197,8 +198,8 @@ void Database::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCount) QS->items[i].aug_2, QS->items[i].aug_3, QS->items[i].aug_4, QS->items[i].aug_5); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Handin Log Record Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Handin Log Record Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } } @@ -212,8 +213,8 @@ void Database::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members){ QS->s1.NPCID, QS->s1.Type, QS->s1.ZoneID); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed NPC Kill Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed NPC Kill Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } if(members == 0) @@ -227,8 +228,8 @@ void Database::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members){ lastIndex, QS->Chars[i].char_id); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed NPC Kill Log Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed NPC Kill Log Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } } @@ -242,8 +243,8 @@ void Database::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) { QS->char_id, QS->stack_size, QS->char_count, QS->char_count); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Delete Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Delete Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } if(items == 0) @@ -260,8 +261,8 @@ void Database::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) { QS->items[i].aug_5); results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Delete Log Record Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Delete Log Record Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } } @@ -278,8 +279,8 @@ void Database::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) { QS->char_count, QS->postaction); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Move Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Move Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } if(items == 0) @@ -296,8 +297,8 @@ void Database::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) { QS->items[i].aug_3, QS->items[i].aug_4, QS->items[i].aug_5); results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Move Log Record Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Move Log Record Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } } @@ -319,8 +320,8 @@ void Database::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint3 QS->char_money.copper, QS->char_count); auto results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Transaction Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Transaction Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } if(items == 0) @@ -337,8 +338,8 @@ void Database::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint3 QS->items[i].aug_5); results = QueryDatabase(query); if(!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Transaction Log Record Entry Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Transaction Log Record Entry Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } } @@ -355,10 +356,42 @@ void Database::GeneralQueryReceive(ServerPacket *pack) { std::string query(queryBuffer); auto results = QueryDatabase(query); if (!results.Success()) { - _log(QUERYSERV__ERROR, "Failed Delete Log Record Insert: %s", results.ErrorMessage().c_str()); - _log(QUERYSERV__ERROR, "%s", query.c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "Failed Delete Log Record Insert: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::QS_Server, "%s", query.c_str()); } safe_delete(pack); safe_delete(queryBuffer); } + +void Database::LoadLogSettings(EQEmuLogSys::LogSettings* log_settings){ + std::string query = + "SELECT " + "log_category_id, " + "log_category_description, " + "log_to_console, " + "log_to_file, " + "log_to_gmsay " + "FROM " + "logsys_categories " + "ORDER BY log_category_id"; + auto results = QueryDatabase(query); + + int log_category = 0; + Log.file_logs_enabled = false; + + for (auto row = results.begin(); row != results.end(); ++row) { + log_category = atoi(row[0]); + log_settings[log_category].log_to_console = atoi(row[2]); + log_settings[log_category].log_to_file = atoi(row[3]); + log_settings[log_category].log_to_gmsay = atoi(row[4]); + + /* + This determines whether or not the process needs to actually file log anything. + If we go through this whole loop and nothing is set to any debug level, there is no point to create a file or keep anything open + */ + if (log_settings[log_category].log_to_file > 0){ + Log.file_logs_enabled = true; + } + } +} \ No newline at end of file diff --git a/queryserv/database.h b/queryserv/database.h index a25d91611..b2d32341b 100644 --- a/queryserv/database.h +++ b/queryserv/database.h @@ -23,7 +23,8 @@ #define AUTHENTICATION_TIMEOUT 60 #define INVALID_ID 0xFFFFFFFF -#include "../common/debug.h" +#include "../common/eqemu_logsys.h" +#include "../common/global_define.h" #include "../common/types.h" #include "../common/dbcore.h" #include "../common/linked_list.h" @@ -50,6 +51,9 @@ public: void LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 Items); void LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 Items); void GeneralQueryReceive(ServerPacket *pack); + + void LoadLogSettings(EQEmuLogSys::LogSettings* log_settings); + protected: void HandleMysqlError(uint32 errnum); private: diff --git a/queryserv/lfguild.cpp b/queryserv/lfguild.cpp index c135d4991..340321f06 100644 --- a/queryserv/lfguild.cpp +++ b/queryserv/lfguild.cpp @@ -2,6 +2,7 @@ #include "lfguild.h" #include "database.h" #include "worldserver.h" +#include "../common/eqemu_logsys.h" #include "../common/string_util.h" #include "../common/packet_dump.h" #include "../common/rulesys.h" @@ -39,7 +40,6 @@ bool LFGuildManager::LoadDatabase() "`aacount`, `timezone`, `timeposted` FROM `lfguild`"; auto results = database.QueryDatabase(query); if (!results.Success()) { - _log(QUERYSERV__ERROR, "Failed to load LFGuild info from database. %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -240,8 +240,6 @@ void LFGuildManager::TogglePlayer(uint32 FromZoneID, uint32 FromInstanceID, char std::string query = StringFormat("DELETE FROM `lfguild` WHERE `type` = 0 AND `name` = '%s'", From); auto results = database.QueryDatabase(query); - if(!results.Success()) - _log(QUERYSERV__ERROR, "Error removing player from LFGuild table, query was %s, %s", query.c_str(), results.ErrorMessage().c_str()); uint32 Now = time(nullptr); @@ -255,8 +253,6 @@ void LFGuildManager::TogglePlayer(uint32 FromZoneID, uint32 FromInstanceID, char "VALUES (0, '%s', '%s', %u, 0, %u, %u, %u, %u)", From, Comments, Level, Class, AAPoints, TimeZone, Now); auto results = database.QueryDatabase(query); - if(!results.Success()) - _log(QUERYSERV__ERROR, "Error inserting player into LFGuild table, query was %s, %s", query.c_str(), results.ErrorMessage().c_str()); } ServerPacket *pack = new ServerPacket(ServerOP_QueryServGeneric, strlen(From) + strlen(Comments) + 30); @@ -286,8 +282,6 @@ void LFGuildManager::ToggleGuild(uint32 FromZoneID, uint32 FromInstanceID, char std::string query = StringFormat("DELETE FROM `lfguild` WHERE `type` = 1 AND `name` = '%s'", GuildName); auto results = database.QueryDatabase(query); - if(!results.Success()) - _log(QUERYSERV__ERROR, "Error removing guild from LFGuild table, query was %s, %s", query.c_str(), results.ErrorMessage().c_str()); uint32 Now = time(nullptr); @@ -303,8 +297,6 @@ void LFGuildManager::ToggleGuild(uint32 FromZoneID, uint32 FromInstanceID, char GuildName, Comments, FromLevel, ToLevel, Classes, AACount, TimeZone, Now); auto results = database.QueryDatabase(query); - if(!results.Success()) - _log(QUERYSERV__ERROR, "Error inserting guild into LFGuild table, query was %s, %s", query.c_str(), results.ErrorMessage().c_str()); } @@ -334,7 +326,6 @@ void LFGuildManager::ExpireEntries() std::string query = StringFormat("DELETE from `lfguild` WHERE `type` = 0 AND `name` = '%s'", (*it).Name.c_str()); auto results = database.QueryDatabase(query); if(!results.Success()) - _log(QUERYSERV__ERROR, "Error expiring player LFGuild entry, query was %s, %s", query.c_str(), results.ErrorMessage().c_str()); it = Players.erase(it); } @@ -347,7 +338,6 @@ void LFGuildManager::ExpireEntries() std::string query = StringFormat("DELETE from `lfguild` WHERE `type` = 1 AND `name` = '%s'", (*it2).Name.c_str()); auto results = database.QueryDatabase(query); if(!results.Success()) - _log(QUERYSERV__ERROR, "Error removing guild LFGuild entry, query was %s, %s", query.c_str(), results.ErrorMessage().c_str()); it2 = Guilds.erase(it2); } diff --git a/queryserv/queryserv.cpp b/queryserv/queryserv.cpp index 22ddb87ee..4ce00ed4b 100644 --- a/queryserv/queryserv.cpp +++ b/queryserv/queryserv.cpp @@ -17,7 +17,8 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/opcodemgr.h" #include "../common/eq_stream_factory.h" #include "../common/rulesys.h" @@ -39,6 +40,7 @@ LFGuildManager lfguildmanager; std::string WorldShortName; const queryservconfig *Config; WorldServer *worldserver = 0; +EQEmuLogSys Log; void CatchSignal(int sig_num) { RunLoops = false; @@ -48,6 +50,7 @@ void CatchSignal(int sig_num) { int main() { RegisterExecutablePlatform(ExePlatformQueryServ); + Log.LoadLogSettingsDefaults(); set_exception_handler(); Timer LFGuildExpireTimer(60000); Timer InterserverTimer(INTERSERVER_TIMER); // does auto-reconnect @@ -62,16 +65,16 @@ int main() { */ - _log(QUERYSERV__INIT, "Starting EQEmu QueryServ."); + Log.Out(Logs::General, Logs::QS_Server, "Starting EQEmu QueryServ."); if (!queryservconfig::LoadConfig()) { - _log(QUERYSERV__INIT, "Loading server configuration failed."); + Log.Out(Logs::General, Logs::QS_Server, "Loading server configuration failed."); return 1; } Config = queryservconfig::get(); WorldShortName = Config->ShortName; - _log(QUERYSERV__INIT, "Connecting to MySQL..."); + Log.Out(Logs::General, Logs::QS_Server, "Connecting to MySQL..."); /* MySQL Connection */ if (!database.Connect( @@ -80,22 +83,20 @@ int main() { Config->QSDatabasePassword.c_str(), Config->QSDatabaseDB.c_str(), Config->QSDatabasePort)) { - _log(WORLD__INIT_ERR, "Cannot continue without a database connection."); + Log.Out(Logs::General, Logs::QS_Server, "Cannot continue without a database connection."); return 1; } - /* Initialize Logging */ - if (!load_log_settings(Config->LogSettingsFile.c_str())) - _log(QUERYSERV__INIT, "Warning: Unable to read %s", Config->LogSettingsFile.c_str()); - else - _log(QUERYSERV__INIT, "Log settings loaded from %s", Config->LogSettingsFile.c_str()); + /* Register Log System and Settings */ + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); if (signal(SIGINT, CatchSignal) == SIG_ERR) { - _log(QUERYSERV__ERROR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::QS_Server, "Could not set signal handler"); return 1; } if (signal(SIGTERM, CatchSignal) == SIG_ERR) { - _log(QUERYSERV__ERROR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::QS_Server, "Could not set signal handler"); return 1; } @@ -119,6 +120,7 @@ int main() { timeout_manager.CheckTimeouts(); Sleep(100); } + Log.CloseFileLogs(); } void UpdateWindowTitle(char* iNewTitle) { diff --git a/queryserv/queryservconfig.cpp b/queryserv/queryservconfig.cpp index 0c44a7c87..716ae0618 100644 --- a/queryserv/queryservconfig.cpp +++ b/queryserv/queryservconfig.cpp @@ -17,7 +17,7 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "queryservconfig.h" queryservconfig *queryservconfig::_chat_config = nullptr; diff --git a/queryserv/worldserver.cpp b/queryserv/worldserver.cpp index fc87929ca..2d2f288a4 100644 --- a/queryserv/worldserver.cpp +++ b/queryserv/worldserver.cpp @@ -15,23 +15,26 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" -#include -#include -#include -#include -#include -#include -#include -#include "../common/servertalk.h" -#include "worldserver.h" -#include "queryservconfig.h" -#include "database.h" -#include "lfguild.h" -#include "../common/packet_functions.h" + +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/md5.h" #include "../common/packet_dump.h" +#include "../common/packet_functions.h" +#include "../common/servertalk.h" + +#include "database.h" +#include "lfguild.h" +#include "queryservconfig.h" +#include "worldserver.h" +#include +#include +#include +#include +#include +#include +#include extern WorldServer worldserver; extern const queryservconfig *Config; @@ -50,7 +53,7 @@ WorldServer::~WorldServer() void WorldServer::OnConnected() { - _log(QUERYSERV__INIT, "Connected to World."); + Log.Out(Logs::Detail, Logs::QS_Server, "Connected to World."); WorldConnection::OnConnected(); } @@ -63,7 +66,7 @@ void WorldServer::Process() ServerPacket *pack = 0; while((pack = tcpc.PopPacket())) { - _log(QUERYSERV__TRACE, "Received Opcode: %4X", pack->opcode); + Log.Out(Logs::Detail, Logs::QS_Server, "Received Opcode: %4X", pack->opcode); switch(pack->opcode) { case 0: { break; @@ -145,7 +148,7 @@ void WorldServer::Process() break; } default: - _log(QUERYSERV__ERROR, "Received unhandled ServerOP_QueryServGeneric", Type); + Log.Out(Logs::Detail, Logs::QS_Server, "Received unhandled ServerOP_QueryServGeneric", Type); break; } break; diff --git a/shared_memory/base_data.cpp b/shared_memory/base_data.cpp index c473101da..086256cda 100644 --- a/shared_memory/base_data.cpp +++ b/shared_memory/base_data.cpp @@ -17,7 +17,7 @@ */ #include "base_data.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/ipc_mutex.h" #include "../common/memory_mapped_file.h" diff --git a/shared_memory/items.cpp b/shared_memory/items.cpp index 432458701..48b81b6fc 100644 --- a/shared_memory/items.cpp +++ b/shared_memory/items.cpp @@ -17,7 +17,7 @@ */ #include "items.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/ipc_mutex.h" #include "../common/memory_mapped_file.h" diff --git a/shared_memory/loot.cpp b/shared_memory/loot.cpp index 81c0ef5a5..66982c05a 100644 --- a/shared_memory/loot.cpp +++ b/shared_memory/loot.cpp @@ -17,7 +17,7 @@ */ #include "loot.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/ipc_mutex.h" #include "../common/memory_mapped_file.h" diff --git a/shared_memory/main.cpp b/shared_memory/main.cpp index b9ee32929..2623ccd26 100644 --- a/shared_memory/main.cpp +++ b/shared_memory/main.cpp @@ -17,7 +17,9 @@ */ #include -#include "../common/debug.h" + +#include "../common/eqemu_logsys.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/eqemu_config.h" #include "../common/platform.h" @@ -31,30 +33,34 @@ #include "spells.h" #include "base_data.h" +EQEmuLogSys Log; + int main(int argc, char **argv) { RegisterExecutablePlatform(ExePlatformSharedMemory); + Log.LoadLogSettingsDefaults(); set_exception_handler(); - LogFile->write(EQEmuLog::Status, "Shared Memory Loader Program"); + Log.Out(Logs::General, Logs::Status, "Shared Memory Loader Program"); if(!EQEmuConfig::LoadConfig()) { - LogFile->write(EQEmuLog::Error, "Unable to load configuration file."); + Log.Out(Logs::General, Logs::Error, "Unable to load configuration file."); return 1; } const EQEmuConfig *config = EQEmuConfig::get(); - if(!load_log_settings(config->LogSettingsFile.c_str())) { - LogFile->write(EQEmuLog::Error, "Warning: unable to read %s.", config->LogSettingsFile.c_str()); - } SharedDatabase database; - LogFile->write(EQEmuLog::Status, "Connecting to database..."); + Log.Out(Logs::General, Logs::Status, "Connecting to database..."); if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(), config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) { - LogFile->write(EQEmuLog::Error, "Unable to connect to the database, cannot continue without a " + Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a " "database connection"); return 1; } + /* Register Log System and Settings */ + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); + bool load_all = true; bool load_items = false; bool load_factions = false; @@ -109,64 +115,66 @@ int main(int argc, char **argv) { } if(load_all || load_items) { - LogFile->write(EQEmuLog::Status, "Loading items..."); + Log.Out(Logs::General, Logs::Status, "Loading items..."); try { LoadItems(&database); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "%s", ex.what()); + Log.Out(Logs::General, Logs::Error, "%s", ex.what()); return 1; } } if(load_all || load_factions) { - LogFile->write(EQEmuLog::Status, "Loading factions..."); + Log.Out(Logs::General, Logs::Status, "Loading factions..."); try { LoadFactions(&database); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "%s", ex.what()); + Log.Out(Logs::General, Logs::Error, "%s", ex.what()); return 1; } } if(load_all || load_loot) { - LogFile->write(EQEmuLog::Status, "Loading loot..."); + Log.Out(Logs::General, Logs::Status, "Loading loot..."); try { LoadLoot(&database); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "%s", ex.what()); + Log.Out(Logs::General, Logs::Error, "%s", ex.what()); return 1; } } if(load_all || load_skill_caps) { - LogFile->write(EQEmuLog::Status, "Loading skill caps..."); + Log.Out(Logs::General, Logs::Status, "Loading skill caps..."); try { LoadSkillCaps(&database); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "%s", ex.what()); + Log.Out(Logs::General, Logs::Error, "%s", ex.what()); return 1; } } if(load_all || load_spells) { - LogFile->write(EQEmuLog::Status, "Loading spells..."); + Log.Out(Logs::General, Logs::Status, "Loading spells..."); try { LoadSpells(&database); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "%s", ex.what()); + Log.Out(Logs::General, Logs::Error, "%s", ex.what()); return 1; } } if(load_all || load_bd) { - LogFile->write(EQEmuLog::Status, "Loading base data..."); + Log.Out(Logs::General, Logs::Status, "Loading base data..."); try { LoadBaseData(&database); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "%s", ex.what()); + Log.Out(Logs::General, Logs::Error, "%s", ex.what()); return 1; } } + Log.CloseFileLogs(); + return 0; } diff --git a/shared_memory/npc_faction.cpp b/shared_memory/npc_faction.cpp index 8a9575497..df33b7368 100644 --- a/shared_memory/npc_faction.cpp +++ b/shared_memory/npc_faction.cpp @@ -17,7 +17,7 @@ */ #include "npc_faction.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/ipc_mutex.h" #include "../common/memory_mapped_file.h" diff --git a/shared_memory/skill_caps.cpp b/shared_memory/skill_caps.cpp index c8cc0838b..94205ce72 100644 --- a/shared_memory/skill_caps.cpp +++ b/shared_memory/skill_caps.cpp @@ -17,7 +17,7 @@ */ #include "skill_caps.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/ipc_mutex.h" #include "../common/memory_mapped_file.h" diff --git a/shared_memory/spells.cpp b/shared_memory/spells.cpp index eb8f34777..444f3b466 100644 --- a/shared_memory/spells.cpp +++ b/shared_memory/spells.cpp @@ -17,7 +17,7 @@ */ #include "spells.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/shareddb.h" #include "../common/ipc_mutex.h" #include "../common/memory_mapped_file.h" diff --git a/ucs/chatchannel.cpp b/ucs/chatchannel.cpp index 56b7eb5b9..890d3d908 100644 --- a/ucs/chatchannel.cpp +++ b/ucs/chatchannel.cpp @@ -17,10 +17,11 @@ */ +#include "../common/eqemu_logsys.h" +#include "../common/string_util.h" #include "chatchannel.h" #include "clientlist.h" #include "database.h" -#include "../common/string_util.h" #include extern Database database; @@ -41,7 +42,7 @@ ChatChannel::ChatChannel(std::string inName, std::string inOwner, std::string in Moderated = false; - _log(UCS__TRACE, "New ChatChannel created: Name: [%s], Owner: [%s], Password: [%s], MinStatus: %i", + Log.Out(Logs::Detail, Logs::UCS_Server, "New ChatChannel created: Name: [%s], Owner: [%s], Password: [%s], MinStatus: %i", Name.c_str(), Owner.c_str(), Password.c_str(), MinimumStatus); } @@ -148,7 +149,7 @@ void ChatChannelList::SendAllChannels(Client *c) { void ChatChannelList::RemoveChannel(ChatChannel *Channel) { - _log(UCS__TRACE, "RemoveChannel(%s)", Channel->GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "RemoveChannel(%s)", Channel->GetName().c_str()); LinkedListIterator iterator(ChatChannels); @@ -169,7 +170,7 @@ void ChatChannelList::RemoveChannel(ChatChannel *Channel) { void ChatChannelList::RemoveAllChannels() { - _log(UCS__TRACE, "RemoveAllChannels"); + Log.Out(Logs::Detail, Logs::UCS_Server, "RemoveAllChannels"); LinkedListIterator iterator(ChatChannels); @@ -227,7 +228,7 @@ void ChatChannel::AddClient(Client *c) { if(IsClientInChannel(c)) { - _log(UCS__ERROR, "Client %s already in channel %s", c->GetName().c_str(), GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Client %s already in channel %s", c->GetName().c_str(), GetName().c_str()); return; } @@ -236,7 +237,7 @@ void ChatChannel::AddClient(Client *c) { int AccountStatus = c->GetAccountStatus(); - _log(UCS__TRACE, "Adding %s to channel %s", c->GetName().c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Adding %s to channel %s", c->GetName().c_str(), Name.c_str()); LinkedListIterator iterator(ClientsInChannel); @@ -261,7 +262,7 @@ bool ChatChannel::RemoveClient(Client *c) { if(!c) return false; - _log(UCS__TRACE, "RemoveClient %s from channel %s", c->GetName().c_str(), GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "RemoveClient %s from channel %s", c->GetName().c_str(), GetName().c_str()); bool HideMe = c->GetHideMe(); @@ -298,7 +299,7 @@ bool ChatChannel::RemoveClient(Client *c) { if((Password.length() == 0) || (RuleI(Channels, DeleteTimer) == 0)) return false; - _log(UCS__TRACE, "Starting delete timer for empty password protected channel %s", Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Starting delete timer for empty password protected channel %s", Name.c_str()); DeleteTimer.Start(RuleI(Channels, DeleteTimer) * 60000); } @@ -396,7 +397,7 @@ void ChatChannel::SendMessageToChannel(std::string Message, Client* Sender) { if(ChannelClient) { - _log(UCS__TRACE, "Sending message to %s from %s", + Log.Out(Logs::Detail, Logs::UCS_Server, "Sending message to %s from %s", ChannelClient->GetName().c_str(), Sender->GetName().c_str()); ChannelClient->SendChannelMessage(Name, Message, Sender); } @@ -478,7 +479,7 @@ ChatChannel *ChatChannelList::AddClientToChannel(std::string ChannelName, Client return nullptr; } - _log(UCS__TRACE, "AddClient to channel [%s] with password [%s]", NormalisedName.c_str(), Password.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "AddClient to channel [%s] with password [%s]", NormalisedName.c_str(), Password.c_str()); ChatChannel *RequiredChannel = FindChannel(NormalisedName); @@ -554,7 +555,7 @@ void ChatChannelList::Process() { if(CurrentChannel && CurrentChannel->ReadyToDelete()) { - _log(UCS__TRACE, "Empty temporary password protected channel %s being destroyed.", + Log.Out(Logs::Detail, Logs::UCS_Server, "Empty temporary password protected channel %s being destroyed.", CurrentChannel->GetName().c_str()); RemoveChannel(CurrentChannel); @@ -571,7 +572,7 @@ void ChatChannel::AddInvitee(std::string Invitee) { Invitees.push_back(Invitee); - _log(UCS__TRACE, "Added %s as invitee to channel %s", Invitee.c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Added %s as invitee to channel %s", Invitee.c_str(), Name.c_str()); } } @@ -586,7 +587,7 @@ void ChatChannel::RemoveInvitee(std::string Invitee) { Invitees.erase(Iterator); - _log(UCS__TRACE, "Removed %s as invitee to channel %s", Invitee.c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Removed %s as invitee to channel %s", Invitee.c_str(), Name.c_str()); return; } @@ -612,7 +613,7 @@ void ChatChannel::AddModerator(std::string Moderator) { Moderators.push_back(Moderator); - _log(UCS__TRACE, "Added %s as moderator to channel %s", Moderator.c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Added %s as moderator to channel %s", Moderator.c_str(), Name.c_str()); } } @@ -627,7 +628,7 @@ void ChatChannel::RemoveModerator(std::string Moderator) { Moderators.erase(Iterator); - _log(UCS__TRACE, "Removed %s as moderator to channel %s", Moderator.c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Removed %s as moderator to channel %s", Moderator.c_str(), Name.c_str()); return; } @@ -653,7 +654,7 @@ void ChatChannel::AddVoice(std::string inVoiced) { Voiced.push_back(inVoiced); - _log(UCS__TRACE, "Added %s as voiced to channel %s", inVoiced.c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Added %s as voiced to channel %s", inVoiced.c_str(), Name.c_str()); } } @@ -668,7 +669,7 @@ void ChatChannel::RemoveVoice(std::string inVoiced) { Voiced.erase(Iterator); - _log(UCS__TRACE, "Removed %s as voiced to channel %s", inVoiced.c_str(), Name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Removed %s as voiced to channel %s", inVoiced.c_str(), Name.c_str()); return; } diff --git a/ucs/clientlist.cpp b/ucs/clientlist.cpp index 26c1befa4..a643cdfa9 100644 --- a/ucs/clientlist.cpp +++ b/ucs/clientlist.cpp @@ -17,8 +17,9 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/string_util.h" +#include "../common/eqemu_logsys.h" #include "clientlist.h" #include "database.h" @@ -235,7 +236,7 @@ std::vector ParseRecipients(std::string RecipientString) { static void ProcessMailTo(Client *c, std::string MailMessage) { - _log(UCS__TRACE, "MAILTO: From %s, %s", c->MailBoxName().c_str(), MailMessage.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "MAILTO: From %s, %s", c->MailBoxName().c_str(), MailMessage.c_str()); std::vector Recipients; @@ -304,7 +305,7 @@ static void ProcessMailTo(Client *c, std::string MailMessage) { if (!database.SendMail(Recipient, c->MailBoxName(), Subject, Body, RecipientsString)) { - _log(UCS__ERROR, "Failed in SendMail(%s, %s, %s, %s)", Recipient.c_str(), + Log.Out(Logs::Detail, Logs::UCS_Server, "Failed in SendMail(%s, %s, %s, %s)", Recipient.c_str(), c->MailBoxName().c_str(), Subject.c_str(), RecipientsString.c_str()); int PacketLength = 10 + Recipient.length() + Subject.length(); @@ -322,7 +323,6 @@ static void ProcessMailTo(Client *c, std::string MailMessage) { VARSTRUCT_ENCODE_TYPE(uint16, PacketBuffer, 0x3237); VARSTRUCT_ENCODE_TYPE(uint8, PacketBuffer, 0x0); - _pkt(UCS__PACKETS, outapp); c->QueuePacket(outapp); @@ -343,7 +343,6 @@ static void ProcessMailTo(Client *c, std::string MailMessage) { VARSTRUCT_ENCODE_STRING(PacketBuffer, "test"); // Doesn't matter what we send in this text field. VARSTRUCT_ENCODE_STRING(PacketBuffer, "1"); - _pkt(UCS__PACKETS, outapp); c->QueuePacket(outapp); @@ -399,7 +398,7 @@ static void ProcessSetMessageStatus(std::string SetMessageCommand) { static void ProcessCommandBuddy(Client *c, std::string Buddy) { - _log(UCS__TRACE, "Received buddy command with parameters %s", Buddy.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Received buddy command with parameters %s", Buddy.c_str()); c->GeneralChannelMessage("Buddy list modified"); uint8 SubAction = 1; @@ -420,7 +419,6 @@ static void ProcessCommandBuddy(Client *c, std::string Buddy) { database.RemoveFriendOrIgnore(c->GetCharID(), 1, Buddy.substr(1)); } - _pkt(UCS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -429,7 +427,7 @@ static void ProcessCommandBuddy(Client *c, std::string Buddy) { static void ProcessCommandIgnore(Client *c, std::string Ignoree) { - _log(UCS__TRACE, "Received ignore command with parameters %s", Ignoree.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Received ignore command with parameters %s", Ignoree.c_str()); c->GeneralChannelMessage("Ignore list modified"); uint8 SubAction = 0; @@ -464,7 +462,6 @@ static void ProcessCommandIgnore(Client *c, std::string Ignoree) { VARSTRUCT_ENCODE_STRING(PacketBuffer, Ignoree.c_str()); - _pkt(UCS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -480,9 +477,9 @@ Clientlist::Clientlist(int ChatPort) { exit(1); if (chatsf->Open()) - _log(UCS__INIT,"Client (UDP) Chat listener started on port %i.", ChatPort); + Log.Out(Logs::Detail, Logs::UCS_Server,"Client (UDP) Chat listener started on port %i.", ChatPort); else { - _log(UCS__ERROR,"Failed to start client (UDP) listener (port %-4i)", ChatPort); + Log.Out(Logs::Detail, Logs::UCS_Server,"Failed to start client (UDP) listener (port %-4i)", ChatPort); exit(1); } @@ -559,13 +556,13 @@ void Clientlist::CheckForStaleConnections(Client *c) { if(((*Iterator) != c) && ((c->GetName() == (*Iterator)->GetName()) && (c->GetConnectionType() == (*Iterator)->GetConnectionType()))) { - _log(UCS__CLIENT, "Removing old connection for %s", c->GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Removing old connection for %s", c->GetName().c_str()); struct in_addr in; in.s_addr = (*Iterator)->ClientStream->GetRemoteIP(); - _log(UCS__CLIENT, "Client connection from %s:%d closed.", inet_ntoa(in), + Log.Out(Logs::Detail, Logs::UCS_Server, "Client connection from %s:%d closed.", inet_ntoa(in), ntohs((*Iterator)->ClientStream->GetRemotePort())); safe_delete((*Iterator)); @@ -585,7 +582,7 @@ void Clientlist::Process() { in.s_addr = eqs->GetRemoteIP(); - _log(UCS__CLIENT, "New Client UDP connection from %s:%d", inet_ntoa(in), ntohs(eqs->GetRemotePort())); + Log.Out(Logs::Detail, Logs::UCS_Server, "New Client UDP connection from %s:%d", inet_ntoa(in), ntohs(eqs->GetRemotePort())); eqs->SetOpcodeManager(&ChatOpMgr); @@ -605,7 +602,7 @@ void Clientlist::Process() { in.s_addr = (*Iterator)->ClientStream->GetRemoteIP(); - _log(UCS__CLIENT, "Client connection from %s:%d closed.", inet_ntoa(in), + Log.Out(Logs::Detail, Logs::UCS_Server, "Client connection from %s:%d closed.", inet_ntoa(in), ntohs((*Iterator)->ClientStream->GetRemotePort())); safe_delete((*Iterator)); @@ -625,7 +622,6 @@ void Clientlist::Process() { while( KeyValid && !(*Iterator)->GetForceDisconnect() && (app = (EQApplicationPacket *)(*Iterator)->ClientStream->PopPacket())) { - _pkt(UCS__PACKETS, app); EmuOpcode opcode = app->GetOpcode(); @@ -645,7 +641,7 @@ void Clientlist::Process() { if(strlen(PacketBuffer) != 9) { - _log(UCS__ERROR, "Mail key is the wrong size. Version of world incompatible with UCS."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Mail key is the wrong size. Version of world incompatible with UCS."); KeyValid = false; break; } @@ -666,11 +662,11 @@ void Clientlist::Process() { else CharacterName = MailBoxString.substr(LastPeriod + 1); - _log(UCS__TRACE, "Received login for user %s with key %s", MailBox, Key); + Log.Out(Logs::Detail, Logs::UCS_Server, "Received login for user %s with key %s", MailBox, Key); if(!database.VerifyMailKey(CharacterName, (*Iterator)->ClientStream->GetRemoteIP(), Key)) { - _log(UCS__ERROR, "Chat Key for %s does not match, closing connection.", MailBox); + Log.Out(Logs::Detail, Logs::UCS_Server, "Chat Key for %s does not match, closing connection.", MailBox); KeyValid = false; @@ -702,7 +698,7 @@ void Clientlist::Process() { default: { - _log(UCS__ERROR, "Unhandled chat opcode %8X", opcode); + Log.Out(Logs::Detail, Logs::UCS_Server, "Unhandled chat opcode %8X", opcode); break; } } @@ -715,7 +711,7 @@ void Clientlist::Process() { in.s_addr = (*Iterator)->ClientStream->GetRemoteIP(); - _log(UCS__TRACE, "Force disconnecting client: %s:%d, KeyValid=%i, GetForceDisconnect()=%i", + Log.Out(Logs::Detail, Logs::UCS_Server, "Force disconnecting client: %s:%d, KeyValid=%i, GetForceDisconnect()=%i", inet_ntoa(in), ntohs((*Iterator)->ClientStream->GetRemotePort()), KeyValid, (*Iterator)->GetForceDisconnect()); @@ -859,7 +855,7 @@ void Clientlist::ProcessOPMailCommand(Client *c, std::string CommandString) break; case CommandSetMessageStatus: - _log(UCS__TRACE, "Set Message Status, Params: %s", Parameters.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Set Message Status, Params: %s", Parameters.c_str()); ProcessSetMessageStatus(Parameters); break; @@ -884,7 +880,7 @@ void Clientlist::ProcessOPMailCommand(Client *c, std::string CommandString) default: c->SendHelp(); - _log(UCS__ERROR, "Unhandled OP_Mail command: %s", CommandString.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Unhandled OP_Mail command: %s", CommandString.c_str()); } } @@ -895,7 +891,7 @@ void Clientlist::CloseAllConnections() { for(Iterator = ClientChatConnections.begin(); Iterator != ClientChatConnections.end(); ++Iterator) { - _log(UCS__TRACE, "Removing client %s", (*Iterator)->GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Removing client %s", (*Iterator)->GetName().c_str()); (*Iterator)->CloseConnection(); } @@ -904,7 +900,7 @@ void Clientlist::CloseAllConnections() { void Client::AddCharacter(int CharID, const char *CharacterName, int Level) { if(!CharacterName) return; - _log(UCS__TRACE, "Adding character %s with ID %i for %s", CharacterName, CharID, GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Adding character %s with ID %i for %s", CharacterName, CharID, GetName().c_str()); CharacterEntry NewCharacter; NewCharacter.CharID = CharID; NewCharacter.Name = CharacterName; @@ -942,7 +938,6 @@ void Client::SendMailBoxes() { VARSTRUCT_ENCODE_STRING(PacketBuffer, s.c_str()); VARSTRUCT_ENCODE_TYPE(uint8, PacketBuffer, 0); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -970,7 +965,7 @@ void Client::AddToChannelList(ChatChannel *JoinedChannel) { for(int i = 0; i < MAX_JOINED_CHANNELS; i++) if(JoinedChannels[i] == nullptr) { JoinedChannels[i] = JoinedChannel; - _log(UCS__TRACE, "Added Channel %s to slot %i for %s", JoinedChannel->GetName().c_str(), i + 1, GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Added Channel %s to slot %i for %s", JoinedChannel->GetName().c_str(), i + 1, GetName().c_str()); return; } } @@ -1011,7 +1006,7 @@ void Client::JoinChannels(std::string ChannelNameList) { } } - _log(UCS__TRACE, "Client: %s joining channels %s", GetName().c_str(), ChannelNameList.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Client: %s joining channels %s", GetName().c_str(), ChannelNameList.c_str()); int NumberOfChannels = ChannelCount(); @@ -1086,7 +1081,6 @@ void Client::JoinChannels(std::string ChannelNameList) { sprintf(PacketBuffer, "%s", JoinedChannelsList.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1103,7 +1097,6 @@ void Client::JoinChannels(std::string ChannelNameList) { VARSTRUCT_ENCODE_TYPE(uint8, PacketBuffer, 0x00); VARSTRUCT_ENCODE_STRING(PacketBuffer, ChannelMessage.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1112,7 +1105,7 @@ void Client::JoinChannels(std::string ChannelNameList) { void Client::LeaveChannels(std::string ChannelNameList) { - _log(UCS__TRACE, "Client: %s leaving channels %s", GetName().c_str(), ChannelNameList.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Client: %s leaving channels %s", GetName().c_str(), ChannelNameList.c_str()); std::string::size_type CurrentPos = 0; @@ -1173,7 +1166,6 @@ void Client::LeaveChannels(std::string ChannelNameList) { sprintf(PacketBuffer, "%s", JoinedChannelsList.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1190,7 +1182,6 @@ void Client::LeaveChannels(std::string ChannelNameList) { VARSTRUCT_ENCODE_TYPE(uint8, PacketBuffer, 0x00); VARSTRUCT_ENCODE_STRING(PacketBuffer, ChannelMessage.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1274,7 +1265,6 @@ void Client::SendChannelList() { VARSTRUCT_ENCODE_TYPE(uint8, PacketBuffer, 0x00); VARSTRUCT_ENCODE_STRING(PacketBuffer, ChannelMessage.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1291,7 +1281,7 @@ void Client::SendChannelMessage(std::string Message) std::string ChannelName = Message.substr(1, MessageStart-1); - _log(UCS__TRACE, "%s tells %s, [%s]", GetName().c_str(), ChannelName.c_str(), Message.substr(MessageStart + 1).c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "%s tells %s, [%s]", GetName().c_str(), ChannelName.c_str(), Message.substr(MessageStart + 1).c_str()); ChatChannel *RequiredChannel = ChannelList->FindChannel(ChannelName); @@ -1434,7 +1424,7 @@ void Client::SendChannelMessageByNumber(std::string Message) { } } - _log(UCS__TRACE, "%s tells %s, [%s]", GetName().c_str(), RequiredChannel->GetName().c_str(), + Log.Out(Logs::Detail, Logs::UCS_Server, "%s tells %s, [%s]", GetName().c_str(), RequiredChannel->GetName().c_str(), Message.substr(MessageStart + 1).c_str()); if(RuleB(Chat, EnableAntiSpam)) @@ -1515,7 +1505,6 @@ void Client::SendChannelMessage(std::string ChannelName, std::string Message, Cl if(UnderfootOrLater) VARSTRUCT_ENCODE_STRING(PacketBuffer, "SPAM:0:"); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); safe_delete(outapp); @@ -1553,7 +1542,6 @@ void Client::AnnounceJoin(ChatChannel *Channel, Client *c) { VARSTRUCT_ENCODE_STRING(PacketBuffer, Channel->GetName().c_str()); VARSTRUCT_ENCODE_STRING(PacketBuffer, c->GetName().c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1573,7 +1561,6 @@ void Client::AnnounceLeave(ChatChannel *Channel, Client *c) { VARSTRUCT_ENCODE_STRING(PacketBuffer, Channel->GetName().c_str()); VARSTRUCT_ENCODE_STRING(PacketBuffer, c->GetName().c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -1598,7 +1585,6 @@ void Client::GeneralChannelMessage(std::string Message) { VARSTRUCT_ENCODE_TYPE(uint8, PacketBuffer, 0x00); VARSTRUCT_ENCODE_STRING(PacketBuffer, Message.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); safe_delete(outapp); @@ -1646,7 +1632,7 @@ void Client::SetChannelPassword(std::string ChannelPassword) { else Message = "Password change on channel " + ChannelName; - _log(UCS__TRACE, "Set password of channel [%s] to [%s] by %s", ChannelName.c_str(), Password.c_str(), GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Set password of channel [%s] to [%s] by %s", ChannelName.c_str(), Password.c_str(), GetName().c_str()); ChatChannel *RequiredChannel = ChannelList->FindChannel(ChannelName); @@ -1701,7 +1687,7 @@ void Client::SetChannelOwner(std::string CommandString) { if((ChannelName.length() > 0) && isdigit(ChannelName[0])) ChannelName = ChannelSlotName(atoi(ChannelName.c_str())); - _log(UCS__TRACE, "Set owner of channel [%s] to [%s]", ChannelName.c_str(), NewOwner.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Set owner of channel [%s] to [%s]", ChannelName.c_str(), NewOwner.c_str()); ChatChannel *RequiredChannel = ChannelList->FindChannel(ChannelName); @@ -1789,7 +1775,7 @@ void Client::ChannelInvite(std::string CommandString) { if((ChannelName.length() > 0) && isdigit(ChannelName[0])) ChannelName = ChannelSlotName(atoi(ChannelName.c_str())); - _log(UCS__TRACE, "[%s] invites [%s] to channel [%s]", GetName().c_str(), Invitee.c_str(), ChannelName.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "[%s] invites [%s] to channel [%s]", GetName().c_str(), Invitee.c_str(), ChannelName.c_str()); Client *RequiredClient = CL->FindCharacter(Invitee); @@ -1917,7 +1903,7 @@ void Client::ChannelGrantModerator(std::string CommandString) { if((ChannelName.length() > 0) && isdigit(ChannelName[0])) ChannelName = ChannelSlotName(atoi(ChannelName.c_str())); - _log(UCS__TRACE, "[%s] gives [%s] moderator rights to channel [%s]", GetName().c_str(), Moderator.c_str(), ChannelName.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "[%s] gives [%s] moderator rights to channel [%s]", GetName().c_str(), Moderator.c_str(), ChannelName.c_str()); Client *RequiredClient = CL->FindCharacter(Moderator); @@ -1998,7 +1984,7 @@ void Client::ChannelGrantVoice(std::string CommandString) { if((ChannelName.length() > 0) && isdigit(ChannelName[0])) ChannelName = ChannelSlotName(atoi(ChannelName.c_str())); - _log(UCS__TRACE, "[%s] gives [%s] voice to channel [%s]", GetName().c_str(), Voicee.c_str(), ChannelName.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "[%s] gives [%s] voice to channel [%s]", GetName().c_str(), Voicee.c_str(), ChannelName.c_str()); Client *RequiredClient = CL->FindCharacter(Voicee); @@ -2086,7 +2072,7 @@ void Client::ChannelKick(std::string CommandString) { if((ChannelName.length() > 0) && isdigit(ChannelName[0])) ChannelName = ChannelSlotName(atoi(ChannelName.c_str())); - _log(UCS__TRACE, "[%s] kicks [%s] from channel [%s]", GetName().c_str(), Kickee.c_str(), ChannelName.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "[%s] kicks [%s] from channel [%s]", GetName().c_str(), Kickee.c_str(), ChannelName.c_str()); Client *RequiredClient = CL->FindCharacter(Kickee); @@ -2195,32 +2181,32 @@ void Client::SetConnectionType(char c) { case 'S': { TypeOfConnection = ConnectionTypeCombined; - _log(UCS__TRACE, "Connection type is Combined (SoF/SoD)"); + Log.Out(Logs::Detail, Logs::UCS_Server, "Connection type is Combined (SoF/SoD)"); break; } case 'U': { TypeOfConnection = ConnectionTypeCombined; UnderfootOrLater = true; - _log(UCS__TRACE, "Connection type is Combined (Underfoot+)"); + Log.Out(Logs::Detail, Logs::UCS_Server, "Connection type is Combined (Underfoot+)"); break; } case 'M': { TypeOfConnection = ConnectionTypeMail; - _log(UCS__TRACE, "Connection type is Mail (6.2 or Titanium client)"); + Log.Out(Logs::Detail, Logs::UCS_Server, "Connection type is Mail (6.2 or Titanium client)"); break; } case 'C': { TypeOfConnection = ConnectionTypeChat; - _log(UCS__TRACE, "Connection type is Chat (6.2 or Titanium client)"); + Log.Out(Logs::Detail, Logs::UCS_Server, "Connection type is Chat (6.2 or Titanium client)"); break; } default: { TypeOfConnection = ConnectionTypeUnknown; - _log(UCS__TRACE, "Connection type is unknown."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Connection type is unknown."); } } } @@ -2289,7 +2275,6 @@ void Client::SendNotification(int MailBoxNumber, std::string Subject, std::strin VARSTRUCT_ENCODE_STRING(PacketBuffer, From.c_str()); VARSTRUCT_ENCODE_STRING(PacketBuffer, Subject.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -2298,11 +2283,11 @@ void Client::SendNotification(int MailBoxNumber, std::string Subject, std::strin void Client::ChangeMailBox(int NewMailBox) { - _log(UCS__TRACE, "%s Change to mailbox %i", MailBoxName().c_str(), NewMailBox); + Log.Out(Logs::Detail, Logs::UCS_Server, "%s Change to mailbox %i", MailBoxName().c_str(), NewMailBox); SetMailBox(NewMailBox); - _log(UCS__TRACE, "New mailbox is %s", MailBoxName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "New mailbox is %s", MailBoxName().c_str()); auto outapp = new EQApplicationPacket(OP_MailboxChange, 2); @@ -2310,7 +2295,6 @@ void Client::ChangeMailBox(int NewMailBox) { VARSTRUCT_ENCODE_INTSTRING(buf, NewMailBox); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -2339,7 +2323,6 @@ void Client::SendFriends() { VARSTRUCT_ENCODE_STRING(PacketBuffer, (*Iterator).c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -2362,7 +2345,6 @@ void Client::SendFriends() { VARSTRUCT_ENCODE_STRING(PacketBuffer, Ignoree.c_str()); - _pkt(UCS__PACKETS, outapp); QueuePacket(outapp); @@ -2376,13 +2358,13 @@ std::string Client::MailBoxName() { if((Characters.size() == 0) || (CurrentMailBox > (Characters.size() - 1))) { - _log(UCS__ERROR, "MailBoxName() called with CurrentMailBox set to %i and Characters.size() is %i", + Log.Out(Logs::Detail, Logs::UCS_Server, "MailBoxName() called with CurrentMailBox set to %i and Characters.size() is %i", CurrentMailBox, Characters.size()); return ""; } - _log(UCS__TRACE, "MailBoxName() called with CurrentMailBox set to %i and Characters.size() is %i", + Log.Out(Logs::Detail, Logs::UCS_Server, "MailBoxName() called with CurrentMailBox set to %i and Characters.size() is %i", CurrentMailBox, Characters.size()); return Characters[CurrentMailBox].Name; diff --git a/ucs/database.cpp b/ucs/database.cpp index 8b224b936..75be71377 100644 --- a/ucs/database.cpp +++ b/ucs/database.cpp @@ -18,7 +18,8 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #include #include @@ -73,14 +74,14 @@ bool Database::Connect(const char* host, const char* user, const char* passwd, c char errbuf[MYSQL_ERRMSG_SIZE]; if (!Open(host, user, passwd, database, port, &errnum, errbuf)) { - LogFile->write(EQEmuLog::Error, "Failed to connect to database: Error: %s", errbuf); + Log.Out(Logs::General, Logs::Error, "Failed to connect to database: Error: %s", errbuf); HandleMysqlError(errnum); return false; } else { - LogFile->write(EQEmuLog::Status, "Using database '%s' at %s:%d",database,host,port); + Log.Out(Logs::General, Logs::Status, "Using database '%s' at %s:%d",database,host,port); return true; } } @@ -109,15 +110,15 @@ void Database::GetAccountStatus(Client *client) { client->GetAccountID()); auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "Unable to get account status for character %s, error %s", client->GetName().c_str(), results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Unable to get account status for character %s, error %s", client->GetName().c_str(), results.ErrorMessage().c_str()); return; } - _log(UCS__TRACE, "GetAccountStatus Query: %s", query.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "GetAccountStatus Query: %s", query.c_str()); if(results.RowCount() != 1) { - _log(UCS__ERROR, "Error in GetAccountStatus"); + Log.Out(Logs::Detail, Logs::UCS_Server, "Error in GetAccountStatus"); return; } @@ -128,13 +129,13 @@ void Database::GetAccountStatus(Client *client) { client->SetKarma(atoi(row[2])); client->SetRevoked((atoi(row[3])==1?true:false)); - _log(UCS__TRACE, "Set account status to %i, hideme to %i and karma to %i for %s", client->GetAccountStatus(), client->GetHideMe(), client->GetKarma(), client->GetName().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Set account status to %i, hideme to %i and karma to %i for %s", client->GetAccountStatus(), client->GetHideMe(), client->GetKarma(), client->GetName().c_str()); } int Database::FindAccount(const char *characterName, Client *client) { - _log(UCS__TRACE, "FindAccount for character %s", characterName); + Log.Out(Logs::Detail, Logs::UCS_Server, "FindAccount for character %s", characterName); client->ClearCharacters(); @@ -143,12 +144,12 @@ int Database::FindAccount(const char *characterName, Client *client) { characterName); auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "FindAccount query failed: %s", query.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "FindAccount query failed: %s", query.c_str()); return -1; } if (results.RowCount() != 1) { - _log(UCS__ERROR, "Bad result from query"); + Log.Out(Logs::Detail, Logs::UCS_Server, "Bad result from query"); return -1; } @@ -157,7 +158,7 @@ int Database::FindAccount(const char *characterName, Client *client) { int accountID = atoi(row[1]); - _log(UCS__TRACE, "Account ID for %s is %i", characterName, accountID); + Log.Out(Logs::Detail, Logs::UCS_Server, "Account ID for %s is %i", characterName, accountID); query = StringFormat("SELECT `id`, `name`, `level` FROM `character_data` " "WHERE `account_id` = %i AND `name` != '%s'", @@ -178,7 +179,7 @@ bool Database::VerifyMailKey(std::string characterName, int IPAddress, std::stri characterName.c_str()); auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "Error retrieving mailkey from database: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Error retrieving mailkey from database: %s", results.ErrorMessage().c_str()); return false; } @@ -194,7 +195,7 @@ bool Database::VerifyMailKey(std::string characterName, int IPAddress, std::stri else sprintf(combinedKey, "%s", MailKey.c_str()); - _log(UCS__TRACE, "DB key is [%s], Client key is [%s]", row[0], combinedKey); + Log.Out(Logs::Detail, Logs::UCS_Server, "DB key is [%s], Client key is [%s]", row[0], combinedKey); return !strcmp(row[0], combinedKey); } @@ -205,14 +206,13 @@ int Database::FindCharacter(const char *characterName) { std::string query = StringFormat("SELECT `id` FROM `character_data` WHERE `name`='%s' LIMIT 1", safeCharName); auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "FindCharacter failed. %s %s", query.c_str(), results.ErrorMessage().c_str()); safe_delete(safeCharName); return -1; } safe_delete(safeCharName); if (results.RowCount() != 1) { - _log(UCS__ERROR, "Bad result from FindCharacter query for character %s", characterName); + Log.Out(Logs::Detail, Logs::UCS_Server, "Bad result from FindCharacter query for character %s", characterName); return -1; } @@ -228,7 +228,6 @@ bool Database::GetVariable(const char* varname, char* varvalue, uint16 varvalue_ std::string query = StringFormat("SELECT `value` FROM `variables` WHERE `varname` = '%s'", varname); auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "Unable to get message count from database. %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -244,12 +243,11 @@ bool Database::GetVariable(const char* varname, char* varvalue, uint16 varvalue_ bool Database::LoadChatChannels() { - _log(UCS__INIT, "Loading chat channels from the database."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Loading chat channels from the database."); const std::string query = "SELECT `name`, `owner`, `password`, `minstatus` FROM `chatchannels`"; auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "Failed to load channels. %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -266,26 +264,20 @@ bool Database::LoadChatChannels() { void Database::SetChannelPassword(std::string channelName, std::string password) { - _log(UCS__TRACE, "Database::SetChannelPassword(%s, %s)", channelName.c_str(), password.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Database::SetChannelPassword(%s, %s)", channelName.c_str(), password.c_str()); std::string query = StringFormat("UPDATE `chatchannels` SET `password` = '%s' WHERE `name` = '%s'", password.c_str(), channelName.c_str()); - auto results = QueryDatabase(query); - if(!results.Success()) - _log(UCS__ERROR, "Error updating password in database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); - + QueryDatabase(query); } void Database::SetChannelOwner(std::string channelName, std::string owner) { - _log(UCS__TRACE, "Database::SetChannelOwner(%s, %s)", channelName.c_str(), owner.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Database::SetChannelOwner(%s, %s)", channelName.c_str(), owner.c_str()); std::string query = StringFormat("UPDATE `chatchannels` SET `owner` = '%s' WHERE `name` = '%s'", owner.c_str(), channelName.c_str()); - auto results = QueryDatabase(query); - if(!results.Success()) - _log(UCS__ERROR, "Error updating Owner in database: %s, %s", query.c_str(), results.ErrorMessage().c_str()); - + QueryDatabase(query); } void Database::SendHeaders(Client *client) { @@ -294,7 +286,7 @@ void Database::SendHeaders(Client *client) { int unknownField3 = 1; int characterID = FindCharacter(client->MailBoxName().c_str()); - _log(UCS__TRACE, "Sendheaders for %s, CharID is %i", client->MailBoxName().c_str(), characterID); + Log.Out(Logs::Detail, Logs::UCS_Server, "Sendheaders for %s, CharID is %i", client->MailBoxName().c_str(), characterID); if(characterID <= 0) return; @@ -330,7 +322,6 @@ void Database::SendHeaders(Client *client) { VARSTRUCT_ENCODE_INTSTRING(packetBuffer, unknownField3); VARSTRUCT_ENCODE_INTSTRING(packetBuffer, results.RowCount()); - _pkt(UCS__PACKETS, outapp); client->QueuePacket(outapp); @@ -368,7 +359,6 @@ void Database::SendHeaders(Client *client) { VARSTRUCT_ENCODE_STRING(packetBuffer, row[2]); VARSTRUCT_ENCODE_STRING(packetBuffer, row[3]); - _pkt(UCS__PACKETS, outapp); client->QueuePacket(outapp); @@ -381,7 +371,7 @@ void Database::SendBody(Client *client, int messageNumber) { int characterID = FindCharacter(client->MailBoxName().c_str()); - _log(UCS__TRACE, "SendBody: MsgID %i, to %s, CharID is %i", messageNumber, client->MailBoxName().c_str(), characterID); + Log.Out(Logs::Detail, Logs::UCS_Server, "SendBody: MsgID %i, to %s, CharID is %i", messageNumber, client->MailBoxName().c_str(), characterID); if(characterID <= 0) return; @@ -398,7 +388,7 @@ void Database::SendBody(Client *client, int messageNumber) { auto row = results.begin(); - _log(UCS__TRACE, "Message: %i body (%i bytes)", messageNumber, strlen(row[1])); + Log.Out(Logs::Detail, Logs::UCS_Server, "Message: %i body (%i bytes)", messageNumber, strlen(row[1])); int packetLength = 12 + strlen(row[0]) + strlen(row[1]) + strlen(row[2]); @@ -418,7 +408,6 @@ void Database::SendBody(Client *client, int messageNumber) { packetBuffer--; // Overwrite the null terminator VARSTRUCT_ENCODE_TYPE(uint8, packetBuffer, 0x0a); - _pkt(UCS__PACKETS, outapp); client->QueuePacket(outapp); @@ -444,7 +433,7 @@ bool Database::SendMail(std::string recipient, std::string from, std::string sub characterID = FindCharacter(characterName.c_str()); - _log(UCS__TRACE, "SendMail: CharacterID for recipient %s is %i", characterName.c_str(), characterID); + Log.Out(Logs::Detail, Logs::UCS_Server, "SendMail: CharacterID for recipient %s is %i", characterName.c_str(), characterID); if(characterID <= 0) return false; @@ -466,11 +455,10 @@ bool Database::SendMail(std::string recipient, std::string from, std::string sub safe_delete_array(escBody); auto results = QueryDatabase(query); if(!results.Success()) { - _log(UCS__ERROR, "SendMail: Query %s failed with error %s", query.c_str(), results.ErrorMessage().c_str()); return false; } - _log(UCS__TRACE, "MessageID %i generated, from %s, to %s", results.LastInsertedID(), from.c_str(), recipient.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "MessageID %i generated, from %s, to %s", results.LastInsertedID(), from.c_str(), recipient.c_str()); Client *client = CL->IsCharacterOnline(characterName); @@ -487,7 +475,7 @@ bool Database::SendMail(std::string recipient, std::string from, std::string sub void Database::SetMessageStatus(int messageNumber, int status) { - _log(UCS__TRACE, "SetMessageStatus %i %i", messageNumber, status); + Log.Out(Logs::Detail, Logs::UCS_Server, "SetMessageStatus %i %i", messageNumber, status); if(status == 0) { std::string query = StringFormat("DELETE FROM `mail` WHERE `msgid` = %i", messageNumber); @@ -496,26 +484,22 @@ void Database::SetMessageStatus(int messageNumber, int status) { } std::string query = StringFormat("UPDATE `mail` SET `status` = %i WHERE `msgid`=%i", status, messageNumber); - auto results = QueryDatabase(query); - if (!results.Success()) - _log(UCS__ERROR, "Error updating status %s, %s", query.c_str(), results.ErrorMessage().c_str()); - + QueryDatabase(query); } void Database::ExpireMail() { - _log(UCS__INIT, "Expiring mail..."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Expiring mail..."); std::string query = "SELECT COUNT(*) FROM `mail`"; auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "Unable to get message count from database. %s %s", query.c_str(), results.ErrorMessage().c_str()); return; } auto row = results.begin(); - _log(UCS__INIT, "There are %s messages in the database.", row[0]); + Log.Out(Logs::Detail, Logs::UCS_Server, "There are %s messages in the database.", row[0]); // Expire Trash if(RuleI(Mail, ExpireTrash) >= 0) { @@ -523,10 +507,7 @@ void Database::ExpireMail() { time(nullptr) - RuleI(Mail, ExpireTrash)); results = QueryDatabase(query); if(results.Success()) - _log(UCS__INIT, "Expired %i trash messages.", results.RowsAffected()); - else - _log(UCS__ERROR, "Error expiring trash messages, %s %s", query.c_str(), results.ErrorMessage().c_str()); - + Log.Out(Logs::Detail, Logs::UCS_Server, "Expired %i trash messages.", results.RowsAffected()); } // Expire Read @@ -535,9 +516,7 @@ void Database::ExpireMail() { time(nullptr) - RuleI(Mail, ExpireRead)); results = QueryDatabase(query); if(results.Success()) - _log(UCS__INIT, "Expired %i read messages.", results.RowsAffected()); - else - _log(UCS__ERROR, "Error expiring read messages, %s %s", query.c_str(), results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Expired %i read messages.", results.RowsAffected()); } // Expire Unread @@ -546,9 +525,7 @@ void Database::ExpireMail() { time(nullptr) - RuleI(Mail, ExpireUnread)); results = QueryDatabase(query); if(results.Success()) - _log(UCS__INIT, "Expired %i unread messages.", results.RowsAffected()); - else - _log(UCS__ERROR, "Error expiring unread messages, %s %s", query.c_str(), results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Expired %i unread messages.", results.RowsAffected()); } } @@ -558,10 +535,8 @@ void Database::AddFriendOrIgnore(int charID, int type, std::string name) { "VALUES('%i', %i, '%s')", charID, type, CapitaliseName(name).c_str()); auto results = QueryDatabase(query); - if(!results.Success()) - _log(UCS__ERROR, "Error adding friend/ignore, query was %s : %s", query.c_str(), results.ErrorMessage().c_str()); - else - _log(UCS__TRACE, "Wrote Friend/Ignore entry for charid %i, type %i, name %s to database.", charID, type, name.c_str()); + if(results.Success()) + Log.Out(Logs::Detail, Logs::UCS_Server, "Wrote Friend/Ignore entry for charid %i, type %i, name %s to database.", charID, type, name.c_str()); } @@ -572,9 +547,9 @@ void Database::RemoveFriendOrIgnore(int charID, int type, std::string name) { charID, type, CapitaliseName(name).c_str()); auto results = QueryDatabase(query); if(!results.Success()) - _log(UCS__ERROR, "Error removing friend/ignore, query was %s", query.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Error removing friend/ignore, query was %s", query.c_str()); else - _log(UCS__TRACE, "Removed Friend/Ignore entry for charid %i, type %i, name %s from database.", charID, type, name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Removed Friend/Ignore entry for charid %i, type %i, name %s from database.", charID, type, name.c_str()); } @@ -583,7 +558,6 @@ void Database::GetFriendsAndIgnore(int charID, std::vector &friends std::string query = StringFormat("select `type`, `name` FROM `friends` WHERE `charid`=%i", charID); auto results = QueryDatabase(query); if (!results.Success()) { - _log(UCS__ERROR, "GetFriendsAndIgnore query error %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -594,13 +568,44 @@ void Database::GetFriendsAndIgnore(int charID, std::vector &friends if(atoi(row[0]) == 0) { ignorees.push_back(name); - _log(UCS__TRACE, "Added Ignoree from DB %s", name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Added Ignoree from DB %s", name.c_str()); continue; } friends.push_back(name); - _log(UCS__TRACE, "Added Friend from DB %s", name.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Added Friend from DB %s", name.c_str()); } } +void Database::LoadLogSettings(EQEmuLogSys::LogSettings* log_settings){ + std::string query = + "SELECT " + "log_category_id, " + "log_category_description, " + "log_to_console, " + "log_to_file, " + "log_to_gmsay " + "FROM " + "logsys_categories " + "ORDER BY log_category_id"; + auto results = QueryDatabase(query); + + int log_category = 0; + Log.file_logs_enabled = false; + + for (auto row = results.begin(); row != results.end(); ++row) { + log_category = atoi(row[0]); + log_settings[log_category].log_to_console = atoi(row[2]); + log_settings[log_category].log_to_file = atoi(row[3]); + log_settings[log_category].log_to_gmsay = atoi(row[4]); + + /* + This determines whether or not the process needs to actually file log anything. + If we go through this whole loop and nothing is set to any debug level, there is no point to create a file or keep anything open + */ + if (log_settings[log_category].log_to_file > 0){ + Log.file_logs_enabled = true; + } + } +} \ No newline at end of file diff --git a/ucs/database.h b/ucs/database.h index 382f71a43..ade93ef42 100644 --- a/ucs/database.h +++ b/ucs/database.h @@ -23,7 +23,7 @@ #define AUTHENTICATION_TIMEOUT 60 #define INVALID_ID 0xFFFFFFFF -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/types.h" #include "../common/dbcore.h" #include "../common/linked_list.h" @@ -57,7 +57,8 @@ public: void ExpireMail(); void AddFriendOrIgnore(int CharID, int Type, std::string Name); void RemoveFriendOrIgnore(int CharID, int Type, std::string Name); - void GetFriendsAndIgnore(int CharID, std::vector &Friends, std::vector &Ignorees); + void GetFriendsAndIgnore(int CharID, std::vector &Friends, std::vector &Ignorees); + void LoadLogSettings(EQEmuLogSys::LogSettings* log_settings); protected: diff --git a/ucs/ucs.cpp b/ucs/ucs.cpp index dd5f304b3..b6beeb268 100644 --- a/ucs/ucs.cpp +++ b/ucs/ucs.cpp @@ -17,7 +17,8 @@ */ -#include "../common/debug.h" +#include "../common/eqemu_logsys.h" +#include "../common/global_define.h" #include "clientlist.h" #include "../common/opcodemgr.h" #include "../common/eq_stream_factory.h" @@ -32,24 +33,21 @@ #include #include -volatile bool RunLoops = true; - -uint32 MailMessagesSent = 0; -uint32 ChatMessagesSent = 0; - -TimeoutManager timeout_manager; - -Clientlist *CL; - ChatChannelList *ChannelList; - +Clientlist *CL; +EQEmuLogSys Log; +TimeoutManager timeout_manager; Database database; - -std::string WorldShortName; +WorldServer *worldserver = nullptr; const ucsconfig *Config; -WorldServer *worldserver = nullptr; +std::string WorldShortName; + +uint32 ChatMessagesSent = 0; +uint32 MailMessagesSent = 0; + +volatile bool RunLoops = true; void CatchSignal(int sig_num) { @@ -67,6 +65,7 @@ std::string GetMailPrefix() { int main() { RegisterExecutablePlatform(ExePlatformUCS); + Log.LoadLogSettingsDefaults(); set_exception_handler(); // Check every minute for unused channels we can delete @@ -75,25 +74,18 @@ int main() { Timer InterserverTimer(INTERSERVER_TIMER); // does auto-reconnect - _log(UCS__INIT, "Starting EQEmu Universal Chat Server."); - - if (!ucsconfig::LoadConfig()) { - - _log(UCS__INIT, "Loading server configuration failed."); + Log.Out(Logs::General, Logs::UCS_Server, "Starting EQEmu Universal Chat Server."); + if (!ucsconfig::LoadConfig()) { + Log.Out(Logs::General, Logs::UCS_Server, "Loading server configuration failed."); return 1; } - Config = ucsconfig::get(); - - if(!load_log_settings(Config->LogSettingsFile.c_str())) - _log(UCS__INIT, "Warning: Unable to read %s", Config->LogSettingsFile.c_str()); - else - _log(UCS__INIT, "Log settings loaded from %s", Config->LogSettingsFile.c_str()); + Config = ucsconfig::get(); WorldShortName = Config->ShortName; - _log(UCS__INIT, "Connecting to MySQL..."); + Log.Out(Logs::General, Logs::UCS_Server, "Connecting to MySQL..."); if (!database.Connect( Config->DatabaseHost.c_str(), @@ -101,22 +93,26 @@ int main() { Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) { - _log(WORLD__INIT_ERR, "Cannot continue without a database connection."); + Log.Out(Logs::General, Logs::UCS_Server, "Cannot continue without a database connection."); return 1; } + /* Register Log System and Settings */ + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); + char tmp[64]; if (database.GetVariable("RuleSet", tmp, sizeof(tmp)-1)) { - _log(WORLD__INIT, "Loading rule set '%s'", tmp); + Log.Out(Logs::General, Logs::UCS_Server, "Loading rule set '%s'", tmp); if(!RuleManager::Instance()->LoadRules(&database, tmp)) { - _log(UCS__ERROR, "Failed to load ruleset '%s', falling back to defaults.", tmp); + Log.Out(Logs::General, Logs::UCS_Server, "Failed to load ruleset '%s', falling back to defaults.", tmp); } } else { if(!RuleManager::Instance()->LoadRules(&database, "default")) { - _log(UCS__INIT, "No rule set configured, using default rules"); + Log.Out(Logs::General, Logs::UCS_Server, "No rule set configured, using default rules"); } else { - _log(UCS__INIT, "Loaded default rule set 'default'", tmp); + Log.Out(Logs::General, Logs::UCS_Server, "Loaded default rule set 'default'", tmp); } } @@ -124,7 +120,7 @@ int main() { if(Config->ChatPort != Config->MailPort) { - _log(UCS__ERROR, "MailPort and CharPort must be the same in eqemu_config.xml for UCS."); + Log.Out(Logs::General, Logs::UCS_Server, "MailPort and CharPort must be the same in eqemu_config.xml for UCS."); exit(1); } @@ -135,11 +131,11 @@ int main() { database.LoadChatChannels(); if (signal(SIGINT, CatchSignal) == SIG_ERR) { - _log(UCS__ERROR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::UCS_Server, "Could not set signal handler"); return 1; } if (signal(SIGTERM, CatchSignal) == SIG_ERR) { - _log(UCS__ERROR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::UCS_Server, "Could not set signal handler"); return 1; } @@ -171,6 +167,8 @@ int main() { CL->CloseAllConnections(); + Log.CloseFileLogs(); + } void UpdateWindowTitle(char* iNewTitle) { diff --git a/ucs/ucsconfig.cpp b/ucs/ucsconfig.cpp index 4f055a6af..dd8c73ab8 100644 --- a/ucs/ucsconfig.cpp +++ b/ucs/ucsconfig.cpp @@ -17,7 +17,7 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "ucsconfig.h" ucsconfig *ucsconfig::_chat_config = nullptr; diff --git a/ucs/worldserver.cpp b/ucs/worldserver.cpp index 83e1764a1..395d72e59 100644 --- a/ucs/worldserver.cpp +++ b/ucs/worldserver.cpp @@ -15,7 +15,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #include #include @@ -51,7 +52,7 @@ WorldServer::~WorldServer() void WorldServer::OnConnected() { - _log(UCS__INIT, "Connected to World."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Connected to World."); WorldConnection::OnConnected(); } @@ -66,7 +67,7 @@ void WorldServer::Process() while((pack = tcpc.PopPacket())) { - _log(UCS__TRACE, "Received Opcode: %4X", pack->opcode); + Log.Out(Logs::Detail, Logs::UCS_Server, "Received Opcode: %4X", pack->opcode); switch(pack->opcode) { @@ -87,7 +88,7 @@ void WorldServer::Process() std::string Message = Buffer; - _log(UCS__TRACE, "Player: %s, Sent Message: %s", From, Message.c_str()); + Log.Out(Logs::Detail, Logs::UCS_Server, "Player: %s, Sent Message: %s", From, Message.c_str()); Client *c = CL->FindCharacter(From); @@ -98,7 +99,7 @@ void WorldServer::Process() if(!c) { - _log(UCS__TRACE, "Client not found."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Client not found."); break; } diff --git a/utils/deprecated/apathing/actions.cpp b/utils/deprecated/apathing/actions.cpp index 387f1062e..d48fc6e88 100644 --- a/utils/deprecated/apathing/actions.cpp +++ b/utils/deprecated/apathing/actions.cpp @@ -97,7 +97,6 @@ void repair_a_high_waypoint(Map *map, PathNode *it) { } } else { z_no_map_count++; - //printf("Missed: (%.3f, %.3f, %.3f)\n", it->x, it->y, it->z); } } @@ -199,8 +198,6 @@ RESTART_WP_REDUCE: //we are removing the second one wp_reduce_count++; - //printf("pos=%d/%d\n", pos, g->nodes.size()); - //printf("trail = 0x%x(0x%x) (%.3f, %.3f, %.3f)\n", // *trail, second, (*trail)->x, (*trail)->y, (*trail)->z); //trail = cur2; @@ -277,7 +274,6 @@ void break_long_lines(list &db_paths) { if(len2 < cutlen2) continue; -//printf("Cut (%.3f,%.3f,%.3f) -> (%.3f,%.3f,%.3f) d2=%.3f\n", e->from->x, e->from->y, e->from->z, e->to->x, e->to->y, e->to->z, len2); float len = sqrt(len2); v1.x = (e->to->x - e->from->x)/len; @@ -297,7 +293,6 @@ void break_long_lines(list &db_paths) { ee = new PathEdge(last_node, n); last_node = n; -//printf(" (%.3f,%.3f,%.3f) -> (%.3f,%.3f,%.3f) d2=%.3f\n", ee->from->x, ee->from->y, ee->from->z, ee->to->x, ee->to->y, ee->to->z, e->from->Dist2(e->to)); g->edges.push_back(ee); g->nodes.push_back(n); @@ -967,7 +962,6 @@ run an algorithm to remove redundancy: RESTART_GRID_CLEAN: cur = big->nodes.begin(); end = big->nodes.end(); -//printf("Starting clean at pos %d with %d nodes\n", cur_pos, big->nodes.size()); for(r = 0; r < cur_pos; r++) cur++; for(; cur != end; cur++, cur_pos++, stat++) { @@ -989,16 +983,13 @@ RESTART_GRID_CLEAN: if(n == f) continue; if(n->Dist2(f) > ce2) { -//printf("Dist %f, ce2 %f\n", n->Dist2(f), ce2); continue; } -//printf("Distbbb %f, ce2 %f, (%f,%f), (%f,%f)\n", n->Dist2(f), ce2, n->x, n->y, f->x, f->y); #ifdef COMBINE_CHECK_ALL_LOS //we should merge these. Now we wanna check to make sure combining //them will not cause the old node's edges to become invalid. -//printf("Checking combine LOS on %d, with %d edges.\n", r, big->edges.size()); badlos = false; if(node_edges.count(f) == 1) { @@ -1618,7 +1609,6 @@ void count_crossing_lines(list &edges, PathGraph *out, PathGraph *ex if(count >= CROSS_REDUCE_COUNT) { -//printf("Edge crosses %d edges.\n", count); out->edges.push_back(e); cross_edge_count++; cross_list[e] = hits; @@ -1847,7 +1837,6 @@ QTNode *build_quadtree(Map *map, PathGraph *big) { end = _root->nodes.end(); //int findex = 0; for(; curs != end; curs++) { -//printf("Started With node index %d (0x%x)\n", findex++, *curs); } _root->divideYourself(0); @@ -1915,7 +1904,6 @@ bool write_path_file(QTNode *_root, PathGraph *big, const char *file, vector< ve end = big->nodes.end(); int nn = 0; for(; cur != end; cur++, curn++, nn++) { -//printf("Filling node %d/%d n=0x%x, lb=0x%x, curl=0x%x/0x%x\n", nn, index, *cur, linkBlock, curl, &linkBlock[eoffset]); n = *cur; if(n == NULL) { printf("Got NULL node building quadtree, WTF."); @@ -1926,7 +1914,6 @@ int nn = 0; curn->z = n->z; curn->link_offset = eoffset; curn->distance = n->longest_path; -//printf("Node %d: (%.2f,%.2f,%.2f) LO %d, D %d\n", nn, curn->x, curn->y, curn->z, curn->link_offset, curn->distance); int ecount = 0; cur4 = big->edges.begin(); @@ -1939,7 +1926,6 @@ int nn = 0; curl = &linkBlock[eoffset]; curl->dest_node = e->to->node_id; curl->reach = e->normal_reach; -//printf("\tLinkFrom %d: dest %d, reach %d\n", eoffset, curl->dest_node, curl->reach); from_edges[e] = ecount; ecount++; eoffset++; @@ -1948,7 +1934,6 @@ int nn = 0; curl = &linkBlock[eoffset]; curl->dest_node = e->from->node_id; curl->reach = e->reverse_reach; -//printf("\tLinkTo %d: dest %d, reach %d\n", eoffset, curl->dest_node, curl->reach); to_edges[e] = ecount; ecount++; eoffset++; @@ -1959,7 +1944,6 @@ int nn = 0; printf("ERROR: a node has more than %d links, number will be truncated!", PATH_LINK_OFFSET_NONE-1); } curn->link_count = ecount; -//printf("Used up to slot %d of %d in links\n", eoffset, head.link_count); } //write vertexBlock diff --git a/utils/deprecated/apathing/boostcrap.cpp b/utils/deprecated/apathing/boostcrap.cpp index 230c1bfb3..24b18e5d4 100644 --- a/utils/deprecated/apathing/boostcrap.cpp +++ b/utils/deprecated/apathing/boostcrap.cpp @@ -297,7 +297,6 @@ void color_disjoint_graphs( if(n->color != 0) continue; //allready visited -//printf("New Color at: (%.3f,%.3f,%.3f)\n", n->x, n->y, n->z); cc = 1; djc = 0; @@ -457,7 +456,6 @@ void calc_path_lengths(Map *map, MyGraph &vg, PathGraph *big, mapnode_id]; //n->longest_path = longest; -//printf("Node %d's longest path is %d\n", n->node_id, longest); if(longest < shortest) { shortest = longest; @@ -476,7 +474,6 @@ printf("The tree's root is %d\n", shortest_node); n->longest_path = 0; else n->longest_path = root_dists[n->node_id]; -//printf("Node %d's distance from root is %d\n", n->node_id, root_dists[n->node_id]); } diff --git a/utils/deprecated/apathing/quadtree.cpp b/utils/deprecated/apathing/quadtree.cpp index fad704505..0729e1713 100644 --- a/utils/deprecated/apathing/quadtree.cpp +++ b/utils/deprecated/apathing/quadtree.cpp @@ -86,17 +86,14 @@ void QTNode::fillBlocks(PathTree_Struct *heads, PathPointRef *flist, unsigned lo head->miny = miny; head->maxy = maxy; head->flags = 0; -//printf("Node %u: (%.2f -> %.2f, %.2f -> %.2f)\n", hindex-1, head->minx, head->maxx, head->miny, head->maxy); //rearranged to give all QT nodes a node list head->nodelist.count = nodes.size(); head->nodelist.offset = findex; -//printf(" Final node with %u nodes, list offset %lu.\n", head->nodes.count, head->nodes.offset); list::iterator curs,end; curs = nodes.begin(); end = nodes.end(); for(; curs != end; curs++) { -//printf("Got to node index %d (0x%x)\n", findex, *curs); PathNode *cur = *curs; flist[findex] = cur->node_id; findex++; @@ -283,7 +280,6 @@ void QTNode::buildVertexes() { } bool QTNode::IsInNode(const QTNode *n, const PathNode *o) { -//printf("IIN: (%.3f,%.3f) in (%.3f -> %.3f, %.3f -> %.3f)\n", o->x, o->y, n->minx, n->maxx, n->miny, n->maxy); if( o->x >= n->minx && o->x < n->maxx && o->y >= n->miny && o->y < n->maxy ) return(true); diff --git a/utils/deprecated/azone/awater.cpp b/utils/deprecated/azone/awater.cpp index cffdfdb8b..55f05a352 100644 --- a/utils/deprecated/azone/awater.cpp +++ b/utils/deprecated/azone/awater.cpp @@ -257,7 +257,6 @@ long BSPCountNodes(BSP_Node *tree, long node_number) { long BSPFindRegion(BSP_Node *tree, long node_number, long region) { - //printf("Find Region %ld in node %ld\n", region, node_number); if(node_number<1) { printf("Something went wrong\n"); exit(1); @@ -329,7 +328,6 @@ long BSPFindNode(BSP_Node *tree, long node_number, float x, float y, float z) { long BSPMarkRegion(BSP_Node *tree, long node_number, long region, int region_type) { - //printf("Find Region %ld in node %ld\n", region, node_number); if(node_number<1) { printf("Something went wrong\n"); exit(1); diff --git a/utils/deprecated/azone/azone.cpp b/utils/deprecated/azone/azone.cpp index 9fc9f2466..14176b4dc 100644 --- a/utils/deprecated/azone/azone.cpp +++ b/utils/deprecated/azone/azone.cpp @@ -584,12 +584,10 @@ void QTNode::fillBlocks(nodeHeader *heads, unsigned long *flist, unsigned long & head->miny = miny; head->maxy = maxy; head->flags = 0; -//printf("Node %u: (%.2f -> %.2f, %.2f -> %.2f)\n", hindex-1, head->minx, head->maxx, head->miny, head->maxy); if(final) { head->flags |= nodeFinal; head->faces.count = faces.size(); head->faces.offset = findex; -//printf(" Final node with %u faces, list offset %lu.\n", head->faces.count, head->faces.offset); unsigned long r; for(r = 0; r < head->faces.count; r++) { flist[findex] = faces[r].index; diff --git a/utils/deprecated/azone/pfs.cpp b/utils/deprecated/azone/pfs.cpp index 9002ae977..a04cb90a5 100644 --- a/utils/deprecated/azone/pfs.cpp +++ b/utils/deprecated/azone/pfs.cpp @@ -178,7 +178,6 @@ const char *PFSLoader::FindExtension(const char *ext) { int elen = strlen(ext); for(i = 0; i < this->count; ++i) { -//printf("Look for %s: got %s\n", ext, this->filenames[i]); int flen = strlen(this->filenames[i]); if(flen <= elen) continue; @@ -197,7 +196,6 @@ int PFSLoader::GetFile(char *name, uchar **buf, int *len) { Lower(name); for(i = 0; i < this->count; ++i) { -//printf("Look for %s: got %s\n", name, this->filenames[i]); if(!strcmp(this->filenames[i], name)) { fseek(this->fp, this->files[i], SEEK_SET); fread(&s3d_dir, sizeof(struct_directory), 1, this->fp); diff --git a/utils/deprecated/azone/ter.cpp b/utils/deprecated/azone/ter.cpp index 11212c570..e9453ec8d 100644 --- a/utils/deprecated/azone/ter.cpp +++ b/utils/deprecated/azone/ter.cpp @@ -151,7 +151,6 @@ int line_count = 0; var = (char *) buffer; line_count++; - // printf("%s %s\n", val, var); if(strlen(var) == 0 || strlen(val) == 0) { ++buffer; @@ -166,7 +165,6 @@ int line_count = 0; mlist[j].basetex = new char[val_len + 1]; memcpy(mlist[j].basetex, val, val_len + 1); ++mat_count; - // printf("%i: Basetex: %s\n", j + 1, mlist[j].basetex); ++j; } else if(val[0] != 'e' && val[1] != '_' && ((var[0] != 'e' && var[1] != '_') || !strcmp(val, "e_fShininess0"))) { @@ -179,7 +177,6 @@ int line_count = 0; memcpy(mlist[j].name, val, val_len + 1); continue; } - // printf("Named: %s\n", mlist[j].name); } buffer += var_len + 1; @@ -321,7 +318,6 @@ printf("%d tris start at %d (0x%x)\n", zm->poly_count, (buffer-ter_orig), (buffe } zm->polys[j] = new Polygon; - //printf(" v1=%d, v2=%d, v3=%d, g=%d, unk=%d\n", ttri->v1, ttri->v2, ttri->v3, ttri->group, ttri->unk); if(ttri->v1 >= zm->vert_count && errored < 10) { printf("Tri %d/%d (s %d) @0x%x: invalid v1: %d >= %d\n", i, zm->poly_count, skipped, (buffer-ter_orig), ttri->v1, zm->vert_count); diff --git a/utils/deprecated/azone2/awater.cpp b/utils/deprecated/azone2/awater.cpp index 940c27596..8573e5b72 100644 --- a/utils/deprecated/azone2/awater.cpp +++ b/utils/deprecated/azone2/awater.cpp @@ -271,7 +271,6 @@ long BSPCountNodes(BSP_Node *tree, long node_number) { long BSPFindRegion(BSP_Node *tree, long node_number, long region) { - //printf("Find Region %ld in node %ld\n", region, node_number); if(node_number<1) { printf("Something went wrong\n"); exit(1); @@ -343,7 +342,6 @@ long BSPFindNode(BSP_Node *tree, long node_number, float x, float y, float z) { long BSPMarkRegion(BSP_Node *tree, long node_number, long region, int region_type) { - //printf("Find Region %ld in node %ld\n", region, node_number); if(node_number<1) { printf("Something went wrong\n"); exit(1); diff --git a/utils/deprecated/azone2/azone.cpp b/utils/deprecated/azone2/azone.cpp index c49b89e26..81a143ba2 100644 --- a/utils/deprecated/azone2/azone.cpp +++ b/utils/deprecated/azone2/azone.cpp @@ -447,12 +447,10 @@ void QTNode::fillBlocks(nodeHeader *heads, unsigned long *flist, unsigned long & head->miny = miny; head->maxy = maxy; head->flags = 0; -//printf("Node %u: (%.2f -> %.2f, %.2f -> %.2f)\n", hindex-1, head->minx, head->maxx, head->miny, head->maxy); if(final) { head->flags |= nodeFinal; head->faces.count = faces.size(); head->faces.offset = findex; -//printf(" Final node with %u faces, list offset %lu.\n", head->faces.count, head->faces.offset); unsigned long r; for(r = 0; r < head->faces.count; r++) { flist[findex] = faces[r].index; diff --git a/utils/deprecated/azone2/dat.cpp b/utils/deprecated/azone2/dat.cpp index c89bd4d11..7fec482be 100644 --- a/utils/deprecated/azone2/dat.cpp +++ b/utils/deprecated/azone2/dat.cpp @@ -98,7 +98,6 @@ string GetToken(uchar *&Buffer, int &Position) ++Position; } ++Position; - //printf("Returning %s\n", Token.c_str()); return Token; } diff --git a/utils/deprecated/azone2/wld.cpp b/utils/deprecated/azone2/wld.cpp index 45471738c..d4dbcf25b 100644 --- a/utils/deprecated/azone2/wld.cpp +++ b/utils/deprecated/azone2/wld.cpp @@ -34,7 +34,6 @@ FRAG_CONSTRUCTOR(Data03) { memcpy(tex->filenames[i], buf, fnlen); decode((uchar *) tex->filenames[i], fnlen); - //printf("fnlen is %d, %s\n", fnlen, tex->filenames[i]); // Derision: Not sure why this check is here, but need to check fnlen is >=18 if(fnlen>=18) { if(tex->filenames[i][fnlen - 8] == '.') @@ -188,7 +187,6 @@ FRAG_CONSTRUCTOR(Data22) { long Frag36Ref; if(data->flags==0x181) { Frag36Ref = *((long *) (data6area+20)); - //printf("Frag 36 reference?: %ld\n", *((long *) (data6area+20))); } diff --git a/utils/deprecated/azone2/zonv4.cpp b/utils/deprecated/azone2/zonv4.cpp index c2e0b32af..08964dd65 100644 --- a/utils/deprecated/azone2/zonv4.cpp +++ b/utils/deprecated/azone2/zonv4.cpp @@ -107,7 +107,6 @@ int Zonv4Loader::Open(char *base_path, char *zone_name, Archive *archive) for(unsigned int i = 0; i < this->datloader.model_data.ModelNames.size(); ++i) { char tmp[200]; - //printf("Opening %s.mod\n", this->datloader.model_data.ModelNames[i].c_str()); sprintf(tmp, "%s.mod", this->datloader.model_data.ModelNames[i].c_str()); char *str = tmp; diff --git a/utils/deprecated/ppconvert/ppconvert.cpp b/utils/deprecated/ppconvert/ppconvert.cpp index e8d2a85b9..716ddd753 100644 --- a/utils/deprecated/ppconvert/ppconvert.cpp +++ b/utils/deprecated/ppconvert/ppconvert.cpp @@ -119,8 +119,6 @@ int main() { snprintf(bptr, 128, "' WHERE id=%lu", id); // printf("Query: '%s'\n", outbuffer); -//printf(outbuffer); -//printf(";\n"); /* if(mysql_query(&out, outbuffer) != 0) { failed_count++; printf(" Error updating char id %lu: %s\n", id, mysql_error(&m)); diff --git a/utils/deprecated/ppskillfix/ppskillfix.cpp b/utils/deprecated/ppskillfix/ppskillfix.cpp index 758073c61..f2c7c1474 100644 --- a/utils/deprecated/ppskillfix/ppskillfix.cpp +++ b/utils/deprecated/ppskillfix/ppskillfix.cpp @@ -113,8 +113,6 @@ fprintf(stderr, "Char '%s' skill %d = %d\n", row[1], r, in_pp->skills[r]); snprintf(bptr, 128, "' WHERE id=%lu", id); // printf("Query: '%s'\n", outbuffer); -//printf(outbuffer); -//printf(";\n"); /* if(mysql_query(&out, outbuffer) != 0) { failed_count++; printf(" Error updating char id %lu: %s\n", id, mysql_error(&m)); diff --git a/utils/sql/git/required/2015_1_15_logsys_categories_table.sql b/utils/sql/git/required/2015_1_15_logsys_categories_table.sql new file mode 100644 index 000000000..45d9cde3b --- /dev/null +++ b/utils/sql/git/required/2015_1_15_logsys_categories_table.sql @@ -0,0 +1,52 @@ +-- ---------------------------- +-- Table structure for logsys_categories +-- ---------------------------- +DROP TABLE IF EXISTS `logsys_categories`; +CREATE TABLE `logsys_categories` ( + `log_category_id` int(11) NOT NULL, + `log_category_description` varchar(150) DEFAULT NULL, + `log_to_console` smallint(11) DEFAULT '0', + `log_to_file` smallint(11) DEFAULT '0', + `log_to_gmsay` smallint(11) DEFAULT '0', + PRIMARY KEY (`log_category_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- ---------------------------- +-- Records of logsys_categories +-- ---------------------------- +INSERT INTO `logsys_categories` VALUES ('1', 'AA', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('2', 'AI', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('3', 'Aggro', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('4', 'Attack', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('5', 'Client_Server_Packet', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('6', 'Combat', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('7', 'Commands', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('8', 'Crash', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('9', 'Debug', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('10', 'Doors', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('11', 'Error', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('12', 'Guilds', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('13', 'Inventory', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('14', 'Launcher', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('15', 'Netcode', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('16', 'Normal', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('17', 'Object', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('18', 'Pathing', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('19', 'QS_Server', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('20', 'Quests', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('21', 'Rules', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('22', 'Skills', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('23', 'Spawns', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('24', 'Spells', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('25', 'Status', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('26', 'TCP_Connection', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('27', 'Tasks', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('28', 'Tradeskills', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('29', 'Trading', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('30', 'Tribute', '0', '1', '0'); +INSERT INTO `logsys_categories` VALUES ('31', 'UCS_Server', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('32', 'WebInterface_Server', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('33', 'World_Server', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('34', 'Zone Server', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('35', 'MySQL Error', '1', '1', '1'); +INSERT INTO `logsys_categories` VALUES ('36', 'MySQL Queries', '0', '1', '0'); diff --git a/world/CMakeLists.txt b/world/CMakeLists.txt index a9dd63478..fa13aef5d 100644 --- a/world/CMakeLists.txt +++ b/world/CMakeLists.txt @@ -25,7 +25,6 @@ SET(world_sources queryserv.cpp ucs.cpp wguild_mgr.cpp - world_logsys.cpp world_config.cpp worlddb.cpp zonelist.cpp diff --git a/world/adventure.cpp b/world/adventure.cpp index 98ec087b4..40becd855 100644 --- a/world/adventure.cpp +++ b/world/adventure.cpp @@ -1,4 +1,4 @@ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/servertalk.h" #include "../common/extprofile.h" #include "../common/rulesys.h" @@ -386,7 +386,6 @@ void Adventure::MoveCorpsesToGraveyard() std::string query = StringFormat("SELECT id, charid FROM character_corpses WHERE instanceid=%d", GetInstanceID()); auto results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in AdventureManager:::MoveCorpsesToGraveyard: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); for(auto row = results.begin(); row != results.end(); ++row) { dbid_list.push_back(atoi(row[0])); @@ -403,9 +402,7 @@ void Adventure::MoveCorpsesToGraveyard() "x = %f, y = %f, z = %f WHERE instanceid = %d", GetTemplate()->graveyard_zone_id, x, y, z, GetInstanceID()); - auto results = database.QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in AdventureManager:::MoveCorpsesToGraveyard: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); + database.QueryDatabase(query); } auto c_iter = charid_list.begin(); diff --git a/world/adventure.h b/world/adventure.h index dec691eda..23255a5b5 100644 --- a/world/adventure.h +++ b/world/adventure.h @@ -1,7 +1,7 @@ #ifndef ADVENTURE_H #define ADVENTURE_H -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/types.h" #include "../common/timer.h" #include "adventure_template.h" diff --git a/world/adventure_manager.cpp b/world/adventure_manager.cpp index db4b768d8..c49cf17c4 100644 --- a/world/adventure_manager.cpp +++ b/world/adventure_manager.cpp @@ -1,4 +1,4 @@ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/misc_functions.h" #include "../common/string_util.h" #include "../common/servertalk.h" @@ -652,7 +652,6 @@ bool AdventureManager::LoadAdventureTemplates() "graveyard_radius FROM adventure_template"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in AdventureManager:::LoadAdventures: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -702,7 +701,6 @@ bool AdventureManager::LoadAdventureEntries() auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in AdventureManager:::LoadAdventureEntries: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1079,7 +1077,6 @@ void AdventureManager::LoadLeaderboardInfo() "AS adv_stats LEFT JOIN `character_data` AS ch ON adv_stats.player_id = ch.id;"; auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in AdventureManager:::GetLeaderboardInfo: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } diff --git a/world/adventure_manager.h b/world/adventure_manager.h index ce6d7331a..5c9a4e560 100644 --- a/world/adventure_manager.h +++ b/world/adventure_manager.h @@ -1,7 +1,7 @@ #ifndef ADVENTURE_MANAGER_H #define ADVENTURE_MANAGER_H -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/types.h" #include "../common/timer.h" #include "adventure.h" diff --git a/world/adventure_template.h b/world/adventure_template.h index 86fc3d0f5..89f8b9915 100644 --- a/world/adventure_template.h +++ b/world/adventure_template.h @@ -1,7 +1,7 @@ #ifndef ADVENTURE_TEMPLATE_H #define ADVENTURE_TEMPLATE_H -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/types.h" #pragma pack(1) diff --git a/world/client.cpp b/world/client.cpp index e8f83f06b..50b56cb0d 100644 --- a/world/client.cpp +++ b/world/client.cpp @@ -1,4 +1,4 @@ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/eq_packet.h" #include "../common/eq_stream_intf.h" #include "../common/misc.h" @@ -137,7 +137,7 @@ void Client::SendEnterWorld(std::string name) eqs->Close(); return; } else { - clog(WORLD__CLIENT,"Telling client to continue session."); + Log.Out(Logs::Detail, Logs::World_Server,"Telling client to continue session."); } } @@ -379,7 +379,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app) { if (strlen(password) <= 1) { // TODO: Find out how to tell the client wrong username/password - clog(WORLD__CLIENT_ERR,"Login without a password"); + Log.Out(Logs::Detail, Logs::World_Server,"Login without a password"); return false; } @@ -409,31 +409,31 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app) { if ((cle = zoneserver_list.CheckAuth(inet_ntoa(tmpip), password))) #else if (loginserverlist.Connected() == false && !pZoning) { - clog(WORLD__CLIENT_ERR,"Error: Login server login while not connected to login server."); + Log.Out(Logs::Detail, Logs::World_Server,"Error: Login server login while not connected to login server."); return false; } if (((cle = client_list.CheckAuth(name, password)) || (cle = client_list.CheckAuth(id, password)))) #endif { if (cle->AccountID() == 0 || (!minilogin && cle->LSID()==0)) { - clog(WORLD__CLIENT_ERR,"ID is 0. Is this server connected to minilogin?"); + Log.Out(Logs::Detail, Logs::World_Server,"ID is 0. Is this server connected to minilogin?"); if(!minilogin) - clog(WORLD__CLIENT_ERR,"If so you forget the minilogin variable..."); + Log.Out(Logs::Detail, Logs::World_Server,"If so you forget the minilogin variable..."); else - clog(WORLD__CLIENT_ERR,"Could not find a minilogin account, verify ip address logging into minilogin is the same that is in your account table."); + Log.Out(Logs::Detail, Logs::World_Server,"Could not find a minilogin account, verify ip address logging into minilogin is the same that is in your account table."); return false; } cle->SetOnline(); - clog(WORLD__CLIENT,"Logged in. Mode=%s",pZoning ? "(Zoning)" : "(CharSel)"); + Log.Out(Logs::Detail, Logs::World_Server,"Logged in. Mode=%s",pZoning ? "(Zoning)" : "(CharSel)"); if(minilogin){ WorldConfig::DisableStats(); - clog(WORLD__CLIENT,"MiniLogin Account #%d",cle->AccountID()); + Log.Out(Logs::Detail, Logs::World_Server,"MiniLogin Account #%d",cle->AccountID()); } else { - clog(WORLD__CLIENT,"LS Account #%d",cle->LSID()); + Log.Out(Logs::Detail, Logs::World_Server,"LS Account #%d",cle->LSID()); } const WorldConfig *Config=WorldConfig::get(); @@ -466,7 +466,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app) { } else { // TODO: Find out how to tell the client wrong username/password - clog(WORLD__CLIENT_ERR,"Bad/Expired session key '%s'",name); + Log.Out(Logs::Detail, Logs::World_Server,"Bad/Expired session key '%s'",name); return false; } @@ -480,7 +480,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app) { bool Client::HandleNameApprovalPacket(const EQApplicationPacket *app) { if (GetAccountID() == 0) { - clog(WORLD__CLIENT_ERR,"Name approval request with no logged in account"); + Log.Out(Logs::Detail, Logs::World_Server,"Name approval request with no logged in account"); return false; } @@ -488,7 +488,7 @@ bool Client::HandleNameApprovalPacket(const EQApplicationPacket *app) uchar race = app->pBuffer[64]; uchar clas = app->pBuffer[68]; - clog(WORLD__CLIENT, "Name approval request. Name=%s, race=%s, class=%s", char_name, GetRaceName(race), GetEQClassName(clas)); + Log.Out(Logs::Detail, Logs::World_Server, "Name approval request. Name=%s, race=%s, class=%s", char_name, GetRaceName(race), GetEQClassName(clas)); EQApplicationPacket *outapp; outapp = new EQApplicationPacket; @@ -649,11 +649,11 @@ bool Client::HandleCharacterCreateRequestPacket(const EQApplicationPacket *app) bool Client::HandleCharacterCreatePacket(const EQApplicationPacket *app) { if (GetAccountID() == 0) { - clog(WORLD__CLIENT_ERR,"Account ID not set; unable to create character."); + Log.Out(Logs::Detail, Logs::World_Server,"Account ID not set; unable to create character."); return false; } else if (app->size != sizeof(CharCreate_Struct)) { - clog(WORLD__CLIENT_ERR,"Wrong size on OP_CharacterCreate. Got: %d, Expected: %d",app->size,sizeof(CharCreate_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on OP_CharacterCreate. Got: %d, Expected: %d",app->size,sizeof(CharCreate_Struct)); DumpPacket(app); // the previous behavior was essentially returning true here // but that seems a bit odd to me. @@ -680,14 +680,14 @@ bool Client::HandleCharacterCreatePacket(const EQApplicationPacket *app) { bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) { if (GetAccountID() == 0) { - clog(WORLD__CLIENT_ERR,"Enter world with no logged in account"); + Log.Out(Logs::Detail, Logs::World_Server,"Enter world with no logged in account"); eqs->Close(); return true; } if(GetAdmin() < 0) { - clog(WORLD__CLIENT,"Account banned or suspended."); + Log.Out(Logs::Detail, Logs::World_Server,"Account banned or suspended."); eqs->Close(); return true; } @@ -703,14 +703,14 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) { uint32 tmpaccid = 0; charid = database.GetCharacterInfo(char_name, &tmpaccid, &zoneID, &instanceID); if (charid == 0 || tmpaccid != GetAccountID()) { - clog(WORLD__CLIENT_ERR,"Could not get CharInfo for '%s'",char_name); + Log.Out(Logs::Detail, Logs::World_Server,"Could not get CharInfo for '%s'",char_name); eqs->Close(); return true; } // Make sure this account owns this character if (tmpaccid != GetAccountID()) { - clog(WORLD__CLIENT_ERR,"This account does not own the character named '%s'",char_name); + Log.Out(Logs::Detail, Logs::World_Server,"This account does not own the character named '%s'",char_name); eqs->Close(); return true; } @@ -738,7 +738,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) { zoneID = database.MoveCharacterToBind(charid,4); } else { - clog(WORLD__CLIENT_ERR,"'%s' is trying to go home before they're able...",char_name); + Log.Out(Logs::Detail, Logs::World_Server,"'%s' is trying to go home before they're able...",char_name); database.SetHackerFlag(GetAccountName(), char_name, "MQGoHome: player tried to go home before they were able."); eqs->Close(); return true; @@ -771,7 +771,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) { } else { - clog(WORLD__CLIENT_ERR,"'%s' is trying to go to tutorial but are not allowed...",char_name); + Log.Out(Logs::Detail, Logs::World_Server,"'%s' is trying to go to tutorial but are not allowed...",char_name); database.SetHackerFlag(GetAccountName(), char_name, "MQTutorial: player tried to enter the tutorial without having tutorial enabled for this character."); eqs->Close(); return true; @@ -781,7 +781,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) { if (zoneID == 0 || !database.GetZoneName(zoneID)) { // This is to save people in an invalid zone, once it's removed from the DB database.MoveCharacterToZone(charid, "arena"); - clog(WORLD__CLIENT_ERR, "Zone not found in database zone_id=%i, moveing char to arena character:%s", zoneID, char_name); + Log.Out(Logs::Detail, Logs::World_Server, "Zone not found in database zone_id=%i, moveing char to arena character:%s", zoneID, char_name); } if(instanceID > 0) @@ -895,7 +895,7 @@ bool Client::HandleDeleteCharacterPacket(const EQApplicationPacket *app) { uint32 char_acct_id = database.GetAccountIDByChar((char*)app->pBuffer); if(char_acct_id == GetAccountID()) { - clog(WORLD__CLIENT,"Delete character: %s",app->pBuffer); + Log.Out(Logs::Detail, Logs::World_Server,"Delete character: %s",app->pBuffer); database.DeleteCharacter((char *)app->pBuffer); SendCharInfo(); } @@ -916,25 +916,24 @@ bool Client::HandlePacket(const EQApplicationPacket *app) { EmuOpcode opcode = app->GetOpcode(); - clog(WORLD__CLIENT_TRACE,"Recevied EQApplicationPacket"); - _pkt(WORLD__CLIENT_TRACE,app); + Log.Out(Logs::Detail, Logs::World_Server,"Recevied EQApplicationPacket"); if (!eqs->CheckState(ESTABLISHED)) { - clog(WORLD__CLIENT,"Client disconnected (net inactive on send)"); + Log.Out(Logs::Detail, Logs::World_Server,"Client disconnected (net inactive on send)"); return false; } // Voidd: Anti-GM Account hack, Checks source ip against valid GM Account IP Addresses if (RuleB(World, GMAccountIPList) && this->GetAdmin() >= (RuleI(World, MinGMAntiHackStatus))) { if(!database.CheckGMIPs(long2ip(this->GetIP()).c_str(), this->GetAccountID())) { - clog(WORLD__CLIENT,"GM Account not permited from source address %s and accountid %i", long2ip(this->GetIP()).c_str(), this->GetAccountID()); + Log.Out(Logs::Detail, Logs::World_Server,"GM Account not permited from source address %s and accountid %i", long2ip(this->GetIP()).c_str(), this->GetAccountID()); eqs->Close(); } } if (GetAccountID() == 0 && opcode != OP_SendLoginInfo) { // Got a packet other than OP_SendLoginInfo when not logged in - clog(WORLD__CLIENT_ERR,"Expecting OP_SendLoginInfo, got %s", OpcodeNames[opcode]); + Log.Out(Logs::Detail, Logs::World_Server,"Expecting OP_SendLoginInfo, got %s", OpcodeNames[opcode]); return false; } else if (opcode == OP_AckPacket) { @@ -1006,8 +1005,7 @@ bool Client::HandlePacket(const EQApplicationPacket *app) { } default: { - clog(WORLD__CLIENT_ERR,"Received unknown EQApplicationPacket"); - _pkt(WORLD__CLIENT_ERR,app); + Log.Out(Logs::Detail, Logs::World_Server,"Received unknown EQApplicationPacket"); return true; } } @@ -1025,7 +1023,7 @@ bool Client::Process() { to.sin_addr.s_addr = ip; if (autobootup_timeout.Check()) { - clog(WORLD__CLIENT_ERR, "Zone bootup timer expired, bootup failed or too slow."); + Log.Out(Logs::Detail, Logs::World_Server, "Zone bootup timer expired, bootup failed or too slow."); ZoneUnavail(); } if(connect.Check()){ @@ -1059,7 +1057,7 @@ bool Client::Process() { loginserverlist.SendPacket(pack); safe_delete(pack); } - clog(WORLD__CLIENT,"Client disconnected (not active in process)"); + Log.Out(Logs::Detail, Logs::World_Server,"Client disconnected (not active in process)"); return false; } @@ -1108,17 +1106,17 @@ void Client::EnterWorld(bool TryBootup) { } else { if (TryBootup) { - clog(WORLD__CLIENT,"Attempting autobootup of %s (%d:%d)",zone_name,zoneID,instanceID); + Log.Out(Logs::Detail, Logs::World_Server,"Attempting autobootup of %s (%d:%d)",zone_name,zoneID,instanceID); autobootup_timeout.Start(); pwaitingforbootup = zoneserver_list.TriggerBootup(zoneID, instanceID); if (pwaitingforbootup == 0) { - clog(WORLD__CLIENT_ERR,"No zoneserver available to boot up."); + Log.Out(Logs::Detail, Logs::World_Server,"No zoneserver available to boot up."); ZoneUnavail(); } return; } else { - clog(WORLD__CLIENT_ERR,"Requested zone %s is no running.",zone_name); + Log.Out(Logs::Detail, Logs::World_Server,"Requested zone %s is no running.",zone_name); ZoneUnavail(); return; } @@ -1127,12 +1125,12 @@ void Client::EnterWorld(bool TryBootup) { cle->SetChar(charid, char_name); database.UpdateLiveChar(char_name, GetAccountID()); - clog(WORLD__CLIENT,"%s %s (%d:%d)",seencharsel ? "Entering zone" : "Zoning to",zone_name,zoneID,instanceID); + Log.Out(Logs::Detail, Logs::World_Server,"%s %s (%d:%d)",seencharsel ? "Entering zone" : "Zoning to",zone_name,zoneID,instanceID); // database.SetAuthentication(account_id, char_name, zone_name, ip); if (seencharsel) { if (GetAdmin() < 80 && zoneserver_list.IsZoneLocked(zoneID)) { - clog(WORLD__CLIENT_ERR,"Enter world failed. Zone is locked."); + Log.Out(Logs::Detail, Logs::World_Server,"Enter world failed. Zone is locked."); ZoneUnavail(); return; } @@ -1170,9 +1168,9 @@ void Client::Clearance(int8 response) { if (zs == 0) { - clog(WORLD__CLIENT_ERR,"Unable to find zoneserver in Client::Clearance!!"); + Log.Out(Logs::Detail, Logs::World_Server,"Unable to find zoneserver in Client::Clearance!!"); } else { - clog(WORLD__CLIENT_ERR, "Invalid response %d in Client::Clearance", response); + Log.Out(Logs::Detail, Logs::World_Server, "Invalid response %d in Client::Clearance", response); } ZoneUnavail(); @@ -1182,20 +1180,20 @@ void Client::Clearance(int8 response) EQApplicationPacket* outapp; if (zs->GetCAddress() == nullptr) { - clog(WORLD__CLIENT_ERR, "Unable to do zs->GetCAddress() in Client::Clearance!!"); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to do zs->GetCAddress() in Client::Clearance!!"); ZoneUnavail(); return; } if (zoneID == 0) { - clog(WORLD__CLIENT_ERR, "zoneID is nullptr in Client::Clearance!!"); + Log.Out(Logs::Detail, Logs::World_Server, "zoneID is nullptr in Client::Clearance!!"); ZoneUnavail(); return; } const char* zonename = database.GetZoneName(zoneID); if (zonename == 0) { - clog(WORLD__CLIENT_ERR, "zonename is nullptr in Client::Clearance!!"); + Log.Out(Logs::Detail, Logs::World_Server, "zonename is nullptr in Client::Clearance!!"); ZoneUnavail(); return; } @@ -1226,7 +1224,7 @@ void Client::Clearance(int8 response) } strcpy(zsi->ip, zs_addr); zsi->port =zs->GetCPort(); - clog(WORLD__CLIENT,"Sending client to zone %s (%d:%d) at %s:%d",zonename,zoneID,instanceID,zsi->ip,zsi->port); + Log.Out(Logs::Detail, Logs::World_Server,"Sending client to zone %s (%d:%d) at %s:%d",zonename,zoneID,instanceID,zsi->ip,zsi->port); QueuePacket(outapp); safe_delete(outapp); @@ -1257,8 +1255,7 @@ bool Client::GenPassKey(char* key) { } void Client::QueuePacket(const EQApplicationPacket* app, bool ack_req) { - clog(WORLD__CLIENT_TRACE, "Sending EQApplicationPacket OpCode 0x%04x",app->GetOpcode()); - _pkt(WORLD__CLIENT_TRACE, app); + Log.Out(Logs::Detail, Logs::World_Server, "Sending EQApplicationPacket OpCode 0x%04x",app->GetOpcode()); ack_req = true; // It's broke right now, dont delete this line till fix it. =P eqs->QueuePacket(app, ack_req); @@ -1271,12 +1268,9 @@ void Client::SendGuildList() { //ask the guild manager to build us a nice guild list packet outapp->pBuffer = guild_mgr.MakeGuildList("", outapp->size); if(outapp->pBuffer == nullptr) { - clog(GUILDS__ERROR, "Unable to make guild list!"); return; } - clog(GUILDS__OUT_PACKETS, "Sending OP_GuildsList of length %d", outapp->size); -// _pkt(GUILDS__OUT_PACKET_TRACE, outapp); eqs->FastQueuePacket((EQApplicationPacket **)&outapp); } @@ -1359,27 +1353,27 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) in.s_addr = GetIP(); - clog(WORLD__CLIENT, "Character creation request from %s LS#%d (%s:%d) : ", GetCLE()->LSName(), GetCLE()->LSID(), inet_ntoa(in), GetPort()); - clog(WORLD__CLIENT, "Name: %s", name); - clog(WORLD__CLIENT, "Race: %d Class: %d Gender: %d Deity: %d Start zone: %d Tutorial: %s", + Log.Out(Logs::Detail, Logs::World_Server, "Character creation request from %s LS#%d (%s:%d) : ", GetCLE()->LSName(), GetCLE()->LSID(), inet_ntoa(in), GetPort()); + Log.Out(Logs::Detail, Logs::World_Server, "Name: %s", name); + Log.Out(Logs::Detail, Logs::World_Server, "Race: %d Class: %d Gender: %d Deity: %d Start zone: %d Tutorial: %s", cc->race, cc->class_, cc->gender, cc->deity, cc->start_zone, cc->tutorial ? "true" : "false"); - clog(WORLD__CLIENT, "STR STA AGI DEX WIS INT CHA Total"); - clog(WORLD__CLIENT, "%3d %3d %3d %3d %3d %3d %3d %3d", + Log.Out(Logs::Detail, Logs::World_Server, "STR STA AGI DEX WIS INT CHA Total"); + Log.Out(Logs::Detail, Logs::World_Server, "%3d %3d %3d %3d %3d %3d %3d %3d", cc->STR, cc->STA, cc->AGI, cc->DEX, cc->WIS, cc->INT, cc->CHA, stats_sum); - clog(WORLD__CLIENT, "Face: %d Eye colors: %d %d", cc->face, cc->eyecolor1, cc->eyecolor2); - clog(WORLD__CLIENT, "Hairstyle: %d Haircolor: %d", cc->hairstyle, cc->haircolor); - clog(WORLD__CLIENT, "Beard: %d Beardcolor: %d", cc->beard, cc->beardcolor); + Log.Out(Logs::Detail, Logs::World_Server, "Face: %d Eye colors: %d %d", cc->face, cc->eyecolor1, cc->eyecolor2); + Log.Out(Logs::Detail, Logs::World_Server, "Hairstyle: %d Haircolor: %d", cc->hairstyle, cc->haircolor); + Log.Out(Logs::Detail, Logs::World_Server, "Beard: %d Beardcolor: %d", cc->beard, cc->beardcolor); /* Validate the char creation struct */ if (ClientVersionBit & BIT_SoFAndLater) { if (!CheckCharCreateInfoSoF(cc)) { - clog(WORLD__CLIENT_ERR,"CheckCharCreateInfo did not validate the request (bad race/class/stats)"); + Log.Out(Logs::Detail, Logs::World_Server,"CheckCharCreateInfo did not validate the request (bad race/class/stats)"); return false; } } else { if (!CheckCharCreateInfoTitanium(cc)) { - clog(WORLD__CLIENT_ERR,"CheckCharCreateInfo did not validate the request (bad race/class/stats)"); + Log.Out(Logs::Detail, Logs::World_Server,"CheckCharCreateInfo did not validate the request (bad race/class/stats)"); return false; } } @@ -1441,14 +1435,14 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) /* If it is an SoF Client and the SoF Start Zone rule is set, send new chars there */ if (ClientVersionBit & BIT_SoFAndLater) { - clog(WORLD__CLIENT,"Found 'SoFStartZoneID' rule setting: %i", RuleI(World, SoFStartZoneID)); + Log.Out(Logs::Detail, Logs::World_Server,"Found 'SoFStartZoneID' rule setting: %i", RuleI(World, SoFStartZoneID)); if (RuleI(World, SoFStartZoneID) > 0) { pp.zone_id = RuleI(World, SoFStartZoneID); cc->start_zone = pp.zone_id; } } else { - clog(WORLD__CLIENT, "Found 'TitaniumStartZoneID' rule setting: %i", RuleI(World, TitaniumStartZoneID)); + Log.Out(Logs::General, Logs::World_Server, "Found 'TitaniumStartZoneID' rule setting: %i", RuleI(World, TitaniumStartZoneID)); if (RuleI(World, TitaniumStartZoneID) > 0) { /* if there's a startzone variable put them in there */ pp.zone_id = RuleI(World, TitaniumStartZoneID); @@ -1488,11 +1482,11 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) pp.binds[0].z = pp.z; pp.binds[0].heading = pp.heading; - clog(WORLD__CLIENT,"Current location: %s (%d) %0.2f, %0.2f, %0.2f, %0.2f", + Log.Out(Logs::Detail, Logs::World_Server,"Current location: %s (%d) %0.2f, %0.2f, %0.2f, %0.2f", database.GetZoneName(pp.zone_id), pp.zone_id, pp.x, pp.y, pp.z, pp.heading); - clog(WORLD__CLIENT,"Bind location: %s (%d) %0.2f, %0.2f, %0.2f", + Log.Out(Logs::Detail, Logs::World_Server,"Bind location: %s (%d) %0.2f, %0.2f, %0.2f", database.GetZoneName(pp.binds[0].zoneId), pp.binds[0].zoneId, pp.binds[0].x, pp.binds[0].y, pp.binds[0].z); - clog(WORLD__CLIENT,"Home location: %s (%d) %0.2f, %0.2f, %0.2f", + Log.Out(Logs::Detail, Logs::World_Server,"Home location: %s (%d) %0.2f, %0.2f, %0.2f", database.GetZoneName(pp.binds[4].zoneId), pp.binds[4].zoneId, pp.binds[4].x, pp.binds[4].y, pp.binds[4].z); /* Starting Items inventory */ @@ -1501,10 +1495,10 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) // now we give the pp and the inv we made to StoreCharacter // to see if we can store it if (!database.StoreCharacter(GetAccountID(), &pp, &inv)) { - clog(WORLD__CLIENT_ERR,"Character creation failed: %s", pp.name); + Log.Out(Logs::Detail, Logs::World_Server,"Character creation failed: %s", pp.name); return false; } - clog(WORLD__CLIENT,"Character creation successful: %s", pp.name); + Log.Out(Logs::Detail, Logs::World_Server,"Character creation successful: %s", pp.name); return true; } @@ -1514,7 +1508,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc) if (!cc) return false; - _log(WORLD__CLIENT, "Validating char creation info..."); + Log.Out(Logs::Detail, Logs::World_Server, "Validating char creation info..."); RaceClassCombos class_combo; bool found = false; @@ -1531,7 +1525,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc) } if (!found) { - _log(WORLD__CLIENT_ERR, "Could not find class/race/deity/start_zone combination"); + Log.Out(Logs::Detail, Logs::World_Server, "Could not find class/race/deity/start_zone combination"); return false; } @@ -1548,7 +1542,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc) } if (!found) { - _log(WORLD__CLIENT_ERR, "Could not find starting stats for selected character combo, cannot verify stats"); + Log.Out(Logs::Detail, Logs::World_Server, "Could not find starting stats for selected character combo, cannot verify stats"); return false; } @@ -1561,37 +1555,37 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc) allocation.DefaultPointAllocation[6]; if (cc->STR > allocation.BaseStats[0] + max_stats || cc->STR < allocation.BaseStats[0]) { - _log(WORLD__CLIENT_ERR, "Strength out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Strength out of range"); return false; } if (cc->DEX > allocation.BaseStats[1] + max_stats || cc->DEX < allocation.BaseStats[1]) { - _log(WORLD__CLIENT_ERR, "Dexterity out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Dexterity out of range"); return false; } if (cc->AGI > allocation.BaseStats[2] + max_stats || cc->AGI < allocation.BaseStats[2]) { - _log(WORLD__CLIENT_ERR, "Agility out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Agility out of range"); return false; } if (cc->STA > allocation.BaseStats[3] + max_stats || cc->STA < allocation.BaseStats[3]) { - _log(WORLD__CLIENT_ERR, "Stamina out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Stamina out of range"); return false; } if (cc->INT > allocation.BaseStats[4] + max_stats || cc->INT < allocation.BaseStats[4]) { - _log(WORLD__CLIENT_ERR, "Intelligence out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Intelligence out of range"); return false; } if (cc->WIS > allocation.BaseStats[5] + max_stats || cc->WIS < allocation.BaseStats[5]) { - _log(WORLD__CLIENT_ERR, "Wisdom out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Wisdom out of range"); return false; } if (cc->CHA > allocation.BaseStats[6] + max_stats || cc->CHA < allocation.BaseStats[6]) { - _log(WORLD__CLIENT_ERR, "Charisma out of range"); + Log.Out(Logs::Detail, Logs::World_Server, "Charisma out of range"); return false; } @@ -1604,7 +1598,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc) current_stats += cc->WIS - allocation.BaseStats[5]; current_stats += cc->CHA - allocation.BaseStats[6]; if (current_stats > max_stats) { - _log(WORLD__CLIENT_ERR, "Current Stats > Maximum Stats"); + Log.Out(Logs::Detail, Logs::World_Server, "Current Stats > Maximum Stats"); return false; } @@ -1685,7 +1679,7 @@ bool CheckCharCreateInfoTitanium(CharCreate_Struct *cc) if (!cc) return false; - _log(WORLD__CLIENT,"Validating char creation info..."); + Log.Out(Logs::Detail, Logs::World_Server,"Validating char creation info..."); classtemp = cc->class_ - 1; racetemp = cc->race - 1; @@ -1698,16 +1692,16 @@ bool CheckCharCreateInfoTitanium(CharCreate_Struct *cc) // if out of range looking it up in the table would crash stuff // so we return from these if (classtemp >= PLAYER_CLASS_COUNT) { - _log(WORLD__CLIENT_ERR," class is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," class is out of range"); return false; } if (racetemp >= _TABLE_RACES) { - _log(WORLD__CLIENT_ERR," race is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," race is out of range"); return false; } if (!ClassRaceLookupTable[classtemp][racetemp]) { //Lookup table better than a bunch of ifs? - _log(WORLD__CLIENT_ERR," invalid race/class combination"); + Log.Out(Logs::Detail, Logs::World_Server," invalid race/class combination"); // we return from this one, since if it's an invalid combination our table // doesn't have meaningful values for the stats return false; @@ -1735,43 +1729,43 @@ bool CheckCharCreateInfoTitanium(CharCreate_Struct *cc) // that are messed up not just the first hit if (bTOTAL + stat_points != cTOTAL) { - _log(WORLD__CLIENT_ERR," stat points total doesn't match expected value: expecting %d got %d", bTOTAL + stat_points, cTOTAL); + Log.Out(Logs::Detail, Logs::World_Server," stat points total doesn't match expected value: expecting %d got %d", bTOTAL + stat_points, cTOTAL); Charerrors++; } if (cc->STR > bSTR + stat_points || cc->STR < bSTR) { - _log(WORLD__CLIENT_ERR," stat STR is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat STR is out of range"); Charerrors++; } if (cc->STA > bSTA + stat_points || cc->STA < bSTA) { - _log(WORLD__CLIENT_ERR," stat STA is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat STA is out of range"); Charerrors++; } if (cc->AGI > bAGI + stat_points || cc->AGI < bAGI) { - _log(WORLD__CLIENT_ERR," stat AGI is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat AGI is out of range"); Charerrors++; } if (cc->DEX > bDEX + stat_points || cc->DEX < bDEX) { - _log(WORLD__CLIENT_ERR," stat DEX is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat DEX is out of range"); Charerrors++; } if (cc->WIS > bWIS + stat_points || cc->WIS < bWIS) { - _log(WORLD__CLIENT_ERR," stat WIS is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat WIS is out of range"); Charerrors++; } if (cc->INT > bINT + stat_points || cc->INT < bINT) { - _log(WORLD__CLIENT_ERR," stat INT is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat INT is out of range"); Charerrors++; } if (cc->CHA > bCHA + stat_points || cc->CHA < bCHA) { - _log(WORLD__CLIENT_ERR," stat CHA is out of range"); + Log.Out(Logs::Detail, Logs::World_Server," stat CHA is out of range"); Charerrors++; } /*TODO: Check for deity/class/race.. it'd be nice, but probably of any real use to hack(faction, deity based items are all I can think of) I am NOT writing those tables - kathgar*/ - _log(WORLD__CLIENT,"Found %d errors in character creation request", Charerrors); + Log.Out(Logs::Detail, Logs::World_Server,"Found %d errors in character creation request", Charerrors); return Charerrors == 0; } diff --git a/world/client.h b/world/client.h index 9014051ed..7c460fe9a 100644 --- a/world/client.h +++ b/world/client.h @@ -24,7 +24,7 @@ #include "../common/linked_list.h" #include "../common/timer.h" //#include "zoneserver.h" -#include "../common/logsys.h" + #include "../common/eq_packet_structs.h" #include "cliententry.h" diff --git a/world/cliententry.cpp b/world/cliententry.cpp index 5e93a8668..034b7ef9a 100644 --- a/world/cliententry.cpp +++ b/world/cliententry.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "cliententry.h" #include "clientlist.h" #include "login_server.h" @@ -267,7 +267,7 @@ bool ClientListEntry::CheckAuth(uint32 iLSID, const char* iKey) { int16 tmpStatus = WorldConfig::get()->DefaultStatus; paccountid = database.CreateAccount(plsname, 0, tmpStatus, LSID()); if (!paccountid) { - _log(WORLD__CLIENTLIST_ERR,"Error adding local account for LS login: '%s', duplicate name?" ,plsname); + Log.Out(Logs::Detail, Logs::World_Server,"Error adding local account for LS login: '%s', duplicate name?" ,plsname); return false; } strn0cpy(paccountname, plsname, sizeof(paccountname)); diff --git a/world/clientlist.cpp b/world/clientlist.cpp index f2e1c8b9b..b6b22a6d4 100644 --- a/world/clientlist.cpp +++ b/world/clientlist.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "clientlist.h" #include "zoneserver.h" #include "zonelist.h" @@ -56,7 +56,7 @@ void ClientList::Process() { if (!iterator.GetData()->Process()) { struct in_addr in; in.s_addr = iterator.GetData()->GetIP(); - _log(WORLD__CLIENTLIST,"Removing client from %s:%d", inet_ntoa(in), iterator.GetData()->GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"Removing client from %s:%d", inet_ntoa(in), iterator.GetData()->GetPort()); //the client destructor should take care of this. // iterator.GetData()->Free(); iterator.RemoveCurrent(); @@ -425,7 +425,7 @@ ClientListEntry* ClientList::CheckAuth(const char* iName, const char* iPassword) } int16 tmpadmin; - //_log(WORLD__ZONELIST,"Login with '%s' and '%s'", iName, iPassword); + //Log.LogDebugType(Logs::Detail, Logs::World_Server,"Login with '%s' and '%s'", iName, iPassword); uint32 accid = database.CheckLogin(iName, iPassword, &tmpadmin); if (accid) { @@ -447,7 +447,7 @@ void ClientList::SendOnlineGuildMembers(uint32 FromID, uint32 GuildID) if(!from) { - _log(WORLD__CLIENT_ERR,"Invalid client. FromID=%i GuildID=%i", FromID, GuildID); + Log.Out(Logs::Detail, Logs::World_Server,"Invalid client. FromID=%i GuildID=%i", FromID, GuildID); return; } @@ -751,7 +751,7 @@ void ClientList::SendWhoAll(uint32 fromid,const char* to, int16 admin, Who_All_S safe_delete(output); } catch(...){ - _log(WORLD__ZONELIST_ERR,"Unknown error in world's SendWhoAll (probably mem error), ignoring..."); + Log.Out(Logs::Detail, Logs::World_Server,"Unknown error in world's SendWhoAll (probably mem error), ignoring..."); return; } } @@ -895,7 +895,7 @@ void ClientList::SendFriendsWho(ServerFriendsWho_Struct *FriendsWho, WorldTCPCon safe_delete(pack2); } catch(...){ - _log(WORLD__ZONELIST_ERR,"Unknown error in world's SendFriendsWho (probably mem error), ignoring..."); + Log.Out(Logs::Detail, Logs::World_Server,"Unknown error in world's SendFriendsWho (probably mem error), ignoring..."); return; } } @@ -1130,7 +1130,7 @@ Client* ClientList::FindByAccountID(uint32 account_id) { iterator.Reset(); while(iterator.MoreElements()) { - _log(WORLD__CLIENTLIST, "ClientList[0x%08x]::FindByAccountID(%p) iterator.GetData()[%p]", this, account_id, iterator.GetData()); + Log.Out(Logs::Detail, Logs::World_Server, "ClientList[0x%08x]::FindByAccountID(%p) iterator.GetData()[%p]", this, account_id, iterator.GetData()); if (iterator.GetData()->GetAccountID() == account_id) { Client* tmp = iterator.GetData(); return tmp; @@ -1145,7 +1145,7 @@ Client* ClientList::FindByName(char* charname) { iterator.Reset(); while(iterator.MoreElements()) { - _log(WORLD__CLIENTLIST, "ClientList[0x%08x]::FindByName(\"%s\") iterator.GetData()[%p]", this, charname, iterator.GetData()); + Log.Out(Logs::Detail, Logs::World_Server, "ClientList[0x%08x]::FindByName(\"%s\") iterator.GetData()[%p]", this, charname, iterator.GetData()); if (iterator.GetData()->GetCharName() == charname) { Client* tmp = iterator.GetData(); return tmp; diff --git a/world/console.cpp b/world/console.cpp index c57a85f43..2194bfed4 100644 --- a/world/console.cpp +++ b/world/console.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include @@ -88,7 +88,7 @@ void Console::Die() { state = CONSOLE_STATE_CLOSED; struct in_addr in; in.s_addr = GetIP(); - _log(WORLD__CONSOLE,"Removing console from %s:%d",inet_ntoa(in),GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"Removing console from %s:%d",inet_ntoa(in),GetPort()); tcpc->Disconnect(); } @@ -219,7 +219,7 @@ bool Console::Process() { if (!tcpc->Connected()) { struct in_addr in; in.s_addr = GetIP(); - _log(WORLD__CONSOLE,"Removing console (!tcpc->Connected) from %s:%d",inet_ntoa(in),GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"Removing console (!tcpc->Connected) from %s:%d",inet_ntoa(in),GetPort()); return false; } //if we have not gotten the special markers after this timer, send login prompt @@ -234,7 +234,7 @@ bool Console::Process() { SendMessage(1, "Timeout, disconnecting..."); struct in_addr in; in.s_addr = GetIP(); - _log(WORLD__CONSOLE,"TCP connection timeout from %s:%d",inet_ntoa(in),GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"TCP connection timeout from %s:%d",inet_ntoa(in),GetPort()); return false; } @@ -243,29 +243,29 @@ bool Console::Process() { in.s_addr = GetIP(); if(tcpc->GetPacketMode() == EmuTCPConnection::packetModeZone) { auto zs = new ZoneServer(tcpc); - _log(WORLD__CONSOLE,"New zoneserver #%d from %s:%d", zs->GetID(), inet_ntoa(in), GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"New zoneserver #%d from %s:%d", zs->GetID(), inet_ntoa(in), GetPort()); zoneserver_list.Add(zs); numzones++; tcpc = 0; } else if(tcpc->GetPacketMode() == EmuTCPConnection::packetModeLauncher) { - _log(WORLD__CONSOLE,"New launcher from %s:%d", inet_ntoa(in), GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"New launcher from %s:%d", inet_ntoa(in), GetPort()); launcher_list.Add(tcpc); tcpc = 0; } else if(tcpc->GetPacketMode() == EmuTCPConnection::packetModeUCS) { - _log(WORLD__CONSOLE,"New UCS Connection from %s:%d", inet_ntoa(in), GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"New UCS Connection from %s:%d", inet_ntoa(in), GetPort()); UCSLink.SetConnection(tcpc); tcpc = 0; } else if(tcpc->GetPacketMode() == EmuTCPConnection::packetModeQueryServ) { - _log(WORLD__CONSOLE,"New QS Connection from %s:%d", inet_ntoa(in), GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"New QS Connection from %s:%d", inet_ntoa(in), GetPort()); QSLink.SetConnection(tcpc); tcpc = 0; } else { - _log(WORLD__CONSOLE,"Unsupported packet mode from %s:%d", inet_ntoa(in), GetPort()); + Log.Out(Logs::Detail, Logs::World_Server,"Unsupported packet mode from %s:%d", inet_ntoa(in), GetPort()); } return false; } @@ -422,7 +422,7 @@ void Console::ProcessCommand(const char* command) { state = CONSOLE_STATE_CLOSED; return; } - _log(WORLD__CONSOLE,"TCP console authenticated: Username=%s, Admin=%d",paccountname,admin); + Log.Out(Logs::Detail, Logs::World_Server,"TCP console authenticated: Username=%s, Admin=%d",paccountname,admin); SendMessage(1, 0); SendMessage(2, "Login accepted."); state = CONSOLE_STATE_CONNECTED; @@ -431,7 +431,7 @@ void Console::ProcessCommand(const char* command) { break; } case CONSOLE_STATE_CONNECTED: { - _log(WORLD__CONSOLE,"TCP command: %s: \"%s\"",paccountname,command); + Log.Out(Logs::Detail, Logs::World_Server,"TCP command: %s: \"%s\"",paccountname,command); Seperator sep(command); if (strcasecmp(sep.arg[0], "help") == 0 || strcmp(sep.arg[0], "?") == 0) { SendMessage(1, " whoami"); @@ -719,7 +719,7 @@ void Console::ProcessCommand(const char* command) { tmpname[0] = '*'; strcpy(&tmpname[1], paccountname); - _log(WORLD__CONSOLE,"Console ZoneBootup: %s, %s, %s",tmpname,sep.arg[2],sep.arg[1]); + Log.Out(Logs::Detail, Logs::World_Server,"Console ZoneBootup: %s, %s, %s",tmpname,sep.arg[2],sep.arg[1]); zoneserver_list.SOPZoneBootup(tmpname, atoi(sep.arg[1]), sep.arg[2], (bool) (strcasecmp(sep.arg[3], "static") == 0)); } } @@ -803,7 +803,7 @@ void Console::ProcessCommand(const char* command) { #endif RunLoops = true; SendMessage(1, " Login Server Reconnect manually restarted by Console"); - _log(WORLD__CONSOLE,"Login Server Reconnect manually restarted by Console"); + Log.Out(Logs::Detail, Logs::World_Server,"Login Server Reconnect manually restarted by Console"); } else if (strcasecmp(sep.arg[0], "zonelock") == 0 && admin >= consoleZoneStatus) { if (strcasecmp(sep.arg[1], "list") == 0) { diff --git a/world/eql_config.cpp b/world/eql_config.cpp index 65d4a5f11..255f6d3a0 100644 --- a/world/eql_config.cpp +++ b/world/eql_config.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "eql_config.h" #include "worlddb.h" #include "launcher_link.h" @@ -42,7 +42,7 @@ void EQLConfig::LoadSettings() { std::string query = StringFormat("SELECT dynamics FROM launcher WHERE name = '%s'", namebuf); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "EQLConfig::LoadSettings: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "EQLConfig::LoadSettings: %s", results.ErrorMessage().c_str()); else { auto row = results.begin(); m_dynamics = atoi(row[0]); @@ -51,7 +51,7 @@ void EQLConfig::LoadSettings() { query = StringFormat("SELECT zone, port FROM launcher_zones WHERE launcher = '%s'", namebuf); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "EQLConfig::LoadSettings: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "EQLConfig::LoadSettings: %s", results.ErrorMessage().c_str()); return; } @@ -73,7 +73,6 @@ EQLConfig *EQLConfig::CreateLauncher(const char *name, uint8 dynamic_count) { std::string query = StringFormat("INSERT INTO launcher (name, dynamics) VALUES('%s', %d)", namebuf, dynamic_count); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in CreateLauncher query: %s", results.ErrorMessage().c_str()); return nullptr; } @@ -118,14 +117,12 @@ void EQLConfig::DeleteLauncher() { std::string query = StringFormat("DELETE FROM launcher WHERE name = '%s'", namebuf); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in DeleteLauncher 1st query: %s", results.ErrorMessage().c_str()); return; } query = StringFormat("DELETE FROM launcher_zones WHERE launcher = '%s'", namebuf); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in DeleteLauncher 2nd query: %s", results.ErrorMessage().c_str()); return; } } @@ -173,7 +170,6 @@ bool EQLConfig::BootStaticZone(Const_char *short_name, uint16 port) { "VALUES('%s', '%s', %d)", namebuf, zonebuf, port); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in BootStaticZone query: %s", results.ErrorMessage().c_str()); return false; } @@ -202,7 +198,7 @@ bool EQLConfig::ChangeStaticZone(Const_char *short_name, uint16 port) { res = m_zones.find(short_name); if(res == m_zones.end()) { //not found. - LogFile->write(EQEmuLog::Error, "Update for unknown zone %s", short_name); + Log.Out(Logs::General, Logs::Error, "Update for unknown zone %s", short_name); return false; } @@ -217,7 +213,6 @@ bool EQLConfig::ChangeStaticZone(Const_char *short_name, uint16 port) { "launcher = '%s' AND zone = '%s'",port, namebuf, zonebuf); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ChangeStaticZone query: %s", results.ErrorMessage().c_str()); return false; } @@ -239,7 +234,7 @@ bool EQLConfig::DeleteStaticZone(Const_char *short_name) { res = m_zones.find(short_name); if(res == m_zones.end()) { //not found. - LogFile->write(EQEmuLog::Error, "Update for unknown zone %s", short_name); + Log.Out(Logs::General, Logs::Error, "Update for unknown zone %s", short_name); return false; } @@ -254,7 +249,6 @@ bool EQLConfig::DeleteStaticZone(Const_char *short_name) { "launcher = '%s' AND zone = '%s'", namebuf, zonebuf); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in DeleteStaticZone query: %s", results.ErrorMessage().c_str()); return false; } @@ -279,7 +273,6 @@ bool EQLConfig::SetDynamicCount(int count) { std::string query = StringFormat("UPDATE launcher SET dynamics=%d WHERE name='%s'", count, namebuf); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in SetDynamicCount query: %s", results.ErrorMessage().c_str()); return false; } diff --git a/world/eqw.cpp b/world/eqw.cpp index 343aa9ebd..04d5d4c8b 100644 --- a/world/eqw.cpp +++ b/world/eqw.cpp @@ -18,7 +18,7 @@ #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqw.h" #include "eqw_parser.h" #include "world_config.h" @@ -75,11 +75,11 @@ EQW::EQW() { void EQW::AppendOutput(const char *str) { m_outputBuffer += str; -// _log(WORLD__EQW, "Append %d chars, yeilding result of length %d", strlen(str), m_outputBuffer.length()); +// Log.LogDebugType(Logs::Detail, Logs::World_Server, "Append %d chars, yeilding result of length %d", strlen(str), m_outputBuffer.length()); } const std::string &EQW::GetOutput() const { -// _log(WORLD__EQW, "Getting, length %d", m_outputBuffer.length()); +// Log.LogDebugType(Logs::Detail, Logs::World_Server, "Getting, length %d", m_outputBuffer.length()); return(m_outputBuffer); } @@ -269,7 +269,7 @@ void EQW::LSReconnect() { pthread_create(&thread, nullptr, &AutoInitLoginServer, nullptr); #endif RunLoops = true; - _log(WORLD__CONSOLE,"Login Server Reconnect manually restarted by Web Tool"); + Log.Out(Logs::Detail, Logs::World_Server,"Login Server Reconnect manually restarted by Web Tool"); } /*EQLConfig * EQW::FindLauncher(Const_char *zone_ref) { diff --git a/world/eqw_http_handler.cpp b/world/eqw_http_handler.cpp index 70c56acfa..c30620747 100644 --- a/world/eqw_http_handler.cpp +++ b/world/eqw_http_handler.cpp @@ -15,13 +15,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqw_http_handler.h" #include "../common/SocketLib/Base64.h" #include "eqw_parser.h" #include "eqw.h" #include "http_request.h" -#include "../common/logsys.h" + #include "worlddb.h" #include "console.h" @@ -139,11 +139,11 @@ bool EQWHTTPHandler::CheckAuth() const { int16 status = 0; uint32 acctid = database.CheckLogin(m_username.c_str(), m_password.c_str(), &status); if(acctid == 0) { - _log(WORLD__HTTP_ERR, "Login autentication failed for %s with '%s'", m_username.c_str(), m_password.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Login autentication failed for %s with '%s'", m_username.c_str(), m_password.c_str()); return(false); } if(status < httpLoginStatus) { - _log(WORLD__HTTP_ERR, "Login of %s failed: status too low.", m_username.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Login of %s failed: status too low.", m_username.c_str()); return(false); } @@ -278,29 +278,29 @@ void EQWHTTPServer::CreateNewConnection(uint32 ID, SOCKET in_socket, uint32 irIP } void EQWHTTPServer::Stop() { - _log(WORLD__HTTP, "Requesting that HTTP Service stop."); + Log.Out(Logs::Detail, Logs::World_Server, "Requesting that HTTP Service stop."); m_running = false; Close(); } bool EQWHTTPServer::Start(uint16 port, const char *mime_file) { if(m_running) { - _log(WORLD__HTTP_ERR, "HTTP Service is already running on port %d", m_port); + Log.Out(Logs::Detail, Logs::World_Server, "HTTP Service is already running on port %d", m_port); return(false); } //load up our nice mime types if(!EQWHTTPHandler::LoadMimeTypes(mime_file)) { - _log(WORLD__HTTP_ERR, "Failed to load mime types from '%s'", mime_file); + Log.Out(Logs::Detail, Logs::World_Server, "Failed to load mime types from '%s'", mime_file); return(false); } else { - _log(WORLD__HTTP, "Loaded mime types from %s", mime_file); + Log.Out(Logs::Detail, Logs::World_Server, "Loaded mime types from %s", mime_file); } //fire up the server thread char errbuf[TCPServer_ErrorBufferSize]; if(!Open(port, errbuf)) { - _log(WORLD__HTTP_ERR, "Unable to bind to port %d for HTTP service: %s", port, errbuf); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to bind to port %d for HTTP service: %s", port, errbuf); return(false); } @@ -320,12 +320,12 @@ bool EQWHTTPServer::Start(uint16 port, const char *mime_file) { /* void EQWHTTPServer::Run() { - _log(WORLD__HTTP, "HTTP Processing thread started on port %d", m_port); + Log.LogDebugType(Logs::Detail, Logs::World_Server, "HTTP Processing thread started on port %d", m_port); do { #warning DELETE THIS IF YOU DONT USE IT Sleep(10); } while(m_running); - _log(WORLD__HTTP, "HTTP Processing thread terminating on port %d", m_port); + Log.LogDebugType(Logs::Detail, Logs::World_Server, "HTTP Processing thread terminating on port %d", m_port); } ThreadReturnType EQWHTTPServer::ThreadProc(void *data) { diff --git a/world/eqw_parser.cpp b/world/eqw_parser.cpp index 172c839d7..79e73ac22 100644 --- a/world/eqw_parser.cpp +++ b/world/eqw_parser.cpp @@ -20,11 +20,11 @@ #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqw_parser.h" #include "eqw.h" #include "../common/eqdb.h" -#include "../common/logsys.h" + #include "worlddb.h" #ifndef GvCV_set @@ -65,7 +65,7 @@ EQWParser::EQWParser() { my_perl = perl_alloc(); _empty_sv = newSV(0); if(!my_perl) - _log(WORLD__PERL_ERR, "Error: perl_alloc failed!"); + Log.Out(Logs::Detail, Logs::World_Server, "Error: perl_alloc failed!"); else DoInit(); } @@ -182,10 +182,10 @@ void EQWParser::DoInit() { #ifdef EMBPERL_PLUGIN - _log(WORLD__PERL, "Loading worldui perl plugins."); + Log.Out(Logs::Detail, Logs::World_Server, "Loading worldui perl plugins."); std::string err; if(!eval_file("world", "worldui.pl", err)) { - _log(WORLD__PERL_ERR, "Warning - world.pl: %s", err.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Warning - world.pl: %s", err.c_str()); } eval_pv( diff --git a/world/http_request.cpp b/world/http_request.cpp index fa7bc78f1..af4b6c9b2 100644 --- a/world/http_request.cpp +++ b/world/http_request.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "http_request.h" #include "eqw_http_handler.h" #include "../common/eqdb.h" diff --git a/world/launcher_link.cpp b/world/launcher_link.cpp index c72416a2d..bd8bfdc4b 100644 --- a/world/launcher_link.cpp +++ b/world/launcher_link.cpp @@ -16,11 +16,11 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "launcher_link.h" #include "launcher_list.h" #include "world_config.h" -#include "../common/logsys.h" + #include "../common/md5.h" #include "../common/packet_dump.h" #include "../common/servertalk.h" @@ -68,7 +68,6 @@ bool LauncherLink::Process() { ServerPacket *pack = 0; while((pack = tcpc->PopPacket())) { - _hex(WORLD__ZONE_TRACE,pack->pBuffer,pack->size); if (!authenticated) { if (WorldConfig::get()->SharedKey.length() > 0) { if (pack->opcode == ServerOP_ZAAuth && pack->size == 16) { @@ -79,7 +78,7 @@ bool LauncherLink::Process() { else { struct in_addr in; in.s_addr = GetIP(); - _log(WORLD__LAUNCH_ERR, "Launcher authorization failed."); + Log.Out(Logs::Detail, Logs::World_Server, "Launcher authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -90,7 +89,7 @@ bool LauncherLink::Process() { else { struct in_addr in; in.s_addr = GetIP(); - _log(WORLD__LAUNCH_ERR, "Launcher authorization failed."); + Log.Out(Logs::Detail, Logs::World_Server, "Launcher authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -100,7 +99,7 @@ bool LauncherLink::Process() { } else { - _log(WORLD__LAUNCH,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); + Log.Out(Logs::Detail, Logs::World_Server,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); authenticated = true; } delete pack; @@ -114,25 +113,25 @@ bool LauncherLink::Process() { break; } case ServerOP_ZAAuth: { - _log(WORLD__LAUNCH, "Got authentication from %s when they are already authenticated.", m_name.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Got authentication from %s when they are already authenticated.", m_name.c_str()); break; } case ServerOP_LauncherConnectInfo: { const LauncherConnectInfo *it = (const LauncherConnectInfo *) pack->pBuffer; if(HasName()) { - _log(WORLD__LAUNCH_ERR, "Launcher '%s' received an additional connect packet with name '%s'. Ignoring.", m_name.c_str(), it->name); + Log.Out(Logs::Detail, Logs::World_Server, "Launcher '%s' received an additional connect packet with name '%s'. Ignoring.", m_name.c_str(), it->name); break; } m_name = it->name; EQLConfig *config = launcher_list.GetConfig(m_name.c_str()); if(config == nullptr) { - _log(WORLD__LAUNCH, "Unknown launcher '%s' connected. Disconnecting.", it->name); + Log.Out(Logs::Detail, Logs::World_Server, "Unknown launcher '%s' connected. Disconnecting.", it->name); Disconnect(); break; } - _log(WORLD__LAUNCH, "Launcher Identified itself as '%s'. Loading zone list.", it->name); + Log.Out(Logs::Detail, Logs::World_Server, "Launcher Identified itself as '%s'. Loading zone list.", it->name); std::vector result; //database.GetLauncherZones(it->name, result); @@ -146,7 +145,7 @@ bool LauncherLink::Process() { zs.port = cur->port; zs.up = false; zs.starts = 0; - _log(WORLD__LAUNCH_TRACE, "%s: Loaded zone '%s' on port %d", m_name.c_str(), cur->name.c_str(), zs.port); + Log.Out(Logs::Detail, Logs::World_Server, "%s: Loaded zone '%s' on port %d", m_name.c_str(), cur->name.c_str(), zs.port); m_states[cur->name] = zs; } @@ -162,17 +161,17 @@ bool LauncherLink::Process() { std::map::iterator res; res = m_states.find(it->short_name); if(res == m_states.end()) { - _log(WORLD__LAUNCH_ERR, "%s: reported state for zone %s which it does not have.", m_name.c_str(), it->short_name); + Log.Out(Logs::Detail, Logs::World_Server, "%s: reported state for zone %s which it does not have.", m_name.c_str(), it->short_name); break; } - _log(WORLD__LAUNCH, "%s: %s reported state %s (%d starts)", m_name.c_str(), it->short_name, it->running?"STARTED":"STOPPED", it->start_count); + Log.Out(Logs::Detail, Logs::World_Server, "%s: %s reported state %s (%d starts)", m_name.c_str(), it->short_name, it->running?"STARTED":"STOPPED", it->start_count); res->second.up = it->running; res->second.starts = it->start_count; break; } default: { - _log(WORLD__LAUNCH_ERR, "Unknown ServerOPcode from launcher 0x%04x, size %d",pack->opcode,pack->size); + Log.Out(Logs::Detail, Logs::World_Server, "Unknown ServerOPcode from launcher 0x%04x, size %d",pack->opcode,pack->size); DumpPacket(pack->pBuffer, pack->size); break; } @@ -200,7 +199,7 @@ void LauncherLink::BootZone(const char *short_name, uint16 port) { zs.port = port; zs.up = false; zs.starts = 0; - _log(WORLD__LAUNCH_TRACE, "%s: Loaded zone '%s' on port %d", m_name.c_str(), short_name, zs.port); + Log.Out(Logs::Detail, Logs::World_Server, "%s: Loaded zone '%s' on port %d", m_name.c_str(), short_name, zs.port); m_states[short_name] = zs; StartZone(short_name); diff --git a/world/launcher_list.cpp b/world/launcher_list.cpp index 0722cb1e9..b66f7a600 100644 --- a/world/launcher_list.cpp +++ b/world/launcher_list.cpp @@ -17,10 +17,10 @@ */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "launcher_list.h" #include "launcher_link.h" -#include "../common/logsys.h" + #include "eql_config.h" LauncherList::LauncherList() @@ -57,10 +57,9 @@ void LauncherList::Process() { cur = m_pendingLaunchers.begin(); while(cur != m_pendingLaunchers.end()) { LauncherLink *l = *cur; -//printf("ProcP %d: %p\n", l->GetID(), l); if(!l->Process()) { //launcher has died before it identified itself. - _log(WORLD__LAUNCH, "Removing pending launcher %d", l->GetID()); + Log.Out(Logs::Detail, Logs::World_Server, "Removing pending launcher %d", l->GetID()); cur = m_pendingLaunchers.erase(cur); delete l; } else if(l->HasName()) { @@ -72,10 +71,10 @@ void LauncherList::Process() { std::map::iterator res; res = m_launchers.find(name); if(res != m_launchers.end()) { - _log(WORLD__LAUNCH, "Ghosting launcher %s", name.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Ghosting launcher %s", name.c_str()); delete res->second; } - _log(WORLD__LAUNCH, "Removing pending launcher %d. Adding %s to active list.", l->GetID(), name.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Removing pending launcher %d. Adding %s to active list.", l->GetID(), name.c_str()); //put the launcher in the list. m_launchers[name] = l; } else { @@ -88,10 +87,9 @@ void LauncherList::Process() { curl = m_launchers.begin(); while(curl != m_launchers.end()) { LauncherLink *l = curl->second; -//printf("Proc %s(%d): %p\n", l->GetName(), l->GetID(), l); if(!l->Process()) { //launcher has died before it identified itself. - _log(WORLD__LAUNCH, "Removing launcher %s (%d)", l->GetName(), l->GetID()); + Log.Out(Logs::Detail, Logs::World_Server, "Removing launcher %s (%d)", l->GetName(), l->GetID()); curl = m_launchers.erase(curl); delete l; } else { @@ -131,7 +129,7 @@ LauncherLink *LauncherList::FindByZone(const char *short_name) { void LauncherList::Add(EmuTCPConnection *conn) { auto it = new LauncherLink(nextID++, conn); - _log(WORLD__LAUNCH, "Adding pending launcher %d", it->GetID()); + Log.Out(Logs::Detail, Logs::World_Server, "Adding pending launcher %d", it->GetID()); m_pendingLaunchers.push_back(it); } diff --git a/world/lfplist.cpp b/world/lfplist.cpp index f04a833dd..2dccc4a3c 100644 --- a/world/lfplist.cpp +++ b/world/lfplist.cpp @@ -21,7 +21,7 @@ #include "clientlist.h" #include "zoneserver.h" #include "zonelist.h" -#include "../common/logsys.h" + #include "../common/misc_functions.h" extern ClientList client_list; diff --git a/world/login_server.cpp b/world/login_server.cpp index a448c0826..450ecb0a3 100644 --- a/world/login_server.cpp +++ b/world/login_server.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include @@ -96,8 +96,7 @@ bool LoginServer::Process() { ServerPacket *pack = 0; while((pack = tcpc->PopPacket())) { - _log(WORLD__LS_TRACE,"Recevied ServerPacket from LS OpCode 0x04x",pack->opcode); - _hex(WORLD__LS_TRACE,pack->pBuffer,pack->size); + Log.Out(Logs::Detail, Logs::World_Server,"Recevied ServerPacket from LS OpCode 0x04x",pack->opcode); switch(pack->opcode) { case 0: @@ -160,12 +159,12 @@ bool LoginServer::Process() { case ServerOP_LSFatalError: { #ifndef IGNORE_LS_FATAL_ERROR WorldConfig::DisableLoginserver(); - _log(WORLD__LS_ERR, "Login server responded with FatalError. Disabling reconnect."); + Log.Out(Logs::Detail, Logs::World_Server, "Login server responded with FatalError. Disabling reconnect."); #else - _log(WORLD__LS_ERR, "Login server responded with FatalError."); + Log.Out(Logs::Detail, Logs::World_Server, "Login server responded with FatalError."); #endif if (pack->size > 1) { - _log(WORLD__LS_ERR, " %s",pack->pBuffer); + Log.Out(Logs::Detail, Logs::World_Server, " %s",pack->pBuffer); } break; } @@ -177,18 +176,18 @@ bool LoginServer::Process() { case ServerOP_LSRemoteAddr: { if (!Config->WorldAddress.length()) { WorldConfig::SetWorldAddress((char *)pack->pBuffer); - _log(WORLD__LS, "Loginserver provided %s as world address",pack->pBuffer); + Log.Out(Logs::Detail, Logs::World_Server, "Loginserver provided %s as world address",pack->pBuffer); } break; } case ServerOP_LSAccountUpdate: { - _log(WORLD__LS, "Received ServerOP_LSAccountUpdate packet from loginserver"); + Log.Out(Logs::Detail, Logs::World_Server, "Received ServerOP_LSAccountUpdate packet from loginserver"); CanAccountUpdate = true; break; } default: { - _log(WORLD__LS_ERR, "Unknown LSOpCode: 0x%04x size=%d",(int)pack->opcode,pack->size); + Log.Out(Logs::Detail, Logs::World_Server, "Unknown LSOpCode: 0x%04x size=%d",(int)pack->opcode,pack->size); DumpPacket(pack->pBuffer, pack->size); break; } @@ -202,10 +201,10 @@ bool LoginServer::Process() { bool LoginServer::InitLoginServer() { if(Connected() == false) { if(ConnectReady()) { - _log(WORLD__LS, "Connecting to login server: %s:%d",LoginServerAddress,LoginServerPort); + Log.Out(Logs::Detail, Logs::World_Server, "Connecting to login server: %s:%d",LoginServerAddress,LoginServerPort); Connect(); } else { - _log(WORLD__LS_ERR, "Not connected but not ready to connect, this is bad: %s:%d", + Log.Out(Logs::Detail, Logs::World_Server, "Not connected but not ready to connect, this is bad: %s:%d", LoginServerAddress,LoginServerPort); } } @@ -216,29 +215,29 @@ bool LoginServer::Connect() { char tmp[25]; if(database.GetVariable("loginType",tmp,sizeof(tmp)) && strcasecmp(tmp,"MinILogin") == 0){ minilogin = true; - _log(WORLD__LS, "Setting World to MiniLogin Server type"); + Log.Out(Logs::Detail, Logs::World_Server, "Setting World to MiniLogin Server type"); } else minilogin = false; if (minilogin && WorldConfig::get()->WorldAddress.length()==0) { - _log(WORLD__LS_ERR, "**** For minilogin to work, you need to set the
element in the section."); + Log.Out(Logs::Detail, Logs::World_Server, "**** For minilogin to work, you need to set the
element in the section."); return false; } char errbuf[TCPConnection_ErrorBufferSize]; if ((LoginServerIP = ResolveIP(LoginServerAddress, errbuf)) == 0) { - _log(WORLD__LS_ERR, "Unable to resolve '%s' to an IP.",LoginServerAddress); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to resolve '%s' to an IP.",LoginServerAddress); return false; } if (LoginServerIP == 0 || LoginServerPort == 0) { - _log(WORLD__LS_ERR, "Connect info incomplete, cannot connect: %s:%d",LoginServerAddress,LoginServerPort); + Log.Out(Logs::Detail, Logs::World_Server, "Connect info incomplete, cannot connect: %s:%d",LoginServerAddress,LoginServerPort); return false; } if (tcpc->ConnectIP(LoginServerIP, LoginServerPort, errbuf)) { - _log(WORLD__LS, "Connected to Loginserver: %s:%d",LoginServerAddress,LoginServerPort); + Log.Out(Logs::Detail, Logs::World_Server, "Connected to Loginserver: %s:%d",LoginServerAddress,LoginServerPort); if (minilogin) SendInfo(); else @@ -248,7 +247,7 @@ bool LoginServer::Connect() { return true; } else { - _log(WORLD__LS_ERR, "Could not connect to login server: %s:%d %s",LoginServerAddress,LoginServerPort,errbuf); + Log.Out(Logs::Detail, Logs::World_Server, "Could not connect to login server: %s:%d %s",LoginServerAddress,LoginServerPort,errbuf); return false; } } @@ -324,7 +323,7 @@ void LoginServer::SendStatus() { void LoginServer::SendAccountUpdate(ServerPacket* pack) { ServerLSAccountUpdate_Struct* s = (ServerLSAccountUpdate_Struct *) pack->pBuffer; if(CanUpdate()) { - _log(WORLD__LS, "Sending ServerOP_LSAccountUpdate packet to loginserver: %s:%d",LoginServerAddress,LoginServerPort); + Log.Out(Logs::Detail, Logs::World_Server, "Sending ServerOP_LSAccountUpdate packet to loginserver: %s:%d",LoginServerAddress,LoginServerPort); strn0cpy(s->worldaccount, LoginAccount, 30); strn0cpy(s->worldpassword, LoginPassword, 30); SendPacket(pack); diff --git a/world/login_server_list.cpp b/world/login_server_list.cpp index 4bce5032c..6104f4f0a 100644 --- a/world/login_server_list.cpp +++ b/world/login_server_list.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include @@ -134,7 +134,7 @@ bool LoginServerList::SendPacket(ServerPacket* pack) { bool LoginServerList::SendAccountUpdate(ServerPacket* pack) { LinkedListIterator iterator(list); - _log(WORLD__LS, "Requested to send ServerOP_LSAccountUpdate packet to all loginservers"); + Log.Out(Logs::Detail, Logs::World_Server, "Requested to send ServerOP_LSAccountUpdate packet to all loginservers"); iterator.Reset(); while(iterator.MoreElements()){ if(iterator.GetData()->CanUpdate()) { diff --git a/world/net.cpp b/world/net.cpp index dbc63ee5d..b775685f5 100644 --- a/world/net.cpp +++ b/world/net.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include @@ -24,7 +24,8 @@ #include -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/queue.h" #include "../common/timer.h" #include "../common/eq_stream_factory.h" @@ -33,7 +34,7 @@ #include "../common/version.h" #include "../common/eqtime.h" #include "../common/timeoutmgr.h" -#include "../common/eqemu_error.h" + #include "../common/opcodemgr.h" #include "../common/guilds.h" #include "../common/eq_stream_ident.h" @@ -96,7 +97,7 @@ LoginServerList loginserverlist; EQWHTTPServer http_server; UCSConnection UCSLink; QueryServConnection QSLink; -LauncherList launcher_list; +LauncherList launcher_list; AdventureManager adventure_manager; EQEmu::Random emu_random; volatile bool RunLoops = true; @@ -104,6 +105,7 @@ uint32 numclients = 0; uint32 numzones = 0; bool holdzones = false; +EQEmuLogSys Log; extern ConsoleList console_list; @@ -111,6 +113,7 @@ void CatchSignal(int sig_num); int main(int argc, char** argv) { RegisterExecutablePlatform(ExePlatformWorld); + Log.LoadLogSettingsDefaults(); set_exception_handler(); /* Database Version Check */ @@ -123,36 +126,30 @@ int main(int argc, char** argv) { } // Load server configuration - _log(WORLD__INIT, "Loading server configuration.."); + Log.Out(Logs::General, Logs::World_Server, "Loading server configuration.."); if (!WorldConfig::LoadConfig()) { - _log(WORLD__INIT_ERR, "Loading server configuration failed."); + Log.Out(Logs::General, Logs::World_Server, "Loading server configuration failed."); return 1; } const WorldConfig *Config=WorldConfig::get(); - if(!load_log_settings(Config->LogSettingsFile.c_str())) - _log(WORLD__INIT, "Warning: Unable to read %s", Config->LogSettingsFile.c_str()); - else - _log(WORLD__INIT, "Log settings loaded from %s", Config->LogSettingsFile.c_str()); - - - _log(WORLD__INIT, "CURRENT_VERSION: %s", CURRENT_VERSION); + Log.Out(Logs::General, Logs::World_Server, "CURRENT_VERSION: %s", CURRENT_VERSION); #ifdef _DEBUG _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); #endif if (signal(SIGINT, CatchSignal) == SIG_ERR) { - _log(WORLD__INIT_ERR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::World_Server, "Could not set signal handler"); return 1; } if (signal(SIGTERM, CatchSignal) == SIG_ERR) { - _log(WORLD__INIT_ERR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::World_Server, "Could not set signal handler"); return 1; } #ifndef WIN32 if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { - _log(WORLD__INIT_ERR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::World_Server, "Could not set signal handler"); return 1; } #endif @@ -161,7 +158,7 @@ int main(int argc, char** argv) { if (Config->LoginCount == 0) { if (Config->LoginHost.length()) { loginserverlist.Add(Config->LoginHost.c_str(), Config->LoginPort, Config->LoginAccount.c_str(), Config->LoginPassword.c_str()); - _log(WORLD__INIT, "Added loginserver %s:%i", Config->LoginHost.c_str(), Config->LoginPort); + Log.Out(Logs::General, Logs::World_Server, "Added loginserver %s:%i", Config->LoginHost.c_str(), Config->LoginPort); } } else { LinkedList loginlist=Config->loginlist; @@ -169,23 +166,27 @@ int main(int argc, char** argv) { iterator.Reset(); while(iterator.MoreElements()) { loginserverlist.Add(iterator.GetData()->LoginHost.c_str(), iterator.GetData()->LoginPort, iterator.GetData()->LoginAccount.c_str(), iterator.GetData()->LoginPassword.c_str()); - _log(WORLD__INIT, "Added loginserver %s:%i", iterator.GetData()->LoginHost.c_str(), iterator.GetData()->LoginPort); + Log.Out(Logs::General, Logs::World_Server, "Added loginserver %s:%i", iterator.GetData()->LoginHost.c_str(), iterator.GetData()->LoginPort); iterator.Advance(); } } - _log(WORLD__INIT, "Connecting to MySQL..."); + Log.Out(Logs::General, Logs::World_Server, "Connecting to MySQL..."); if (!database.Connect( Config->DatabaseHost.c_str(), Config->DatabaseUsername.c_str(), Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) { - _log(WORLD__INIT_ERR, "Cannot continue without a database connection."); + Log.Out(Logs::General, Logs::World_Server, "Cannot continue without a database connection."); return 1; } guild_mgr.SetDatabase(&database); + /* Register Log System and Settings */ + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); + if (argc >= 2) { char tmp[2]; if (strcasecmp(argv[1], "help") == 0 || strcasecmp(argv[1], "?") == 0 || strcasecmp(argv[1], "/?") == 0 || strcasecmp(argv[1], "-?") == 0 || strcasecmp(argv[1], "-h") == 0 || strcasecmp(argv[1], "-help") == 0) { @@ -277,56 +278,56 @@ int main(int argc, char** argv) { } if(Config->WorldHTTPEnabled) { - _log(WORLD__INIT, "Starting HTTP world service..."); + Log.Out(Logs::General, Logs::World_Server, "Starting HTTP world service..."); http_server.Start(Config->WorldHTTPPort, Config->WorldHTTPMimeFile.c_str()); } else { - _log(WORLD__INIT, "HTTP world service disabled."); + Log.Out(Logs::General, Logs::World_Server, "HTTP world service disabled."); } - _log(WORLD__INIT, "Checking Database Conversions.."); + Log.Out(Logs::General, Logs::World_Server, "Checking Database Conversions.."); database.CheckDatabaseConversions(); - _log(WORLD__INIT, "Loading variables.."); + Log.Out(Logs::General, Logs::World_Server, "Loading variables.."); database.LoadVariables(); - _log(WORLD__INIT, "Loading zones.."); + Log.Out(Logs::General, Logs::World_Server, "Loading zones.."); database.LoadZoneNames(); - _log(WORLD__INIT, "Clearing groups.."); + Log.Out(Logs::General, Logs::World_Server, "Clearing groups.."); database.ClearGroup(); - _log(WORLD__INIT, "Clearing raids.."); + Log.Out(Logs::General, Logs::World_Server, "Clearing raids.."); database.ClearRaid(); database.ClearRaidDetails(); database.ClearRaidLeader(); - _log(WORLD__INIT, "Loading items.."); + Log.Out(Logs::General, Logs::World_Server, "Loading items.."); if (!database.LoadItems()) - _log(WORLD__INIT_ERR, "Error: Could not load item data. But ignoring"); - _log(WORLD__INIT, "Loading skill caps.."); + Log.Out(Logs::General, Logs::World_Server, "Error: Could not load item data. But ignoring"); + Log.Out(Logs::General, Logs::World_Server, "Loading skill caps.."); if (!database.LoadSkillCaps()) - _log(WORLD__INIT_ERR, "Error: Could not load skill cap data. But ignoring"); - _log(WORLD__INIT, "Loading guilds.."); + Log.Out(Logs::General, Logs::World_Server, "Error: Could not load skill cap data. But ignoring"); + Log.Out(Logs::General, Logs::World_Server, "Loading guilds.."); guild_mgr.LoadGuilds(); //rules: { char tmp[64]; if (database.GetVariable("RuleSet", tmp, sizeof(tmp)-1)) { - _log(WORLD__INIT, "Loading rule set '%s'", tmp); + Log.Out(Logs::General, Logs::World_Server, "Loading rule set '%s'", tmp); if(!RuleManager::Instance()->LoadRules(&database, tmp)) { - _log(WORLD__INIT_ERR, "Failed to load ruleset '%s', falling back to defaults.", tmp); + Log.Out(Logs::General, Logs::World_Server, "Failed to load ruleset '%s', falling back to defaults.", tmp); } } else { if(!RuleManager::Instance()->LoadRules(&database, "default")) { - _log(WORLD__INIT, "No rule set configured, using default rules"); + Log.Out(Logs::General, Logs::World_Server, "No rule set configured, using default rules"); } else { - _log(WORLD__INIT, "Loaded default rule set 'default'", tmp); + Log.Out(Logs::General, Logs::World_Server, "Loaded default rule set 'default'", tmp); } } } if(RuleB(World, ClearTempMerchantlist)){ - _log(WORLD__INIT, "Clearing temporary merchant lists.."); + Log.Out(Logs::General, Logs::World_Server, "Clearing temporary merchant lists.."); database.ClearMerchantTemp(); } - _log(WORLD__INIT, "Loading EQ time of day.."); + Log.Out(Logs::General, Logs::World_Server, "Loading EQ time of day.."); if (!zoneserver_list.worldclock.loadFile(Config->EQTimeFile.c_str())) - _log(WORLD__INIT_ERR, "Unable to load %s", Config->EQTimeFile.c_str()); - _log(WORLD__INIT, "Loading launcher list.."); + Log.Out(Logs::General, Logs::World_Server, "Unable to load %s", Config->EQTimeFile.c_str()); + Log.Out(Logs::General, Logs::World_Server, "Loading launcher list.."); launcher_list.LoadList(); char tmp[20]; @@ -335,45 +336,45 @@ int main(int argc, char** argv) { if ((strcasecmp(tmp, "1") == 0)) { holdzones = true; } - _log(WORLD__INIT, "Reboot zone modes %s",holdzones ? "ON" : "OFF"); + Log.Out(Logs::General, Logs::World_Server, "Reboot zone modes %s",holdzones ? "ON" : "OFF"); - _log(WORLD__INIT, "Deleted %i stale player corpses from database", database.DeleteStalePlayerCorpses()); + Log.Out(Logs::General, Logs::World_Server, "Deleted %i stale player corpses from database", database.DeleteStalePlayerCorpses()); - _log(WORLD__INIT, "Loading adventures..."); + Log.Out(Logs::General, Logs::World_Server, "Loading adventures..."); if(!adventure_manager.LoadAdventureTemplates()) { - _log(WORLD__INIT_ERR, "Unable to load adventure templates."); + Log.Out(Logs::General, Logs::World_Server, "Unable to load adventure templates."); } if(!adventure_manager.LoadAdventureEntries()) { - _log(WORLD__INIT_ERR, "Unable to load adventure templates."); + Log.Out(Logs::General, Logs::World_Server, "Unable to load adventure templates."); } adventure_manager.Load(); adventure_manager.LoadLeaderboardInfo(); - _log(WORLD__INIT, "Purging expired instances"); + Log.Out(Logs::General, Logs::World_Server, "Purging expired instances"); database.PurgeExpiredInstances(); Timer PurgeInstanceTimer(450000); PurgeInstanceTimer.Start(450000); - _log(WORLD__INIT, "Loading char create info..."); + Log.Out(Logs::General, Logs::World_Server, "Loading char create info..."); database.LoadCharacterCreateAllocations(); database.LoadCharacterCreateCombos(); char errbuf[TCPConnection_ErrorBufferSize]; if (tcps.Open(Config->WorldTCPPort, errbuf)) { - _log(WORLD__INIT,"Zone (TCP) listener started."); + Log.Out(Logs::General, Logs::World_Server,"Zone (TCP) listener started."); } else { - _log(WORLD__INIT_ERR,"Failed to start zone (TCP) listener on port %d:",Config->WorldTCPPort); - _log(WORLD__INIT_ERR," %s",errbuf); + Log.Out(Logs::General, Logs::World_Server,"Failed to start zone (TCP) listener on port %d:",Config->WorldTCPPort); + Log.Out(Logs::General, Logs::World_Server," %s",errbuf); return 1; } if (eqsf.Open()) { - _log(WORLD__INIT,"Client (UDP) listener started."); + Log.Out(Logs::General, Logs::World_Server,"Client (UDP) listener started."); } else { - _log(WORLD__INIT_ERR,"Failed to start client (UDP) listener (port 9000)"); + Log.Out(Logs::General, Logs::World_Server,"Failed to start client (UDP) listener (port 9000)"); return 1; } @@ -401,7 +402,7 @@ int main(int argc, char** argv) { //structures and opcodes for that patch. struct in_addr in; in.s_addr = eqs->GetRemoteIP(); - _log(WORLD__CLIENT, "New connection from %s:%d", inet_ntoa(in),ntohs(eqs->GetRemotePort())); + Log.Out(Logs::General, Logs::World_Server, "New connection from %s:%d", inet_ntoa(in),ntohs(eqs->GetRemotePort())); stream_identifier.AddStream(eqs); //takes the stream } @@ -414,19 +415,19 @@ int main(int argc, char** argv) { struct in_addr in; in.s_addr = eqsi->GetRemoteIP(); if (RuleB(World, UseBannedIPsTable)){ //Lieka: Check to see if we have the responsibility for blocking IPs. - _log(WORLD__CLIENT, "Checking inbound connection %s against BannedIPs table", inet_ntoa(in)); + Log.Out(Logs::General, Logs::World_Server, "Checking inbound connection %s against BannedIPs table", inet_ntoa(in)); if (!database.CheckBannedIPs(inet_ntoa(in))){ //Lieka: Check inbound IP against banned IP table. - _log(WORLD__CLIENT, "Connection %s PASSED banned IPs check. Processing connection.", inet_ntoa(in)); + Log.Out(Logs::General, Logs::World_Server, "Connection %s PASSED banned IPs check. Processing connection.", inet_ntoa(in)); auto client = new Client(eqsi); // @merth: client->zoneattempt=0; client_list.Add(client); } else { - _log(WORLD__CLIENT, "Connection from %s FAILED banned IPs check. Closing connection.", inet_ntoa(in)); + Log.Out(Logs::General, Logs::World_Server, "Connection from %s FAILED banned IPs check. Closing connection.", inet_ntoa(in)); eqsi->Close(); //Lieka: If the inbound IP is on the banned table, close the EQStream. } } if (!RuleB(World, UseBannedIPsTable)){ - _log(WORLD__CLIENT, "New connection from %s:%d, processing connection", inet_ntoa(in), ntohs(eqsi->GetRemotePort())); + Log.Out(Logs::General, Logs::World_Server, "New connection from %s:%d, processing connection", inet_ntoa(in), ntohs(eqsi->GetRemotePort())); auto client = new Client(eqsi); // @merth: client->zoneattempt=0; client_list.Add(client); @@ -438,7 +439,7 @@ int main(int argc, char** argv) { while ((tcpc = tcps.NewQueuePop())) { struct in_addr in; in.s_addr = tcpc->GetrIP(); - _log(WORLD__ZONE, "New TCP connection from %s:%d", inet_ntoa(in),tcpc->GetrPort()); + Log.Out(Logs::General, Logs::World_Server, "New TCP connection from %s:%d", inet_ntoa(in),tcpc->GetrPort()); console_list.Add(new Console(tcpc)); } @@ -449,21 +450,13 @@ int main(int argc, char** argv) { //check for timeouts in other threads timeout_manager.CheckTimeouts(); - loginserverlist.Process(); - console_list.Process(); - zoneserver_list.Process(); - launcher_list.Process(); - UCSLink.Process(); - QSLink.Process(); - - LFPGroupList.Process(); - + LFPGroupList.Process(); adventure_manager.Process(); if (InterserverTimer.Check()) { @@ -489,26 +482,26 @@ int main(int argc, char** argv) { } Sleep(20); } - _log(WORLD__SHUTDOWN,"World main loop completed."); - _log(WORLD__SHUTDOWN,"Shutting down console connections (if any)."); + Log.Out(Logs::General, Logs::World_Server, "World main loop completed."); + Log.Out(Logs::General, Logs::World_Server, "Shutting down console connections (if any)."); console_list.KillAll(); - _log(WORLD__SHUTDOWN,"Shutting down zone connections (if any)."); + Log.Out(Logs::General, Logs::World_Server, "Shutting down zone connections (if any)."); zoneserver_list.KillAll(); - _log(WORLD__SHUTDOWN,"Zone (TCP) listener stopped."); + Log.Out(Logs::General, Logs::World_Server, "Zone (TCP) listener stopped."); tcps.Close(); - _log(WORLD__SHUTDOWN,"Client (UDP) listener stopped."); + Log.Out(Logs::General, Logs::World_Server, "Client (UDP) listener stopped."); eqsf.Close(); - _log(WORLD__SHUTDOWN,"Signaling HTTP service to stop..."); + Log.Out(Logs::General, Logs::World_Server, "Signaling HTTP service to stop..."); http_server.Stop(); + Log.CloseFileLogs(); - CheckEQEMuErrorAndPause(); return 0; } void CatchSignal(int sig_num) { - _log(WORLD__SHUTDOWN,"Caught signal %d",sig_num); + Log.Out(Logs::General, Logs::World_Server,"Caught signal %d",sig_num); if(zoneserver_list.worldclock.saveFile(WorldConfig::get()->EQTimeFile.c_str())==false) - _log(WORLD__SHUTDOWN,"Failed to save time file."); + Log.Out(Logs::General, Logs::World_Server,"Failed to save time file."); RunLoops = false; } diff --git a/world/perl_eql_config.cpp b/world/perl_eql_config.cpp index 19ea7c9f6..7cd7d0e2a 100644 --- a/world/perl_eql_config.cpp +++ b/world/perl_eql_config.cpp @@ -28,7 +28,7 @@ typedef const char Const_char; #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqw_parser.h" #include "eql_config.h" diff --git a/world/perl_eqw.cpp b/world/perl_eqw.cpp index 0a564164d..675eac26c 100644 --- a/world/perl_eqw.cpp +++ b/world/perl_eqw.cpp @@ -28,7 +28,7 @@ typedef const char Const_char; #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqw_parser.h" #include "eqw.h" diff --git a/world/perl_http_request.cpp b/world/perl_http_request.cpp index 12d70002c..cdd7e60f1 100644 --- a/world/perl_http_request.cpp +++ b/world/perl_http_request.cpp @@ -28,7 +28,7 @@ typedef const char Const_char; #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "eqw_parser.h" #include "http_request.h" diff --git a/world/queryserv.cpp b/world/queryserv.cpp index 3eb664a5e..bf1af1e2e 100644 --- a/world/queryserv.cpp +++ b/world/queryserv.cpp @@ -1,10 +1,11 @@ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "queryserv.h" #include "world_config.h" #include "clientlist.h" #include "zonelist.h" -#include "../common/logsys.h" -#include "../common/logtypes.h" + + #include "../common/md5.h" #include "../common/emu_tcp_connection.h" #include "../common/packet_dump.h" @@ -22,7 +23,7 @@ void QueryServConnection::SetConnection(EmuTCPConnection *inStream) { if(Stream) { - _log(QUERYSERV__ERROR, "Incoming QueryServ Connection while we were already connected to a QueryServ."); + Log.Out(Logs::Detail, Logs::QS_Server, "Incoming QueryServ Connection while we were already connected to a QueryServ."); Stream->Disconnect(); } @@ -56,7 +57,7 @@ bool QueryServConnection::Process() { struct in_addr in; in.s_addr = GetIP(); - _log(QUERYSERV__ERROR, "QueryServ authorization failed."); + Log.Out(Logs::Detail, Logs::QS_Server, "QueryServ authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -68,7 +69,7 @@ bool QueryServConnection::Process() { struct in_addr in; in.s_addr = GetIP(); - _log(QUERYSERV__ERROR, "QueryServ authorization failed."); + Log.Out(Logs::Detail, Logs::QS_Server, "QueryServ authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -78,7 +79,7 @@ bool QueryServConnection::Process() } else { - _log(QUERYSERV__ERROR,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); + Log.Out(Logs::Detail, Logs::QS_Server,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); authenticated = true; } delete pack; @@ -96,7 +97,7 @@ bool QueryServConnection::Process() } case ServerOP_ZAAuth: { - _log(QUERYSERV__ERROR, "Got authentication from QueryServ when they are already authenticated."); + Log.Out(Logs::Detail, Logs::QS_Server, "Got authentication from QueryServ when they are already authenticated."); break; } case ServerOP_QueryServGeneric: @@ -113,7 +114,7 @@ bool QueryServConnection::Process() } default: { - _log(QUERYSERV__ERROR, "Unknown ServerOPcode from QueryServ 0x%04x, size %d", pack->opcode, pack->size); + Log.Out(Logs::Detail, Logs::QS_Server, "Unknown ServerOPcode from QueryServ 0x%04x, size %d", pack->opcode, pack->size); DumpPacket(pack->pBuffer, pack->size); break; } diff --git a/world/ucs.cpp b/world/ucs.cpp index 875d2be23..e15007959 100644 --- a/world/ucs.cpp +++ b/world/ucs.cpp @@ -1,8 +1,9 @@ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "ucs.h" #include "world_config.h" -#include "../common/logsys.h" -#include "../common/logtypes.h" + + #include "../common/md5.h" #include "../common/emu_tcp_connection.h" #include "../common/packet_dump.h" @@ -17,7 +18,7 @@ void UCSConnection::SetConnection(EmuTCPConnection *inStream) { if(Stream) { - _log(UCS__ERROR, "Incoming UCS Connection while we were already connected to a UCS."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Incoming UCS Connection while we were already connected to a UCS."); Stream->Disconnect(); } @@ -51,7 +52,7 @@ bool UCSConnection::Process() { struct in_addr in; in.s_addr = GetIP(); - _log(UCS__ERROR, "UCS authorization failed."); + Log.Out(Logs::Detail, Logs::UCS_Server, "UCS authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -63,7 +64,7 @@ bool UCSConnection::Process() { struct in_addr in; in.s_addr = GetIP(); - _log(UCS__ERROR, "UCS authorization failed."); + Log.Out(Logs::Detail, Logs::UCS_Server, "UCS authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -73,7 +74,7 @@ bool UCSConnection::Process() } else { - _log(UCS__ERROR,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); + Log.Out(Logs::Detail, Logs::UCS_Server,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); authenticated = true; } delete pack; @@ -91,12 +92,12 @@ bool UCSConnection::Process() } case ServerOP_ZAAuth: { - _log(UCS__ERROR, "Got authentication from UCS when they are already authenticated."); + Log.Out(Logs::Detail, Logs::UCS_Server, "Got authentication from UCS when they are already authenticated."); break; } default: { - _log(UCS__ERROR, "Unknown ServerOPcode from UCS 0x%04x, size %d", pack->opcode, pack->size); + Log.Out(Logs::Detail, Logs::UCS_Server, "Unknown ServerOPcode from UCS 0x%04x, size %d", pack->opcode, pack->size); DumpPacket(pack->pBuffer, pack->size); break; } diff --git a/world/wguild_mgr.cpp b/world/wguild_mgr.cpp index 0f3e07636..b2750ded2 100644 --- a/world/wguild_mgr.cpp +++ b/world/wguild_mgr.cpp @@ -15,7 +15,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" + +#include "../common/eqemu_logsys.h" +#include "../common/global_define.h" #include "wguild_mgr.h" #include "../common/servertalk.h" #include "clientlist.h" @@ -32,7 +34,7 @@ WorldGuildManager guild_mgr; void WorldGuildManager::SendGuildRefresh(uint32 guild_id, bool name, bool motd, bool rank, bool relation) { - _log(GUILDS__REFRESH, "Broadcasting guild refresh for %d, changes: name=%d, motd=%d, rank=d, relation=%d", guild_id, name, motd, rank, relation); + Log.Out(Logs::Detail, Logs::Guilds, "Broadcasting guild refresh for %d, changes: name=%d, motd=%d, rank=d, relation=%d", guild_id, name, motd, rank, relation); auto pack = new ServerPacket(ServerOP_RefreshGuild, sizeof(ServerGuildRefresh_Struct)); ServerGuildRefresh_Struct *s = (ServerGuildRefresh_Struct *) pack->pBuffer; s->guild_id = guild_id; @@ -45,7 +47,7 @@ void WorldGuildManager::SendGuildRefresh(uint32 guild_id, bool name, bool motd, } void WorldGuildManager::SendCharRefresh(uint32 old_guild_id, uint32 guild_id, uint32 charid) { - _log(GUILDS__REFRESH, "Broadcasting char refresh for %d from guild %d to world", charid, guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Broadcasting char refresh for %d from guild %d to world", charid, guild_id); auto pack = new ServerPacket(ServerOP_GuildCharRefresh, sizeof(ServerGuildCharRefresh_Struct)); ServerGuildCharRefresh_Struct *s = (ServerGuildCharRefresh_Struct *) pack->pBuffer; s->guild_id = guild_id; @@ -56,7 +58,7 @@ void WorldGuildManager::SendCharRefresh(uint32 old_guild_id, uint32 guild_id, ui } void WorldGuildManager::SendGuildDelete(uint32 guild_id) { - _log(GUILDS__REFRESH, "Broadcasting guild delete for guild %d to world", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Broadcasting guild delete for guild %d to world", guild_id); auto pack = new ServerPacket(ServerOP_DeleteGuild, sizeof(ServerGuildID_Struct)); ServerGuildID_Struct *s = (ServerGuildID_Struct *) pack->pBuffer; s->guild_id = guild_id; @@ -69,18 +71,18 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { case ServerOP_RefreshGuild: { if(pack->size != sizeof(ServerGuildRefresh_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildRefresh_Struct)); + Log.Out(Logs::Detail, Logs::Guilds, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildRefresh_Struct)); return; } ServerGuildRefresh_Struct *s = (ServerGuildRefresh_Struct *) pack->pBuffer; - _log(GUILDS__REFRESH, "Received and broadcasting guild refresh for %d, changes: name=%d, motd=%d, rank=d, relation=%d", s->guild_id, s->name_change, s->motd_change, s->rank_change, s->relation_change); + Log.Out(Logs::Detail, Logs::Guilds, "Received and broadcasting guild refresh for %d, changes: name=%d, motd=%d, rank=d, relation=%d", s->guild_id, s->name_change, s->motd_change, s->rank_change, s->relation_change); //broadcast this packet to all zones. zoneserver_list.SendPacket(pack); //preform a local refresh. if(!RefreshGuild(s->guild_id)) { - _log(GUILDS__ERROR, "Unable to preform local refresh on guild %d", s->guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Unable to preform local refresh on guild %d", s->guild_id); //can we do anything? } @@ -89,11 +91,11 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { case ServerOP_GuildCharRefresh: { if(pack->size != sizeof(ServerGuildCharRefresh_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildCharRefresh_Struct)); + Log.Out(Logs::Detail, Logs::Guilds, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildCharRefresh_Struct)); return; } ServerGuildCharRefresh_Struct *s = (ServerGuildCharRefresh_Struct *) pack->pBuffer; - _log(GUILDS__REFRESH, "Received and broadcasting guild member refresh for char %d to all zones with members of guild %d", s->char_id, s->guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Received and broadcasting guild member refresh for char %d to all zones with members of guild %d", s->char_id, s->guild_id); //preform the local update client_list.UpdateClientGuild(s->char_id, s->guild_id); @@ -108,18 +110,18 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { case ServerOP_DeleteGuild: { if(pack->size != sizeof(ServerGuildID_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_DeleteGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildID_Struct)); + Log.Out(Logs::Detail, Logs::Guilds, "Received ServerOP_DeleteGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildID_Struct)); return; } ServerGuildID_Struct *s = (ServerGuildID_Struct *) pack->pBuffer; - _log(GUILDS__REFRESH, "Received and broadcasting guild delete for guild %d", s->guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Received and broadcasting guild delete for guild %d", s->guild_id); //broadcast this packet to all zones. zoneserver_list.SendPacket(pack); //preform a local refresh. if(!LocalDeleteGuild(s->guild_id)) { - _log(GUILDS__ERROR, "Unable to preform local delete on guild %d", s->guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Unable to preform local delete on guild %d", s->guild_id); //can we do anything? } @@ -129,7 +131,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { case ServerOP_GuildMemberUpdate: { if(pack->size != sizeof(ServerGuildMemberUpdate_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_GuildMemberUpdate of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildMemberUpdate_Struct)); + Log.Out(Logs::Detail, Logs::Guilds, "Received ServerOP_GuildMemberUpdate of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildMemberUpdate_Struct)); return; } @@ -139,7 +141,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) { } default: - _log(GUILDS__ERROR, "Unknown packet 0x%x received from zone??", pack->opcode); + Log.Out(Logs::Detail, Logs::Guilds, "Unknown packet 0x%x received from zone??", pack->opcode); break; } } diff --git a/world/world_config.cpp b/world/world_config.cpp index 2f9464e13..f57368a10 100644 --- a/world/world_config.cpp +++ b/world/world_config.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "world_config.h" WorldConfig *WorldConfig::_world_config = nullptr; diff --git a/world/world_logsys.cpp b/world/world_logsys.cpp deleted file mode 100644 index 3cfada073..000000000 --- a/world/world_logsys.cpp +++ /dev/null @@ -1,59 +0,0 @@ - -#include "../common/debug.h" -#include "../common/logsys.h" -#include "../common/string_util.h" - -#include "zoneserver.h" -#include "client.h" - -#include -#include - - -void log_message_clientVA(LogType type, Client *who, const char *fmt, va_list args) { - - std::string prefix_buffer = StringFormat("[%s] %s: ", log_type_info[type].name, who->GetAccountName()); - - LogFile->writePVA(EQEmuLog::Debug, prefix_buffer.c_str(), fmt, args); -} - -void log_message_client(LogType type, Client *who, const char *fmt, ...) { - va_list args; - va_start(args, fmt); - log_message_clientVA(type, who, fmt, args); - va_end(args); -} - -void log_message_zoneVA(LogType type, ZoneServer *who, const char *fmt, va_list args) { - - std::string prefix_buffer, zone_tag; - const char *zone_name=who->GetZoneName(); - - if (zone_name == nullptr) - zone_tag = StringFormat("[%d]", who->GetID()); - else - zone_tag = StringFormat("[%d] [%s]",who->GetID(),zone_name); - - prefix_buffer = StringFormat("[%s] %s ", log_type_info[type].name, zone_tag.c_str()); - - LogFile->writePVA(EQEmuLog::Debug, prefix_buffer.c_str(), fmt, args); -} - -void log_message_zone(LogType type, ZoneServer *who, const char *fmt, ...) { - va_list args; - va_start(args, fmt); - log_message_zoneVA(type, who, fmt, args); - va_end(args); -} - - - - - - - - - - - - diff --git a/world/worlddb.cpp b/world/worlddb.cpp index 988b7b32c..c8b95d0a9 100644 --- a/world/worlddb.cpp +++ b/world/worlddb.cpp @@ -302,18 +302,17 @@ bool WorldDatabase::GetStartZone(PlayerProfile_Struct* in_pp, CharCreate_Struct* in_cc->start_zone, in_cc->class_, in_cc->deity, in_cc->race); auto results = QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Status, "SoF Start zone query failed: %s : %s\n", query.c_str(), results.ErrorMessage().c_str()); return false; } - LogFile->write(EQEmuLog::Status, "SoF Start zone query: %s\n", query.c_str()); + Log.Out(Logs::General, Logs::Status, "SoF Start zone query: %s\n", query.c_str()); if (results.RowCount() == 0) { printf("No start_zones entry in database, using defaults\n"); isTitanium ? SetTitaniumDefaultStartZone(in_pp, in_cc) : SetSoFDefaultStartZone(in_pp, in_cc); } else { - LogFile->write(EQEmuLog::Status, "Found starting location in start_zones"); + Log.Out(Logs::General, Logs::Status, "Found starting location in start_zones"); auto row = results.begin(); in_pp->x = atof(row[0]); in_pp->y = atof(row[1]); @@ -439,7 +438,7 @@ void WorldDatabase::GetLauncherList(std::vector &rl) { const std::string query = "SELECT name FROM launcher"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "WorldDatabase::GetLauncherList: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "WorldDatabase::GetLauncherList: %s", results.ErrorMessage().c_str()); return; } @@ -461,7 +460,7 @@ void WorldDatabase::SetMailKey(int CharID, int IPAddress, int MailKey) { MailKeyString, CharID); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "WorldDatabase::SetMailKey(%i, %s) : %s", CharID, MailKeyString, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "WorldDatabase::SetMailKey(%i, %s) : %s", CharID, MailKeyString, results.ErrorMessage().c_str()); } @@ -470,7 +469,7 @@ bool WorldDatabase::GetCharacterLevel(const char *name, int &level) std::string query = StringFormat("SELECT level FROM character_data WHERE name = '%s'", name); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "WorldDatabase::GetCharacterLevel: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "WorldDatabase::GetCharacterLevel: %s", results.ErrorMessage().c_str()); return false; } diff --git a/world/zonelist.cpp b/world/zonelist.cpp index cf27ed495..22d783f5d 100644 --- a/world/zonelist.cpp +++ b/world/zonelist.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "zonelist.h" #include "zoneserver.h" #include "world_tcp_connection.h" @@ -79,7 +79,7 @@ void ZSList::KillAll() { void ZSList::Process() { if(shutdowntimer && shutdowntimer->Check()){ - _log(WORLD__ZONELIST, "Shutdown timer has expired. Telling all zones to shut down and exiting. (fake sigint)"); + Log.Out(Logs::Detail, Logs::World_Server, "Shutdown timer has expired. Telling all zones to shut down and exiting. (fake sigint)"); auto pack2 = new ServerPacket; pack2->opcode = ServerOP_ShutdownAll; pack2->size=0; @@ -99,10 +99,10 @@ void ZSList::Process() { ZoneServer* zs = iterator.GetData(); struct in_addr in; in.s_addr = zs->GetIP(); - _log(WORLD__ZONELIST,"Removing zoneserver #%d at %s:%d",zs->GetID(),zs->GetCAddress(),zs->GetCPort()); + Log.Out(Logs::Detail, Logs::World_Server,"Removing zoneserver #%d at %s:%d",zs->GetID(),zs->GetCAddress(),zs->GetCPort()); zs->LSShutDownUpdate(zs->GetZoneID()); if (holdzones){ - _log(WORLD__ZONELIST,"Hold Zones mode is ON - rebooting lost zone"); + Log.Out(Logs::Detail, Logs::World_Server,"Hold Zones mode is ON - rebooting lost zone"); if(!zs->IsStaticZone()) RebootZone(inet_ntoa(in),zs->GetCPort(),zs->GetCAddress(),zs->GetID()); else @@ -576,7 +576,7 @@ void ZSList::RebootZone(const char* ip1,uint16 port,const char* ip2, uint32 skip s->port = port; s->zoneid = zoneid; if(zoneid != 0) - _log(WORLD__ZONELIST,"Rebooting static zone with the ID of: %i",zoneid); + Log.Out(Logs::Detail, Logs::World_Server,"Rebooting static zone with the ID of: %i",zoneid); tmp[z]->SendPacket(pack); delete pack; safe_delete_array(tmp); diff --git a/world/zoneserver.cpp b/world/zoneserver.cpp index 70c1cd1b1..65c80cac7 100644 --- a/world/zoneserver.cpp +++ b/world/zoneserver.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "zoneserver.h" #include "clientlist.h" #include "login_server.h" @@ -77,7 +77,7 @@ bool ZoneServer::SetZone(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { char* longname; if (iZoneID) - zlog(WORLD__ZONE,"Setting to '%s' (%d:%d)%s",(zn) ? zn : "",iZoneID, iInstanceID, + Log.Out(Logs::Detail, Logs::World_Server,"Setting to '%s' (%d:%d)%s",(zn) ? zn : "",iZoneID, iInstanceID, iStaticZone ? " (Static)" : ""); zoneID = iZoneID; @@ -177,7 +177,6 @@ bool ZoneServer::Process() { } ServerPacket *pack = 0; while((pack = tcpc->PopPacket())) { - _hex(WORLD__ZONE_TRACE,pack->pBuffer,pack->size); if (!authenticated) { if (WorldConfig::get()->SharedKey.length() > 0) { if (pack->opcode == ServerOP_ZAAuth && pack->size == 16) { @@ -188,7 +187,7 @@ bool ZoneServer::Process() { else { struct in_addr in; in.s_addr = GetIP(); - zlog(WORLD__ZONE_ERR,"Zone authorization failed."); + Log.Out(Logs::Detail, Logs::World_Server,"Zone authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -199,7 +198,7 @@ bool ZoneServer::Process() { else { struct in_addr in; in.s_addr = GetIP(); - zlog(WORLD__ZONE_ERR,"Zone authorization failed."); + Log.Out(Logs::Detail, Logs::World_Server,"Zone authorization failed."); auto pack = new ServerPacket(ServerOP_ZAAuthFailed); SendPacket(pack); delete pack; @@ -209,7 +208,7 @@ bool ZoneServer::Process() { } else { - _log(WORLD__ZONE,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); + Log.Out(Logs::Detail, Logs::World_Server,"**WARNING** You have not configured a world shared key in your config file. You should add a STRING element to your element to prevent unauthroized zone access."); authenticated = true; } } @@ -541,10 +540,10 @@ bool ZoneServer::Process() { RezzPlayer_Struct* sRezz = (RezzPlayer_Struct*) pack->pBuffer; if (zoneserver_list.SendPacket(pack)){ - zlog(WORLD__ZONE,"Sent Rez packet for %s",sRezz->rez.your_name); + Log.Out(Logs::Detail, Logs::World_Server,"Sent Rez packet for %s",sRezz->rez.your_name); } else { - zlog(WORLD__ZONE,"Could not send Rez packet for %s",sRezz->rez.your_name); + Log.Out(Logs::Detail, Logs::World_Server,"Could not send Rez packet for %s",sRezz->rez.your_name); } break; } @@ -589,10 +588,10 @@ bool ZoneServer::Process() { ServerConnectInfo* sci = (ServerConnectInfo*) p.pBuffer; sci->port = clientport; SendPacket(&p); - zlog(WORLD__ZONE,"Auto zone port configuration. Telling zone to use port %d",clientport); + Log.Out(Logs::Detail, Logs::World_Server,"Auto zone port configuration. Telling zone to use port %d",clientport); } else { clientport=sci->port; - zlog(WORLD__ZONE,"Zone specified port %d, must be a previously allocated zone reconnecting.",clientport); + Log.Out(Logs::Detail, Logs::World_Server,"Zone specified port %d, must be a previously allocated zone reconnecting.",clientport); } } @@ -602,7 +601,7 @@ bool ZoneServer::Process() { const LaunchName_Struct* ln = (const LaunchName_Struct*)pack->pBuffer; launcher_name = ln->launcher_name; launched_name = ln->zone_name; - zlog(WORLD__ZONE, "Zone started with name %s by launcher %s", launched_name.c_str(), launcher_name.c_str()); + Log.Out(Logs::Detail, Logs::World_Server, "Zone started with name %s by launcher %s", launched_name.c_str(), launcher_name.c_str()); break; } case ServerOP_ShutdownAll: { @@ -685,12 +684,12 @@ bool ZoneServer::Process() { if(WorldConfig::get()->UpdateStats) client = client_list.FindCharacter(ztz->name); - zlog(WORLD__ZONE,"ZoneToZone request for %s current zone %d req zone %d\n", + Log.Out(Logs::Detail, Logs::World_Server,"ZoneToZone request for %s current zone %d req zone %d\n", ztz->name, ztz->current_zone_id, ztz->requested_zone_id); /* This is a request from the egress zone */ if(GetZoneID() == ztz->current_zone_id && GetInstanceID() == ztz->current_instance_id) { - zlog(WORLD__ZONE,"Processing ZTZ for egress from zone for client %s\n", ztz->name); + Log.Out(Logs::Detail, Logs::World_Server,"Processing ZTZ for egress from zone for client %s\n", ztz->name); if (ztz->admin < 80 && ztz->ignorerestrictions < 2 && zoneserver_list.IsZoneLocked(ztz->requested_zone_id)) { ztz->response = 0; @@ -708,20 +707,20 @@ bool ZoneServer::Process() { /* Zone was already running*/ if(ingress_server) { - _log(WORLD__ZONE,"Found a zone already booted for %s\n", ztz->name); + Log.Out(Logs::Detail, Logs::World_Server,"Found a zone already booted for %s\n", ztz->name); ztz->response = 1; } /* Boot the Zone*/ else { int server_id; if ((server_id = zoneserver_list.TriggerBootup(ztz->requested_zone_id, ztz->requested_instance_id))){ - _log(WORLD__ZONE,"Successfully booted a zone for %s\n", ztz->name); + Log.Out(Logs::Detail, Logs::World_Server,"Successfully booted a zone for %s\n", ztz->name); // bootup successful, ready to rock ztz->response = 1; ingress_server = zoneserver_list.FindByID(server_id); } else { - _log(WORLD__ZONE_ERR,"FAILED to boot a zone for %s\n", ztz->name); + Log.Out(Logs::Detail, Logs::World_Server,"FAILED to boot a zone for %s\n", ztz->name); // bootup failed, send back error code 0 ztz->response = 0; } @@ -736,7 +735,7 @@ bool ZoneServer::Process() { /* Response from Ingress server, route back to egress */ else{ - zlog(WORLD__ZONE,"Processing ZTZ for ingress to zone for client %s\n", ztz->name); + Log.Out(Logs::Detail, Logs::World_Server,"Processing ZTZ for ingress to zone for client %s\n", ztz->name); ZoneServer *egress_server = nullptr; if(ztz->current_instance_id > 0) { egress_server = zoneserver_list.FindByInstanceID(ztz->current_instance_id); @@ -754,7 +753,7 @@ bool ZoneServer::Process() { } case ServerOP_ClientList: { if (pack->size != sizeof(ServerClientList_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_ClientList. Got: %d, Expected: %d",pack->size,sizeof(ServerClientList_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_ClientList. Got: %d, Expected: %d",pack->size,sizeof(ServerClientList_Struct)); break; } client_list.ClientUpdate(this, (ServerClientList_Struct*) pack->pBuffer); @@ -763,7 +762,7 @@ bool ZoneServer::Process() { case ServerOP_ClientListKA: { ServerClientListKeepAlive_Struct* sclka = (ServerClientListKeepAlive_Struct*) pack->pBuffer; if (pack->size < 4 || pack->size != 4 + (4 * sclka->numupdates)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_ClientListKA. Got: %d, Expected: %d",pack->size, (4 + (4 * sclka->numupdates))); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_ClientListKA. Got: %d, Expected: %d",pack->size, (4 + (4 * sclka->numupdates))); break; } client_list.CLEKeepAlive(sclka->numupdates, sclka->wid); @@ -785,7 +784,6 @@ bool ZoneServer::Process() { } case ServerOP_RequestOnlineGuildMembers: { ServerRequestOnlineGuildMembers_Struct *srogms = (ServerRequestOnlineGuildMembers_Struct*) pack->pBuffer; - zlog(GUILDS__IN_PACKETS, "ServerOP_RequestOnlineGuildMembers Recieved. FromID=%i GuildID=%i", srogms->FromID, srogms->GuildID); client_list.SendOnlineGuildMembers(srogms->FromID, srogms->GuildID); break; } @@ -794,6 +792,11 @@ bool ZoneServer::Process() { client_list.SendClientVersionSummary(srcvss->Name); break; } + case ServerOP_ReloadLogs: { + zoneserver_list.SendPacket(pack); + database.LoadLogSettings(Log.log_settings); + break; + } case ServerOP_ReloadRules: { zoneserver_list.SendPacket(pack); RuleManager::Instance()->LoadRules(&database, "default"); @@ -869,7 +872,7 @@ bool ZoneServer::Process() { } case ServerOP_GMGoto: { if (pack->size != sizeof(ServerGMGoto_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_GMGoto. Got: %d, Expected: %d",pack->size,sizeof(ServerGMGoto_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_GMGoto. Got: %d, Expected: %d",pack->size,sizeof(ServerGMGoto_Struct)); break; } ServerGMGoto_Struct* gmg = (ServerGMGoto_Struct*) pack->pBuffer; @@ -889,7 +892,7 @@ bool ZoneServer::Process() { } case ServerOP_Lock: { if (pack->size != sizeof(ServerLock_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_Lock. Got: %d, Expected: %d",pack->size,sizeof(ServerLock_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_Lock. Got: %d, Expected: %d",pack->size,sizeof(ServerLock_Struct)); break; } ServerLock_Struct* slock = (ServerLock_Struct*) pack->pBuffer; @@ -914,7 +917,7 @@ bool ZoneServer::Process() { } case ServerOP_Motd: { if (pack->size != sizeof(ServerMotd_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_Motd. Got: %d, Expected: %d",pack->size,sizeof(ServerMotd_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_Motd. Got: %d, Expected: %d",pack->size,sizeof(ServerMotd_Struct)); break; } ServerMotd_Struct* smotd = (ServerMotd_Struct*) pack->pBuffer; @@ -925,7 +928,7 @@ bool ZoneServer::Process() { } case ServerOP_Uptime: { if (pack->size != sizeof(ServerUptime_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_Uptime. Got: %d, Expected: %d",pack->size,sizeof(ServerUptime_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_Uptime. Got: %d, Expected: %d",pack->size,sizeof(ServerUptime_Struct)); break; } ServerUptime_Struct* sus = (ServerUptime_Struct*) pack->pBuffer; @@ -944,7 +947,7 @@ bool ZoneServer::Process() { break; } case ServerOP_GetWorldTime: { - zlog(WORLD__ZONE,"Broadcasting a world time update"); + Log.Out(Logs::Detail, Logs::World_Server,"Broadcasting a world time update"); auto pack = new ServerPacket; pack->opcode = ServerOP_SyncWorldTime; @@ -959,17 +962,17 @@ bool ZoneServer::Process() { break; } case ServerOP_SetWorldTime: { - zlog(WORLD__ZONE,"Received SetWorldTime"); + Log.Out(Logs::Detail, Logs::World_Server,"Received SetWorldTime"); eqTimeOfDay* newtime = (eqTimeOfDay*) pack->pBuffer; zoneserver_list.worldclock.setEQTimeOfDay(newtime->start_eqtime, newtime->start_realtime); - zlog(WORLD__ZONE,"New time = %d-%d-%d %d:%d (%d)\n", newtime->start_eqtime.year, newtime->start_eqtime.month, (int)newtime->start_eqtime.day, (int)newtime->start_eqtime.hour, (int)newtime->start_eqtime.minute, (int)newtime->start_realtime); + Log.Out(Logs::Detail, Logs::World_Server,"New time = %d-%d-%d %d:%d (%d)\n", newtime->start_eqtime.year, newtime->start_eqtime.month, (int)newtime->start_eqtime.day, (int)newtime->start_eqtime.hour, (int)newtime->start_eqtime.minute, (int)newtime->start_realtime); zoneserver_list.worldclock.saveFile(WorldConfig::get()->EQTimeFile.c_str()); zoneserver_list.SendTimeSync(); break; } case ServerOP_IPLookup: { if (pack->size < sizeof(ServerGenericWorldQuery_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_IPLookup. Got: %d, Expected (at least): %d",pack->size,sizeof(ServerGenericWorldQuery_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_IPLookup. Got: %d, Expected (at least): %d",pack->size,sizeof(ServerGenericWorldQuery_Struct)); break; } ServerGenericWorldQuery_Struct* sgwq = (ServerGenericWorldQuery_Struct*) pack->pBuffer; @@ -981,7 +984,7 @@ bool ZoneServer::Process() { } case ServerOP_LockZone: { if (pack->size < sizeof(ServerLockZone_Struct)) { - zlog(WORLD__ZONE_ERR,"Wrong size on ServerOP_LockZone. Got: %d, Expected: %d",pack->size,sizeof(ServerLockZone_Struct)); + Log.Out(Logs::Detail, Logs::World_Server,"Wrong size on ServerOP_LockZone. Got: %d, Expected: %d",pack->size,sizeof(ServerLockZone_Struct)); break; } ServerLockZone_Struct* s = (ServerLockZone_Struct*) pack->pBuffer; @@ -1026,10 +1029,10 @@ bool ZoneServer::Process() { ZoneServer* zs = zoneserver_list.FindByZoneID(s->zone_id); if(zs) { if (zs->SendPacket(pack)) { - zlog(WORLD__ZONE,"Sent request to spawn player corpse id %i in zone %u.",s->player_corpse_id, s->zone_id); + Log.Out(Logs::Detail, Logs::World_Server,"Sent request to spawn player corpse id %i in zone %u.",s->player_corpse_id, s->zone_id); } else { - zlog(WORLD__ZONE_ERR,"Could not send request to spawn player corpse id %i in zone %u.",s->player_corpse_id, s->zone_id); + Log.Out(Logs::Detail, Logs::World_Server,"Could not send request to spawn player corpse id %i in zone %u.",s->player_corpse_id, s->zone_id); } } break; @@ -1048,10 +1051,10 @@ bool ZoneServer::Process() { zs = zoneserver_list.FindByInstanceID(cle->instance()); if(zs) { if(zs->SendPacket(pack)) { - zlog(WORLD__ZONE, "Sent consent packet from player %s to player %s in zone %u.", s->ownername, s->grantname, cle->instance()); + Log.Out(Logs::Detail, Logs::World_Server, "Sent consent packet from player %s to player %s in zone %u.", s->ownername, s->grantname, cle->instance()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for instance id %u in zoneserver list for ServerOP_Consent operation.", s->instance_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for instance id %u in zoneserver list for ServerOP_Consent operation.", s->instance_id); } } else @@ -1068,10 +1071,10 @@ bool ZoneServer::Process() { zs = zoneserver_list.FindByInstanceID(s->instance_id); if(zs) { if(!zs->SendPacket(pack)) - zlog(WORLD__ZONE_ERR, "Unable to send consent response back to player %s in instance %u.", s->ownername, zs->GetInstanceID()); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to send consent response back to player %s in instance %u.", s->ownername, zs->GetInstanceID()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for instance id %u in zoneserver list for ServerOP_Consent_Response operation.", s->instance_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for instance id %u in zoneserver list for ServerOP_Consent_Response operation.", s->instance_id); } } } @@ -1080,10 +1083,10 @@ bool ZoneServer::Process() { zs = zoneserver_list.FindByZoneID(cle->zone()); if(zs) { if(zs->SendPacket(pack)) { - zlog(WORLD__ZONE, "Sent consent packet from player %s to player %s in zone %u.", s->ownername, s->grantname, cle->zone()); + Log.Out(Logs::Detail, Logs::World_Server, "Sent consent packet from player %s to player %s in zone %u.", s->ownername, s->grantname, cle->zone()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent operation.", s->zone_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent operation.", s->zone_id); } } else { @@ -1099,10 +1102,10 @@ bool ZoneServer::Process() { zs = zoneserver_list.FindByZoneID(s->zone_id); if(zs) { if(!zs->SendPacket(pack)) - zlog(WORLD__ZONE_ERR, "Unable to send consent response back to player %s in zone %s.", s->ownername, zs->GetZoneName()); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to send consent response back to player %s in zone %s.", s->ownername, zs->GetZoneName()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent_Response operation.", s->zone_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent_Response operation.", s->zone_id); } } } @@ -1120,10 +1123,10 @@ bool ZoneServer::Process() { zs = zoneserver_list.FindByZoneID(s->zone_id); if(zs) { if(!zs->SendPacket(pack)) - zlog(WORLD__ZONE_ERR, "Unable to send consent response back to player %s in zone %s.", s->ownername, zs->GetZoneName()); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to send consent response back to player %s in zone %s.", s->ownername, zs->GetZoneName()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent_Response operation.", s->zone_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent_Response operation.", s->zone_id); } } break; @@ -1139,10 +1142,10 @@ bool ZoneServer::Process() { ZoneServer* zs = zoneserver_list.FindByInstanceID(s->instance_id); if(zs) { if(!zs->SendPacket(pack)) - zlog(WORLD__ZONE_ERR, "Unable to send consent response back to player %s in instance %u.", s->ownername, zs->GetInstanceID()); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to send consent response back to player %s in instance %u.", s->ownername, zs->GetInstanceID()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for instance id %u in zoneserver list for ServerOP_Consent_Response operation.", s->instance_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for instance id %u in zoneserver list for ServerOP_Consent_Response operation.", s->instance_id); } } else @@ -1150,10 +1153,10 @@ bool ZoneServer::Process() { ZoneServer* zs = zoneserver_list.FindByZoneID(s->zone_id); if(zs) { if(!zs->SendPacket(pack)) - zlog(WORLD__ZONE_ERR, "Unable to send consent response back to player %s in zone %s.", s->ownername, zs->GetZoneName()); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to send consent response back to player %s in zone %s.", s->ownername, zs->GetZoneName()); } else { - zlog(WORLD__ZONE_ERR, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent_Response operation.", s->zone_id); + Log.Out(Logs::Detail, Logs::World_Server, "Unable to locate zone record for zone id %u in zoneserver list for ServerOP_Consent_Response operation.", s->zone_id); } } break; @@ -1255,7 +1258,7 @@ bool ZoneServer::Process() { case ServerOP_LSAccountUpdate: { - zlog(WORLD__ZONE, "Received ServerOP_LSAccountUpdate packet from zone"); + Log.Out(Logs::Detail, Logs::World_Server, "Received ServerOP_LSAccountUpdate packet from zone"); loginserverlist.SendAccountUpdate(pack); break; } @@ -1310,7 +1313,7 @@ bool ZoneServer::Process() { } default: { - zlog(WORLD__ZONE_ERR,"Unknown ServerOPcode from zone 0x%04x, size %d",pack->opcode,pack->size); + Log.Out(Logs::Detail, Logs::World_Server,"Unknown ServerOPcode from zone 0x%04x, size %d",pack->opcode,pack->size); DumpPacket(pack->pBuffer, pack->size); break; } diff --git a/zone/CMakeLists.txt b/zone/CMakeLists.txt index 8df5f77cc..44a6d02c8 100644 --- a/zone/CMakeLists.txt +++ b/zone/CMakeLists.txt @@ -9,7 +9,6 @@ SET(zone_sources bot.cpp botspellsai.cpp client.cpp - client_logs.cpp client_mods.cpp client_packet.cpp client_process.cpp @@ -118,7 +117,6 @@ SET(zone_sources waypoints.cpp worldserver.cpp zone.cpp - zone_logsys.cpp zone_config.cpp zonedb.cpp zoning.cpp @@ -131,7 +129,6 @@ SET(zone_headers bot.h bot_structs.h client.h - client_logs.h client_packet.h command.h common.h diff --git a/zone/aa.cpp b/zone/aa.cpp index af25985cc..f2e0e97c4 100644 --- a/zone/aa.cpp +++ b/zone/aa.cpp @@ -17,7 +17,8 @@ Copyright (C) 2001-2004 EQEMu Development Team (http://eqemulator.net) */ #include "../common/classes.h" -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/eq_packet_structs.h" #include "../common/races.h" #include "../common/spdat.h" @@ -444,7 +445,7 @@ void Client::HandleAAAction(aaID activate) { break; default: - LogFile->write(EQEmuLog::Error, "Unknown AA nonspell action type %d", caa->action); + Log.Out(Logs::General, Logs::Error, "Unknown AA nonspell action type %d", caa->action); return; } @@ -500,7 +501,7 @@ void Mob::TemporaryPets(uint16 spell_id, Mob *targ, const char *name_override, u PetRecord record; if(!database.GetPetEntry(spells[spell_id].teleport_zone, &record)) { - LogFile->write(EQEmuLog::Error, "Unknown swarm pet spell id: %d, check pets table", spell_id); + Log.Out(Logs::General, Logs::Error, "Unknown swarm pet spell id: %d, check pets table", spell_id); Message(13, "Unable to find data for pet %s", spells[spell_id].teleport_zone); return; } @@ -527,7 +528,7 @@ void Mob::TemporaryPets(uint16 spell_id, Mob *targ, const char *name_override, u const NPCType *npc_type = database.GetNPCType(pet.npc_id); if(npc_type == nullptr) { //log write - LogFile->write(EQEmuLog::Error, "Unknown npc type for swarm pet spell id: %d", spell_id); + Log.Out(Logs::General, Logs::Error, "Unknown npc type for swarm pet spell id: %d", spell_id); Message(0,"Unable to find pet!"); return; } @@ -624,7 +625,7 @@ void Mob::TypesTemporaryPets(uint32 typesid, Mob *targ, const char *name_overrid const NPCType *npc_type = database.GetNPCType(typesid); if(npc_type == nullptr) { //log write - LogFile->write(EQEmuLog::Error, "Unknown npc type for swarm pet type id: %d", typesid); + Log.Out(Logs::General, Logs::Error, "Unknown npc type for swarm pet type id: %d", typesid); Message(0,"Unable to find pet!"); return; } @@ -949,7 +950,7 @@ void Client::SendAAStats() { void Client::BuyAA(AA_Action* action) { - mlog(AA__MESSAGE, "Starting to buy AA %d", action->ability); + Log.Out(Logs::Detail, Logs::AA, "Starting to buy AA %d", action->ability); //find the AA information from the database SendAA_Struct* aa2 = zone->FindAA(action->ability); @@ -961,7 +962,7 @@ void Client::BuyAA(AA_Action* action) a = action->ability - i; if(a <= 0) break; - mlog(AA__MESSAGE, "Could not find AA %d, trying potential parent %d", action->ability, a); + Log.Out(Logs::Detail, Logs::AA, "Could not find AA %d, trying potential parent %d", action->ability, a); aa2 = zone->FindAA(a); if(aa2 != nullptr) break; @@ -978,7 +979,7 @@ void Client::BuyAA(AA_Action* action) uint32 cur_level = GetAA(aa2->id); if((aa2->id + cur_level) != action->ability) { //got invalid AA - mlog(AA__ERROR, "Unable to find or match AA %d (found %d + lvl %d)", action->ability, aa2->id, cur_level); + Log.Out(Logs::Detail, Logs::AA, "Unable to find or match AA %d (found %d + lvl %d)", action->ability, aa2->id, cur_level); return; } @@ -1009,7 +1010,7 @@ void Client::BuyAA(AA_Action* action) if (m_pp.aapoints >= real_cost && cur_level < aa2->max_level) { SetAA(aa2->id, cur_level + 1); - mlog(AA__MESSAGE, "Set AA %d to level %d", aa2->id, cur_level + 1); + Log.Out(Logs::Detail, Logs::AA, "Set AA %d to level %d", aa2->id, cur_level + 1); m_pp.aapoints -= real_cost; @@ -1427,10 +1428,10 @@ SendAA_Struct* Zone::FindAA(uint32 id) { } void Zone::LoadAAs() { - LogFile->write(EQEmuLog::Status, "Loading AA information..."); + Log.Out(Logs::General, Logs::Status, "Loading AA information..."); totalAAs = database.CountAAs(); if(totalAAs == 0) { - LogFile->write(EQEmuLog::Error, "Failed to load AAs!"); + Log.Out(Logs::General, Logs::Error, "Failed to load AAs!"); aas = nullptr; return; } @@ -1445,11 +1446,11 @@ void Zone::LoadAAs() { } //load AA Effects into aa_effects - LogFile->write(EQEmuLog::Status, "Loading AA Effects..."); + Log.Out(Logs::General, Logs::Status, "Loading AA Effects..."); if (database.LoadAAEffects2()) - LogFile->write(EQEmuLog::Status, "Loaded %d AA Effects.", aa_effects.size()); + Log.Out(Logs::General, Logs::Status, "Loaded %d AA Effects.", aa_effects.size()); else - LogFile->write(EQEmuLog::Error, "Failed to load AA Effects!"); + Log.Out(Logs::General, Logs::Error, "Failed to load AA Effects!"); } bool ZoneDatabase::LoadAAEffects2() { @@ -1458,12 +1459,11 @@ bool ZoneDatabase::LoadAAEffects2() { const std::string query = "SELECT aaid, slot, effectid, base1, base2 FROM aa_effects ORDER BY aaid ASC, slot ASC"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::LoadAAEffects2 query: '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } if (!results.RowCount()) { //no results - LogFile->write(EQEmuLog::Error, "Error loading AA Effects, none found in the database."); + Log.Out(Logs::General, Logs::Error, "Error loading AA Effects, none found in the database."); return false; } @@ -1800,7 +1800,6 @@ bool ZoneDatabase::LoadAAEffects() { "redux_aa, redux_rate, redux_aa2, redux_rate2 FROM aa_actions"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadAAEffects query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1839,7 +1838,6 @@ uint8 ZoneDatabase::GetTotalAALevels(uint32 skill_id) { std::string query = StringFormat("SELECT count(slot) FROM aa_effects WHERE aaid = %i", skill_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetTotalAALevels '%s: %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1893,7 +1891,6 @@ uint32 ZoneDatabase::CountAAs(){ const std::string query = "SELECT count(title_sid) FROM altadv_vars"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::CountAAs query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1910,7 +1907,6 @@ uint32 ZoneDatabase::CountAAEffects() { const std::string query = "SELECT count(id) FROM aa_effects"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::CountAALevels query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1943,14 +1939,12 @@ void ZoneDatabase::LoadAAs(SendAA_Struct **load){ load[index]->seq = index+1; } } else { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::LoadAAs query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); } AARequiredLevelAndCost.clear(); query = "SELECT skill_id, level, cost from aa_required_level_cost order by skill_id"; results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::LoadAAs query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1968,7 +1962,6 @@ SendAA_Struct* ZoneDatabase::GetAASkillVars(uint32 skill_id) std::string query = "SET @row = 0"; //initialize "row" variable in database for next query auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetAASkillVars '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return nullptr; } @@ -1988,7 +1981,6 @@ SendAA_Struct* ZoneDatabase::GetAASkillVars(uint32 skill_id) "FROM altadv_vars a WHERE skill_id=%i", skill_id); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetAASkillVars '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return nullptr; } diff --git a/zone/aggro.cpp b/zone/aggro.cpp index 7e8080cc7..9eed2e80d 100644 --- a/zone/aggro.cpp +++ b/zone/aggro.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/faction.h" #include "../common/rulesys.h" #include "../common/spdat.h" @@ -342,22 +343,18 @@ bool Mob::CheckWillAggro(Mob *mob) { { //FatherNiwtit: make sure we can see them. last since it is very expensive if(CheckLosFN(mob)) { - - // Aggro - #if EQDEBUG>=6 - LogFile->write(EQEmuLog::Debug, "Check aggro for %s target %s.", GetName(), mob->GetName()); - #endif + Log.Out(Logs::Detail, Logs::Aggro, "Check aggro for %s target %s.", GetName(), mob->GetName()); return( mod_will_aggro(mob, this) ); } } -#if EQDEBUG >= 6 - printf("Is In zone?:%d\n", mob->InZone()); - printf("Dist^2: %f\n", dist2); - printf("Range^2: %f\n", iAggroRange2); - printf("Faction: %d\n", fv); - printf("Int: %d\n", GetINT()); - printf("Con: %d\n", GetLevelCon(mob->GetLevel())); -#endif + + Log.Out(Logs::Detail, Logs::Aggro, "Is In zone?:%d\n", mob->InZone()); + Log.Out(Logs::Detail, Logs::Aggro, "Dist^2: %f\n", dist2); + Log.Out(Logs::Detail, Logs::Aggro, "Range^2: %f\n", iAggroRange2); + Log.Out(Logs::Detail, Logs::Aggro, "Faction: %d\n", fv); + Log.Out(Logs::Detail, Logs::Aggro, "Int: %d\n", GetINT()); + Log.Out(Logs::Detail, Logs::Aggro, "Con: %d\n", GetLevelCon(mob->GetLevel())); + return(false); } @@ -470,7 +467,7 @@ void EntityList::AIYellForHelp(Mob* sender, Mob* attacker) { //Father Nitwit: make sure we can see them. if(mob->CheckLosFN(sender)) { #if (EQDEBUG>=5) - LogFile->write(EQEmuLog::Debug, "AIYellForHelp(\"%s\",\"%s\") %s attacking %s Dist %f Z %f", + Log.Out(Logs::General, Logs::None, "AIYellForHelp(\"%s\",\"%s\") %s attacking %s Dist %f Z %f", sender->GetName(), attacker->GetName(), mob->GetName(), attacker->GetName(), ComparativeDistance(mob->GetPosition(), sender->GetPosition()), fabs(sender->GetZ()+mob->GetZ())); #endif mob->AddToHateList(attacker, 1, 0, false); @@ -697,7 +694,7 @@ type', in which case, the answer is yes. } while( reverse++ == 0 ); - LogFile->write(EQEmuLog::Debug, "Mob::IsAttackAllowed: don't have a rule for this - %s vs %s\n", this->GetName(), target->GetName()); + Log.Out(Logs::General, Logs::None, "Mob::IsAttackAllowed: don't have a rule for this - %s vs %s\n", this->GetName(), target->GetName()); return false; } @@ -837,7 +834,7 @@ bool Mob::IsBeneficialAllowed(Mob *target) } while( reverse++ == 0 ); - LogFile->write(EQEmuLog::Debug, "Mob::IsBeneficialAllowed: don't have a rule for this - %s to %s\n", this->GetName(), target->GetName()); + Log.Out(Logs::General, Logs::None, "Mob::IsBeneficialAllowed: don't have a rule for this - %s to %s\n", this->GetName(), target->GetName()); return false; } @@ -949,7 +946,7 @@ bool Mob::CheckLosFN(float posX, float posY, float posZ, float mobSize) { oloc.z = posZ + (mobSize==0.0?LOS_DEFAULT_HEIGHT:mobSize)/2 * SEE_POSITION; #if LOSDEBUG>=5 - LogFile->write(EQEmuLog::Debug, "LOS from (%.2f, %.2f, %.2f) to (%.2f, %.2f, %.2f) sizes: (%.2f, %.2f)", myloc.x, myloc.y, myloc.z, oloc.x, oloc.y, oloc.z, GetSize(), mobSize); + Log.Out(Logs::General, Logs::None, "LOS from (%.2f, %.2f, %.2f) to (%.2f, %.2f, %.2f) sizes: (%.2f, %.2f)", myloc.x, myloc.y, myloc.z, oloc.x, oloc.y, oloc.z, GetSize(), mobSize); #endif return zone->zonemap->CheckLoS(myloc, oloc); } diff --git a/zone/attack.cpp b/zone/attack.cpp index 8d36c16ed..f3c8f0c65 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -16,11 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#if EQDEBUG >= 5 -//#define ATTACK_DEBUG 20 -#endif - -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/eq_constants.h" #include "../common/eq_packet_structs.h" #include "../common/rulesys.h" @@ -60,9 +56,9 @@ bool Mob::AttackAnimation(SkillUseTypes &skillinuse, int Hand, const ItemInst* w int type = 0; if (weapon && weapon->IsType(ItemClassCommon)) { const Item_Struct* item = weapon->GetItem(); -#if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug, "Weapon skill:%i", item->ItemType); -#endif + + Log.Out(Logs::Detail, Logs::Attack, "Weapon skill : %i", item->ItemType); + switch (item->ItemType) { case ItemType1HSlash: // 1H Slashing @@ -191,10 +187,7 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c if(attacker->IsNPC() && !attacker->IsPet()) chancetohit += RuleR(Combat, NPCBonusHitChance); -#if ATTACK_DEBUG>=11 - LogFile->write(EQEmuLog::Debug, "CheckHitChance(%s) attacked by %s", defender->GetName(), attacker->GetName()); -#endif - mlog(COMBAT__TOHIT,"CheckHitChance(%s) attacked by %s", defender->GetName(), attacker->GetName()); + Log.Out(Logs::Detail, Logs::Attack, "CheckHitChance(%s) attacked by %s", defender->GetName(), attacker->GetName()); bool pvpmode = false; if(IsClient() && other->IsClient()) @@ -215,7 +208,7 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c //Calculate the level difference - mlog(COMBAT__TOHIT, "Chance to hit before level diff calc %.2f", chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Chance to hit before level diff calc %.2f", chancetohit); double level_difference = attacker_level - defender_level; double range = defender->GetLevel(); @@ -243,32 +236,32 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c chancetohit += (RuleR(Combat,HitBonusPerLevel) * level_difference); } - mlog(COMBAT__TOHIT, "Chance to hit after level diff calc %.2f", chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Chance to hit after level diff calc %.2f", chancetohit); chancetohit -= ((float)defender->GetAGI() * RuleR(Combat, AgiHitFactor)); - mlog(COMBAT__TOHIT, "Chance to hit after agil calc %.2f", chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Chance to hit after Agility calc %.2f", chancetohit); if(attacker->IsClient()) { chancetohit -= (RuleR(Combat,WeaponSkillFalloff) * (attacker->CastToClient()->MaxSkill(skillinuse) - attacker->GetSkill(skillinuse))); - mlog(COMBAT__TOHIT, "Chance to hit after weapon falloff calc (attack) %.2f", chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Chance to hit after agil calc %.2f", "Chance to hit after weapon falloff calc (attack) %.2f", chancetohit); } if(defender->IsClient()) { chancetohit += (RuleR(Combat,WeaponSkillFalloff) * (defender->CastToClient()->MaxSkill(SkillDefense) - defender->GetSkill(SkillDefense))); - mlog(COMBAT__TOHIT, "Chance to hit after weapon falloff calc (defense) %.2f", chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Chance to hit after weapon falloff calc (defense) %.2f", chancetohit); } //I dont think this is 100% correct, but at least it does something... if(attacker->spellbonuses.MeleeSkillCheckSkill == skillinuse || attacker->spellbonuses.MeleeSkillCheckSkill == 255) { chancetohit += attacker->spellbonuses.MeleeSkillCheck; - mlog(COMBAT__TOHIT, "Applied spell melee skill bonus %d, yeilding %.2f", attacker->spellbonuses.MeleeSkillCheck, chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Applied spell melee skill bonus %d, yeilding %.2f", attacker->spellbonuses.MeleeSkillCheck, chancetohit); } if(attacker->itembonuses.MeleeSkillCheckSkill == skillinuse || attacker->itembonuses.MeleeSkillCheckSkill == 255) { chancetohit += attacker->itembonuses.MeleeSkillCheck; - mlog(COMBAT__TOHIT, "Applied item melee skill bonus %d, yeilding %.2f", attacker->spellbonuses.MeleeSkillCheck, chancetohit); + Log.Out(Logs::Detail, Logs::Attack, "Applied item melee skill bonus %d, yeilding %.2f", attacker->spellbonuses.MeleeSkillCheck, chancetohit); } //Avoidance Bonuses on defender decreases baseline hit chance by percent. @@ -315,7 +308,7 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c //Calculate final chance to hit chancetohit += ((chancetohit * (hitBonus - avoidanceBonus)) / 100.0f); - mlog(COMBAT__TOHIT, "Chance to hit %.2f after accuracy calc %.2f and avoidance calc %.2f", chancetohit, hitBonus, avoidanceBonus); + Log.Out(Logs::Detail, Logs::Attack, "Chance to hit %.2f after accuracy calc %.2f and avoidance calc %.2f", chancetohit, hitBonus, avoidanceBonus); chancetohit = mod_hit_chance(chancetohit, skillinuse, attacker); @@ -333,9 +326,9 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c //I dont know the best way to handle a garunteed hit discipline being used //agains a garunteed riposte (for example) discipline... for now, garunteed hit wins - #if EQDEBUG>=11 - LogFile->write(EQEmuLog::Debug, "3 FINAL calculated chance to hit is: %5.2f", chancetohit); - #endif + + Log.Out(Logs::Detail, Logs::Attack, "3 FINAL calculated chance to hit is: %5.2f", chancetohit); + // // Did we hit? @@ -343,7 +336,7 @@ bool Mob::CheckHitChance(Mob* other, SkillUseTypes skillinuse, int Hand, int16 c float tohit_roll = zone->random.Real(0, 100); - mlog(COMBAT__TOHIT, "Final hit chance: %.2f%%. Hit roll %.2f", chancetohit, tohit_roll); + Log.Out(Logs::Detail, Logs::Attack, "Final hit chance: %.2f%%. Hit roll %.2f", chancetohit, tohit_roll); return(tohit_roll <= chancetohit); } @@ -377,7 +370,7 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte) ///////////////////////////////////////////////////////// if (IsEnraged() && other->InFrontMob(this, other->GetX(), other->GetY())) { damage = -3; - mlog(COMBAT__DAMAGE, "I am enraged, riposting frontal attack."); + Log.Out(Logs::Detail, Logs::Combat, "I am enraged, riposting frontal attack."); } ///////////////////////////////////////////////////////// @@ -524,7 +517,7 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte) } } - mlog(COMBAT__DAMAGE, "Final damage after all avoidances: %d", damage); + Log.Out(Logs::Detail, Logs::Combat, "Final damage after all avoidances: %d", damage); if (damage < 0) return true; @@ -697,9 +690,9 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac damage -= (myac * zone->random.Int(0, acrandom) / 10000); } if (damage<1) damage=1; - mlog(COMBAT__DAMAGE, "AC Damage Reduction: fail chance %d%%. Failed. Reduction %.3f%%, random %d. Resulting damage %d.", acfail, acreduction, acrandom, damage); + Log.Out(Logs::Detail, Logs::Combat, "AC Damage Reduction: fail chance %d%%. Failed. Reduction %.3f%%, random %d. Resulting damage %d.", acfail, acreduction, acrandom, damage); } else { - mlog(COMBAT__DAMAGE, "AC Damage Reduction: fail chance %d%%. Did not fail.", acfail); + Log.Out(Logs::Detail, Logs::Combat, "AC Damage Reduction: fail chance %d%%. Did not fail.", acfail); } } @@ -1135,14 +1128,14 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b { if (!other) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to Client::Attack() for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Client::Attack() for evaluation!"); return false; } if(!GetTarget()) SetTarget(other); - mlog(COMBAT__ATTACKS, "Attacking %s with hand %d %s", other?other->GetName():"(nullptr)", Hand, bRiposte?"(this is a riposte)":""); + Log.Out(Logs::Detail, Logs::Combat, "Attacking %s with hand %d %s", other?other->GetName():"(nullptr)", Hand, bRiposte?"(this is a riposte)":""); //SetAttackTimer(); if ( @@ -1152,12 +1145,12 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b || (GetHP() < 0) || (!IsAttackAllowed(other)) ) { - mlog(COMBAT__ATTACKS, "Attack canceled, invalid circumstances."); + Log.Out(Logs::Detail, Logs::Combat, "Attack canceled, invalid circumstances."); return false; // Only bards can attack while casting } if(DivineAura() && !GetGM()) {//cant attack while invulnerable unless your a gm - mlog(COMBAT__ATTACKS, "Attack canceled, Divine Aura is in effect."); + Log.Out(Logs::Detail, Logs::Combat, "Attack canceled, Divine Aura is in effect."); Message_StringID(MT_DefaultText, DIVINE_AURA_NO_ATK); //You can't attack while invulnerable! return false; } @@ -1177,19 +1170,19 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b if(weapon != nullptr) { if (!weapon->IsWeapon()) { - mlog(COMBAT__ATTACKS, "Attack canceled, Item %s (%d) is not a weapon.", weapon->GetItem()->Name, weapon->GetID()); + Log.Out(Logs::Detail, Logs::Combat, "Attack canceled, Item %s (%d) is not a weapon.", weapon->GetItem()->Name, weapon->GetID()); return(false); } - mlog(COMBAT__ATTACKS, "Attacking with weapon: %s (%d)", weapon->GetItem()->Name, weapon->GetID()); + Log.Out(Logs::Detail, Logs::Combat, "Attacking with weapon: %s (%d)", weapon->GetItem()->Name, weapon->GetID()); } else { - mlog(COMBAT__ATTACKS, "Attacking without a weapon."); + Log.Out(Logs::Detail, Logs::Combat, "Attacking without a weapon."); } // calculate attack_skill and skillinuse depending on hand and weapon // also send Packet to near clients SkillUseTypes skillinuse; AttackAnimation(skillinuse, Hand, weapon); - mlog(COMBAT__ATTACKS, "Attacking with %s in slot %d using skill %d", weapon?weapon->GetItem()->Name:"Fist", Hand, skillinuse); + Log.Out(Logs::Detail, Logs::Combat, "Attacking with %s in slot %d using skill %d", weapon?weapon->GetItem()->Name:"Fist", Hand, skillinuse); /// Now figure out damage int damage = 0; @@ -1207,7 +1200,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b if(IsBerserk() && GetClass() == BERSERKER){ int bonus = 3 + GetLevel()/10; //unverified weapon_damage = weapon_damage * (100+bonus) / 100; - mlog(COMBAT__DAMAGE, "Berserker damage bonus increases DMG to %d", weapon_damage); + Log.Out(Logs::Detail, Logs::Combat, "Berserker damage bonus increases DMG to %d", weapon_damage); } //try a finishing blow.. if successful end the attack @@ -1275,7 +1268,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b damage = mod_client_damage(damage, skillinuse, Hand, weapon, other); - mlog(COMBAT__DAMAGE, "Damage calculated to %d (min %d, max %d, str %d, skill %d, DMG %d, lv %d)", + Log.Out(Logs::Detail, Logs::Combat, "Damage calculated to %d (min %d, max %d, str %d, skill %d, DMG %d, lv %d)", damage, min_hit, max_hit, GetSTR(), GetSkill(skillinuse), weapon_damage, mylevel); int hit_chance_bonus = 0; @@ -1290,7 +1283,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b //check to see if we hit.. if(!other->CheckHitChance(this, skillinuse, Hand, hit_chance_bonus)) { - mlog(COMBAT__ATTACKS, "Attack missed. Damage set to 0."); + Log.Out(Logs::Detail, Logs::Combat, "Attack missed. Damage set to 0."); damage = 0; } else { //we hit, try to avoid it other->AvoidDamage(this, damage); @@ -1298,7 +1291,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b if(damage > 0) CommonOutgoingHitSuccess(other, damage, skillinuse); - mlog(COMBAT__DAMAGE, "Final damage after all reductions: %d", damage); + Log.Out(Logs::Detail, Logs::Combat, "Final damage after all reductions: %d", damage); } //riposte @@ -1437,7 +1430,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes att } int exploss = 0; - mlog(COMBAT__HITS, "Fatal blow dealt by %s with %d damage, spell %d, skill %d", killerMob ? killerMob->GetName() : "Unknown", damage, spell, attack_skill); + Log.Out(Logs::Detail, Logs::Combat, "Fatal blow dealt by %s with %d damage, spell %d, skill %d", killerMob ? killerMob->GetName() : "Unknown", damage, spell, attack_skill); /* #1: Send death packet to everyone @@ -1699,7 +1692,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool if (!other) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to NPC::Attack() for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to NPC::Attack() for evaluation!"); return false; } @@ -1717,7 +1710,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool if (other->IsClient()) other->CastToClient()->RemoveXTarget(this, false); RemoveFromHateList(other); - mlog(COMBAT__ATTACKS, "I am not allowed to attack %s", other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "I am not allowed to attack %s", other->GetName()); } return false; } @@ -1744,10 +1737,10 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool //We dont factor much from the weapon into the attack. //Just the skill type so it doesn't look silly using punching animations and stuff while wielding weapons if(weapon) { - mlog(COMBAT__ATTACKS, "Attacking with weapon: %s (%d) (too bad im not using it for much)", weapon->Name, weapon->ID); + Log.Out(Logs::Detail, Logs::Combat, "Attacking with weapon: %s (%d) (too bad im not using it for much)", weapon->Name, weapon->ID); if(Hand == MainSecondary && weapon->ItemType == ItemTypeShield){ - mlog(COMBAT__ATTACKS, "Attack with shield canceled."); + Log.Out(Logs::Detail, Logs::Combat, "Attack with shield canceled."); return false; } @@ -1836,11 +1829,11 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool //check if we're hitting above our max or below it. if((min_dmg+eleBane) != 0 && damage < (min_dmg+eleBane)) { - mlog(COMBAT__DAMAGE, "Damage (%d) is below min (%d). Setting to min.", damage, (min_dmg+eleBane)); + Log.Out(Logs::Detail, Logs::Combat, "Damage (%d) is below min (%d). Setting to min.", damage, (min_dmg+eleBane)); damage = (min_dmg+eleBane); } if((max_dmg+eleBane) != 0 && damage > (max_dmg+eleBane)) { - mlog(COMBAT__DAMAGE, "Damage (%d) is above max (%d). Setting to max.", damage, (max_dmg+eleBane)); + Log.Out(Logs::Detail, Logs::Combat, "Damage (%d) is above max (%d). Setting to max.", damage, (max_dmg+eleBane)); damage = (max_dmg+eleBane); } @@ -1853,7 +1846,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool } if(other->IsClient() && other->CastToClient()->IsSitting()) { - mlog(COMBAT__DAMAGE, "Client %s is sitting. Hitting for max damage (%d).", other->GetName(), (max_dmg+eleBane)); + Log.Out(Logs::Detail, Logs::Combat, "Client %s is sitting. Hitting for max damage (%d).", other->GetName(), (max_dmg+eleBane)); damage = (max_dmg+eleBane); damage += (itembonuses.HeroicSTR / 10) + (damage * other->GetSkillDmgTaken(skillinuse) / 100) + GetSkillDmgAmt(skillinuse); @@ -1864,7 +1857,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool hate += opts->hate_flat; } - mlog(COMBAT__HITS, "Generating hate %d towards %s", hate, GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Generating hate %d towards %s", hate, GetName()); // now add done damage to the hate list other->AddToHateList(this, hate); @@ -1888,7 +1881,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool if(damage > 0) { CommonOutgoingHitSuccess(other, damage, skillinuse); } - mlog(COMBAT__HITS, "Generating hate %d towards %s", hate, GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Generating hate %d towards %s", hate, GetName()); // now add done damage to the hate list if(damage > 0) other->AddToHateList(this, hate); @@ -1897,7 +1890,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool } } - mlog(COMBAT__DAMAGE, "Final damage against %s: %d", other->GetName(), damage); + Log.Out(Logs::Detail, Logs::Combat, "Final damage against %s: %d", other->GetName(), damage); if(other->IsClient() && IsPet() && GetOwner()->IsClient()) { //pets do half damage to clients in pvp @@ -1909,7 +1902,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool //cant riposte a riposte if (bRiposte && damage == -3) { - mlog(COMBAT__DAMAGE, "Riposte of riposte canceled."); + Log.Out(Logs::Detail, Logs::Combat, "Riposte of riposte canceled."); return false; } @@ -1961,7 +1954,7 @@ void NPC::Damage(Mob* other, int32 damage, uint16 spell_id, SkillUseTypes attack //handle EVENT_ATTACK. Resets after we have not been attacked for 12 seconds if(attacked_timer.Check()) { - mlog(COMBAT__HITS, "Triggering EVENT_ATTACK due to attack by %s", other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Triggering EVENT_ATTACK due to attack by %s", other->GetName()); parse->EventNPC(EVENT_ATTACK, this, other, "", 0); } attacked_timer.Start(CombatEventTimer_expire); @@ -1998,7 +1991,7 @@ void NPC::Damage(Mob* other, int32 damage, uint16 spell_id, SkillUseTypes attack } bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes attack_skill) { - mlog(COMBAT__HITS, "Fatal blow dealt by %s with %d damage, spell %d, skill %d", killerMob->GetName(), damage, spell, attack_skill); + Log.Out(Logs::Detail, Logs::Combat, "Fatal blow dealt by %s with %d damage, spell %d, skill %d", killerMob->GetName(), damage, spell, attack_skill); Mob *oos = nullptr; if(killerMob) { @@ -2035,9 +2028,7 @@ bool NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillUseTypes attack if (IsEngaged()) { zone->DelAggroMob(); -#if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug,"NPC::Death() Mobs currently Aggro %i", zone->MobsAggroCount()); -#endif + Log.Out(Logs::Detail, Logs::Attack, "%s Mobs currently Aggro %i", __FUNCTION__, zone->MobsAggroCount()); } SetHP(0); SetPet(0); @@ -2589,7 +2580,7 @@ void Mob::DamageShield(Mob* attacker, bool spell_ds) { if(DS == 0 && rev_ds == 0) return; - mlog(COMBAT__HITS, "Applying Damage Shield of value %d to %s", DS, attacker->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Applying Damage Shield of value %d to %s", DS, attacker->GetName()); //invert DS... spells yield negative values for a true damage shield if(DS < 0) { @@ -2634,7 +2625,7 @@ void Mob::DamageShield(Mob* attacker, bool spell_ds) { rev_ds_spell_id = spellbonuses.ReverseDamageShieldSpellID; if(rev_ds < 0) { - mlog(COMBAT__HITS, "Applying Reverse Damage Shield of value %d to %s", rev_ds, attacker->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Applying Reverse Damage Shield of value %d to %s", rev_ds, attacker->GetName()); attacker->Damage(this, -rev_ds, rev_ds_spell_id, SkillAbjuration/*hackish*/, false); //"this" (us) will get the hate, etc. not sure how this works on Live, but it'll works for now, and tanks will love us for this //do we need to send a damage packet here also? } @@ -3146,7 +3137,7 @@ int32 Mob::ReduceDamage(int32 damage) int damage_to_reduce = damage * spellbonuses.MeleeThresholdGuard[0] / 100; if(damage_to_reduce >= buffs[slot].melee_rune) { - mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MeleeThresholdGuard %d damage negated, %d" + Log.Out(Logs::Detail, Logs::Spells, "Mob::ReduceDamage SE_MeleeThresholdGuard %d damage negated, %d" " damage remaining, fading buff.", damage_to_reduce, buffs[slot].melee_rune); damage -= buffs[slot].melee_rune; if(!TryFadeEffect(slot)) @@ -3154,7 +3145,7 @@ int32 Mob::ReduceDamage(int32 damage) } else { - mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MeleeThresholdGuard %d damage negated, %d" + Log.Out(Logs::Detail, Logs::Spells, "Mob::ReduceDamage SE_MeleeThresholdGuard %d damage negated, %d" " damage remaining.", damage_to_reduce, buffs[slot].melee_rune); buffs[slot].melee_rune = (buffs[slot].melee_rune - damage_to_reduce); damage -= damage_to_reduce; @@ -3173,7 +3164,7 @@ int32 Mob::ReduceDamage(int32 damage) if(spellbonuses.MitigateMeleeRune[3] && (damage_to_reduce >= buffs[slot].melee_rune)) { - mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MitigateMeleeDamage %d damage negated, %d" + Log.Out(Logs::Detail, Logs::Spells, "Mob::ReduceDamage SE_MitigateMeleeDamage %d damage negated, %d" " damage remaining, fading buff.", damage_to_reduce, buffs[slot].melee_rune); damage -= buffs[slot].melee_rune; if(!TryFadeEffect(slot)) @@ -3181,7 +3172,7 @@ int32 Mob::ReduceDamage(int32 damage) } else { - mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MitigateMeleeDamage %d damage negated, %d" + Log.Out(Logs::Detail, Logs::Spells, "Mob::ReduceDamage SE_MitigateMeleeDamage %d damage negated, %d" " damage remaining.", damage_to_reduce, buffs[slot].melee_rune); if (spellbonuses.MitigateMeleeRune[3]) @@ -3299,7 +3290,7 @@ int32 Mob::AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTi if(spellbonuses.MitigateSpellRune[3] && (damage_to_reduce >= buffs[slot].magic_rune)) { - mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MitigateSpellDamage %d damage negated, %d" + Log.Out(Logs::Detail, Logs::Spells, "Mob::ReduceDamage SE_MitigateSpellDamage %d damage negated, %d" " damage remaining, fading buff.", damage_to_reduce, buffs[slot].magic_rune); damage -= buffs[slot].magic_rune; if(!TryFadeEffect(slot)) @@ -3307,7 +3298,7 @@ int32 Mob::AffectMagicalDamage(int32 damage, uint16 spell_id, const bool iBuffTi } else { - mlog(SPELLS__EFFECT_VALUES, "Mob::ReduceDamage SE_MitigateMeleeDamage %d damage negated, %d" + Log.Out(Logs::Detail, Logs::Spells, "Mob::ReduceDamage SE_MitigateMeleeDamage %d damage negated, %d" " damage remaining.", damage_to_reduce, buffs[slot].magic_rune); if (spellbonuses.MitigateSpellRune[3]) @@ -3446,11 +3437,11 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons // This method is called with skill_used=ABJURE for Damage Shield damage. bool FromDamageShield = (skill_used == SkillAbjuration); - mlog(COMBAT__HITS, "Applying damage %d done by %s with skill %d and spell %d, avoidable? %s, is %sa buff tic in slot %d", + Log.Out(Logs::Detail, Logs::Combat, "Applying damage %d done by %s with skill %d and spell %d, avoidable? %s, is %sa buff tic in slot %d", damage, attacker?attacker->GetName():"NOBODY", skill_used, spell_id, avoidable?"yes":"no", iBuffTic?"":"not ", buffslot); if (GetInvul() || DivineAura()) { - mlog(COMBAT__DAMAGE, "Avoiding %d damage due to invulnerability.", damage); + Log.Out(Logs::Detail, Logs::Combat, "Avoiding %d damage due to invulnerability.", damage); damage = -5; } @@ -3502,7 +3493,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons int healed = damage; healed = attacker->GetActSpellHealing(spell_id, healed); - mlog(COMBAT__DAMAGE, "Applying lifetap heal of %d to %s", healed, attacker->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Applying lifetap heal of %d to %s", healed, attacker->GetName()); attacker->HealDamage(healed); //we used to do a message to the client, but its gone now. @@ -3515,7 +3506,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons if (pet && !pet->IsFamiliar() && !pet->GetSpecialAbility(IMMUNE_AGGRO) && !pet->IsEngaged() && attacker && attacker != this && !attacker->IsCorpse()) { if (!pet->IsHeld()) { - mlog(PETS__AGGRO, "Sending pet %s into battle due to attack.", pet->GetName()); + Log.Out(Logs::Detail, Logs::Aggro, "Sending pet %s into battle due to attack.", pet->GetName()); pet->AddToHateList(attacker, 1); pet->SetTarget(attacker); Message_StringID(10, PET_ATTACKING, pet->GetCleanName(), attacker->GetCleanName()); @@ -3525,7 +3516,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons //see if any runes want to reduce this damage if(spell_id == SPELL_UNKNOWN) { damage = ReduceDamage(damage); - mlog(COMBAT__HITS, "Melee Damage reduced to %d", damage); + Log.Out(Logs::Detail, Logs::Combat, "Melee Damage reduced to %d", damage); damage = ReduceAllDamage(damage); TryTriggerThreshHold(damage, SE_TriggerMeleeThreshold, attacker); } else { @@ -3582,7 +3573,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons //fade mez if we are mezzed if (IsMezzed() && attacker) { - mlog(COMBAT__HITS, "Breaking mez due to attack."); + Log.Out(Logs::Detail, Logs::Combat, "Breaking mez due to attack."); entity_list.MessageClose_StringID(this, true, 100, MT_WornOff, HAS_BEEN_AWAKENED, GetCleanName(), attacker->GetCleanName()); BuffFadeByEffect(SE_Mez); @@ -3625,7 +3616,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons int stun_resist = itembonuses.StunResist + spellbonuses.StunResist; int frontal_stun_resist = itembonuses.FrontalStunResist + spellbonuses.FrontalStunResist; - mlog(COMBAT__HITS, "Stun passed, checking resists. Was %d chance.", stun_chance); + Log.Out(Logs::Detail, Logs::Combat, "Stun passed, checking resists. Was %d chance.", stun_chance); if (IsClient()) { stun_resist += aabonuses.StunResist; frontal_stun_resist += aabonuses.FrontalStunResist; @@ -3635,20 +3626,20 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons if (((GetBaseRace() == OGRE && IsClient()) || (frontal_stun_resist && zone->random.Roll(frontal_stun_resist))) && !attacker->BehindMob(this, attacker->GetX(), attacker->GetY())) { - mlog(COMBAT__HITS, "Frontal stun resisted. %d chance.", frontal_stun_resist); + Log.Out(Logs::Detail, Logs::Combat, "Frontal stun resisted. %d chance.", frontal_stun_resist); } else { // Normal stun resist check. if (stun_resist && zone->random.Roll(stun_resist)) { if (IsClient()) Message_StringID(MT_Stun, SHAKE_OFF_STUN); - mlog(COMBAT__HITS, "Stun Resisted. %d chance.", stun_resist); + Log.Out(Logs::Detail, Logs::Combat, "Stun Resisted. %d chance.", stun_resist); } else { - mlog(COMBAT__HITS, "Stunned. %d resist chance.", stun_resist); + Log.Out(Logs::Detail, Logs::Combat, "Stunned. %d resist chance.", stun_resist); Stun(zone->random.Int(0, 2) * 1000); // 0-2 seconds } } } else { - mlog(COMBAT__HITS, "Stun failed. %d chance.", stun_chance); + Log.Out(Logs::Detail, Logs::Combat, "Stun failed. %d chance.", stun_chance); } } @@ -3662,7 +3653,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons //increment chances of interrupting if(IsCasting()) { //shouldnt interrupt on regular spell damage attacked_count++; - mlog(COMBAT__HITS, "Melee attack while casting. Attack count %d", attacked_count); + Log.Out(Logs::Detail, Logs::Combat, "Melee attack while casting. Attack count %d", attacked_count); } } @@ -3868,7 +3859,7 @@ float Mob::GetProcChances(float ProcBonus, uint16 hand) ProcChance += ProcChance * ProcBonus / 100.0f; } - mlog(COMBAT__PROCS, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus); + Log.Out(Logs::Detail, Logs::Combat, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus); return ProcChance; } @@ -3887,7 +3878,7 @@ float Mob::GetDefensiveProcChances(float &ProcBonus, float &ProcChance, uint16 h ProcBonus += static_cast(myagi) * RuleR(Combat, DefProcPerMinAgiContrib) / 100.0f; ProcChance = ProcChance + (ProcChance * ProcBonus); - mlog(COMBAT__PROCS, "Defensive Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus); + Log.Out(Logs::Detail, Logs::Combat, "Defensive Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus); return ProcChance; } @@ -3896,7 +3887,7 @@ void Mob::TryDefensiveProc(const ItemInst* weapon, Mob *on, uint16 hand) { if (!on) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to Mob::TryDefensiveProc for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Mob::TryDefensiveProc for evaluation!"); return; } @@ -3928,17 +3919,17 @@ void Mob::TryDefensiveProc(const ItemInst* weapon, Mob *on, uint16 hand) { void Mob::TryWeaponProc(const ItemInst* weapon_g, Mob *on, uint16 hand) { if(!on) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to Mob::TryWeaponProc for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Mob::TryWeaponProc for evaluation!"); return; } if (!IsAttackAllowed(on)) { - mlog(COMBAT__PROCS, "Preventing procing off of unattackable things."); + Log.Out(Logs::Detail, Logs::Combat, "Preventing procing off of unattackable things."); return; } if (DivineAura()) { - mlog(COMBAT__PROCS, "Procs canceled, Divine Aura is in effect."); + Log.Out(Logs::Detail, Logs::Combat, "Procs canceled, Divine Aura is in effect."); return; } @@ -3985,7 +3976,7 @@ void Mob::TryWeaponProc(const ItemInst *inst, const Item_Struct *weapon, Mob *on static_cast(weapon->ProcRate)) / 100.0f; if (zone->random.Roll(WPC)) { // 255 dex = 0.084 chance of proc. No idea what this number should be really. if (weapon->Proc.Level > ourlevel) { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Tried to proc (%s), but our level (%d) is lower than required (%d)", weapon->Name, ourlevel, weapon->Proc.Level); if (IsPet()) { @@ -3996,7 +3987,7 @@ void Mob::TryWeaponProc(const ItemInst *inst, const Item_Struct *weapon, Mob *on Message_StringID(13, PROC_TOOLOW); } } else { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Attacking weapon (%s) successfully procing spell %d (%.2f percent chance)", weapon->Name, weapon->Proc.Effect, WPC * 100); ExecWeaponProc(inst, weapon->Proc.Effect, on); @@ -4075,12 +4066,12 @@ void Mob::TrySpellProc(const ItemInst *inst, const Item_Struct *weapon, Mob *on, // Perma procs (AAs) if (PermaProcs[i].spellID != SPELL_UNKNOWN) { if (zone->random.Roll(PermaProcs[i].chance)) { // TODO: Do these get spell bonus? - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Permanent proc %d procing spell %d (%d percent chance)", i, PermaProcs[i].spellID, PermaProcs[i].chance); ExecWeaponProc(nullptr, PermaProcs[i].spellID, on); } else { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Permanent proc %d failed to proc %d (%d percent chance)", i, PermaProcs[i].spellID, PermaProcs[i].chance); } @@ -4090,14 +4081,14 @@ void Mob::TrySpellProc(const ItemInst *inst, const Item_Struct *weapon, Mob *on, if (SpellProcs[i].spellID != SPELL_UNKNOWN) { float chance = ProcChance * (static_cast(SpellProcs[i].chance) / 100.0f); if (zone->random.Roll(chance)) { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Spell proc %d procing spell %d (%.2f percent chance)", i, SpellProcs[i].spellID, chance); ExecWeaponProc(nullptr, SpellProcs[i].spellID, on); CheckNumHitsRemaining(NumHit::OffensiveSpellProcs, 0, SpellProcs[i].base_spellID); } else { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Spell proc %d failed to proc %d (%.2f percent chance)", i, SpellProcs[i].spellID, chance); } @@ -4107,14 +4098,14 @@ void Mob::TrySpellProc(const ItemInst *inst, const Item_Struct *weapon, Mob *on, if (RangedProcs[i].spellID != SPELL_UNKNOWN) { float chance = ProcChance * (static_cast(RangedProcs[i].chance) / 100.0f); if (zone->random.Roll(chance)) { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Ranged proc %d procing spell %d (%.2f percent chance)", i, RangedProcs[i].spellID, chance); ExecWeaponProc(nullptr, RangedProcs[i].spellID, on); CheckNumHitsRemaining(NumHit::OffensiveSpellProcs, 0, RangedProcs[i].base_spellID); } else { - mlog(COMBAT__PROCS, + Log.Out(Logs::Detail, Logs::Combat, "Ranged proc %d failed to proc %d (%.2f percent chance)", i, RangedProcs[i].spellID, chance); } @@ -4364,7 +4355,7 @@ bool Mob::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse) } void Mob::DoRiposte(Mob* defender) { - mlog(COMBAT__ATTACKS, "Preforming a riposte"); + Log.Out(Logs::Detail, Logs::Combat, "Preforming a riposte"); if (!defender) return; @@ -4382,7 +4373,7 @@ void Mob::DoRiposte(Mob* defender) { //Live AA - Double Riposte if(DoubleRipChance && zone->random.Roll(DoubleRipChance)) { - mlog(COMBAT__ATTACKS, "Preforming a double riposed (%d percent chance)", DoubleRipChance); + Log.Out(Logs::Detail, Logs::Combat, "Preforming a double riposed (%d percent chance)", DoubleRipChance); defender->Attack(this, MainPrimary, true); if (HasDied()) return; } @@ -4393,7 +4384,7 @@ void Mob::DoRiposte(Mob* defender) { DoubleRipChance = defender->aabonuses.GiveDoubleRiposte[1]; if(DoubleRipChance && zone->random.Roll(DoubleRipChance)) { - mlog(COMBAT__ATTACKS, "Preforming a return SPECIAL ATTACK (%d percent chance)", DoubleRipChance); + Log.Out(Logs::Detail, Logs::Combat, "Preforming a return SPECIAL ATTACK (%d percent chance)", DoubleRipChance); if (defender->GetClass() == MONK) defender->MonkSpecialAttack(this, defender->aabonuses.GiveDoubleRiposte[2]); @@ -4410,7 +4401,7 @@ void Mob::ApplyMeleeDamageBonus(uint16 skill, int32 &damage){ int dmgbonusmod = 0; dmgbonusmod += (100*(itembonuses.STR + spellbonuses.STR))/3; dmgbonusmod += (100*(spellbonuses.ATK + itembonuses.ATK))/5; - mlog(COMBAT__DAMAGE, "Damage bonus: %d percent from ATK and STR bonuses.", (dmgbonusmod/100)); + Log.Out(Logs::Detail, Logs::Combat, "Damage bonus: %d percent from ATK and STR bonuses.", (dmgbonusmod/100)); damage += (damage*dmgbonusmod/10000); } } @@ -4479,7 +4470,7 @@ void Mob::TrySkillProc(Mob *on, uint16 skill, uint16 ReuseTime, bool Success, ui if (!on) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to Mob::TrySkillProc for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Mob::TrySkillProc for evaluation!"); return; } @@ -4705,13 +4696,13 @@ bool Mob::TryRootFadeByDamage(int buffslot, Mob* attacker) { if (!TryFadeEffect(spellbonuses.Root[1])) { BuffFadeBySlot(spellbonuses.Root[1]); - mlog(COMBAT__HITS, "Spell broke root! BreakChance percent chance"); + Log.Out(Logs::Detail, Logs::Combat, "Spell broke root! BreakChance percent chance"); return true; } } } - mlog(COMBAT__HITS, "Spell did not break root. BreakChance percent chance"); + Log.Out(Logs::Detail, Logs::Combat, "Spell did not break root. BreakChance percent chance"); return false; } @@ -4783,19 +4774,19 @@ void Mob::CommonBreakInvisible() { //break invis when you attack if(invisible) { - mlog(COMBAT__ATTACKS, "Removing invisibility due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility due to melee attack."); BuffFadeByEffect(SE_Invisibility); BuffFadeByEffect(SE_Invisibility2); invisible = false; } if(invisible_undead) { - mlog(COMBAT__ATTACKS, "Removing invisibility vs. undead due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility vs. undead due to melee attack."); BuffFadeByEffect(SE_InvisVsUndead); BuffFadeByEffect(SE_InvisVsUndead2); invisible_undead = false; } if(invisible_animals){ - mlog(COMBAT__ATTACKS, "Removing invisibility vs. animals due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility vs. animals due to melee attack."); BuffFadeByEffect(SE_InvisVsAnimals); invisible_animals = false; } diff --git a/zone/bonuses.cpp b/zone/bonuses.cpp index 5c62c5860..70ab56400 100644 --- a/zone/bonuses.cpp +++ b/zone/bonuses.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "../common/classes.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/item.h" #include "../common/rulesys.h" #include "../common/skills.h" @@ -77,9 +77,9 @@ void Client::CalcBonuses() CalcSpellBonuses(&spellbonuses); - _log(AA__BONUSES, "Calculating AA Bonuses for %s.", this->GetCleanName()); + Log.Out(Logs::Detail, Logs::AA, "Calculating AA Bonuses for %s.", this->GetCleanName()); CalcAABonuses(&aabonuses); //we're not quite ready for this - _log(AA__BONUSES, "Finished calculating AA Bonuses for %s.", this->GetCleanName()); + Log.Out(Logs::Detail, Logs::AA, "Finished calculating AA Bonuses for %s.", this->GetCleanName()); RecalcWeight(); @@ -538,11 +538,7 @@ void Client::AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAu } void Client::CalcEdibleBonuses(StatBonuses* newbon) { -//#if EQDEBUG >= 11 -// std::cout<<"Client::CalcEdibleBonuses(StatBonuses* newbon)"<GetCleanName()); + Log.Out(Logs::Detail, Logs::AA, "Applying Effect %d from AA %u in slot %d (base1: %d, base2: %d) on %s", effect, aaid, slot, base1, base2, this->GetCleanName()); uint8 focus = IsFocusEffect(0, 0, true,effect); if (focus) diff --git a/zone/bot.cpp b/zone/bot.cpp index b6b464b07..313933555 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -1225,7 +1225,7 @@ int32 Bot::acmod() return (65 + ((agility-300) / 21)); } #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Error, "Error in Bot::acmod(): Agility: %i, Level: %i",agility,level); + Log.Out(Logs::General, Logs::Error, "Error in Bot::acmod(): Agility: %i, Level: %i",agility,level); #endif return 0; } @@ -1462,7 +1462,7 @@ void Bot::LoadAAs() { auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Bot::LoadAAs()"); + Log.Out(Logs::General, Logs::Error, "Error in Bot::LoadAAs()"); return; } @@ -1564,7 +1564,7 @@ void Bot::ApplyAABonuses(uint32 aaid, uint32 slots, StatBonuses* newbon) if (effect == SE_Blank || (effect == SE_CHA && base1 == 0) || effect == SE_StackingCommand_Block || effect == SE_StackingCommand_Overwrite) continue; - _log(AA__BONUSES, "Applying Effect %d from AA %u in slot %d (base1: %d, base2: %d) on %s", effect, aaid, slot, base1, base2, this->GetCleanName()); + Log.Out(Logs::Detail, Logs::AA, "Applying Effect %d from AA %u in slot %d (base1: %d, base2: %d) on %s", effect, aaid, slot, base1, base2, this->GetCleanName()); uint8 focus = IsFocusEffect(0, 0, true,effect); if (focus) @@ -2774,7 +2774,7 @@ void Bot::LoadStance() { std::string query = StringFormat("SELECT StanceID FROM botstances WHERE BotID = %u;", GetBotID()); auto results = database.QueryDatabase(query); if(!results.Success() || results.RowCount() == 0) { - LogFile->write(EQEmuLog::Error, "Error in Bot::LoadStance()"); + Log.Out(Logs::General, Logs::Error, "Error in Bot::LoadStance()"); SetDefaultBotStance(); return; } @@ -2792,7 +2792,7 @@ void Bot::SaveStance() { "VALUES(%u, %u);", GetBotID(), GetBotStance()); auto results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in Bot::SaveStance()"); + Log.Out(Logs::General, Logs::Error, "Error in Bot::SaveStance()"); } @@ -2807,7 +2807,7 @@ void Bot::LoadTimers() { GetBotID(), DisciplineReuseStart-1, DisciplineReuseStart-1, GetClass(), GetLevel()); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Bot::LoadTimers()"); + Log.Out(Logs::General, Logs::Error, "Error in Bot::LoadTimers()"); return; } @@ -2847,7 +2847,7 @@ void Bot::SaveTimers() { } if(hadError) - LogFile->write(EQEmuLog::Error, "Error in Bot::SaveTimers()"); + Log.Out(Logs::General, Logs::Error, "Error in Bot::SaveTimers()"); } @@ -2979,7 +2979,7 @@ void Bot::BotRangedAttack(Mob* other) { //make sure the attack and ranged timers are up //if the ranged timer is disabled, then they have no ranged weapon and shouldent be attacking anyhow if((attack_timer.Enabled() && !attack_timer.Check(false)) || (ranged_timer.Enabled() && !ranged_timer.Check())) { - mlog(COMBAT__RANGED, "Bot Archery attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); + Log.Out(Logs::Detail, Logs::Combat, "Bot Archery attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); Message(0, "Error: Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); return; } @@ -2997,7 +2997,7 @@ void Bot::BotRangedAttack(Mob* other) { if(!RangeWeapon || !Ammo) return; - mlog(COMBAT__RANGED, "Shooting %s with bow %s (%d) and arrow %s (%d)", other->GetCleanName(), RangeWeapon->Name, RangeWeapon->ID, Ammo->Name, Ammo->ID); + Log.Out(Logs::Detail, Logs::Combat, "Shooting %s with bow %s (%d) and arrow %s (%d)", other->GetCleanName(), RangeWeapon->Name, RangeWeapon->ID, Ammo->Name, Ammo->ID); if(!IsAttackAllowed(other) || IsCasting() || @@ -3015,19 +3015,19 @@ void Bot::BotRangedAttack(Mob* other) { //break invis when you attack if(invisible) { - mlog(COMBAT__ATTACKS, "Removing invisibility due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility due to melee attack."); BuffFadeByEffect(SE_Invisibility); BuffFadeByEffect(SE_Invisibility2); invisible = false; } if(invisible_undead) { - mlog(COMBAT__ATTACKS, "Removing invisibility vs. undead due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility vs. undead due to melee attack."); BuffFadeByEffect(SE_InvisVsUndead); BuffFadeByEffect(SE_InvisVsUndead2); invisible_undead = false; } if(invisible_animals){ - mlog(COMBAT__ATTACKS, "Removing invisibility vs. animals due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility vs. animals due to melee attack."); BuffFadeByEffect(SE_InvisVsAnimals); invisible_animals = false; } @@ -3362,7 +3362,7 @@ void Bot::AI_Process() { else if(!IsRooted()) { if(GetTarget() && GetTarget()->GetHateTop() && GetTarget()->GetHateTop() != this) { - mlog(AI__WAYPOINTS, "Returning to location prior to being summoned."); + Log.Out(Logs::Detail, Logs::AI, "Returning to location prior to being summoned."); CalculateNewPosition2(m_PreSummonLocation.m_X, m_PreSummonLocation.m_Y, m_PreSummonLocation.m_Z, GetRunspeed()); SetHeading(CalculateHeadingToTarget(m_PreSummonLocation.m_X, m_PreSummonLocation.m_Y)); return; @@ -3689,7 +3689,7 @@ void Bot::AI_Process() { if (AImovement_timer->Check()) { if(!IsRooted()) { - mlog(AI__WAYPOINTS, "Pursuing %s while engaged.", GetTarget()->GetCleanName()); + Log.Out(Logs::Detail, Logs::AI, "Pursuing %s while engaged.", GetTarget()->GetCleanName()); CalculateNewPosition2(GetTarget()->GetX(), GetTarget()->GetY(), GetTarget()->GetZ(), GetRunspeed()); return; } @@ -3972,7 +3972,7 @@ void Bot::PetAIProcess() { { botPet->SetRunAnimSpeed(0); if(!botPet->IsRooted()) { - mlog(AI__WAYPOINTS, "Pursuing %s while engaged.", botPet->GetTarget()->GetCleanName()); + Log.Out(Logs::Detail, Logs::AI, "Pursuing %s while engaged.", botPet->GetTarget()->GetCleanName()); botPet->CalculateNewPosition2(botPet->GetTarget()->GetX(), botPet->GetTarget()->GetY(), botPet->GetTarget()->GetZ(), botPet->GetOwner()->GetRunspeed()); return; } @@ -4211,7 +4211,7 @@ void Bot::GetBotItems(std::string* errorMessage, Inventory &inv) { ItemInst* inst = database.CreateItem(item_id, charges, aug[0], aug[1], aug[2], aug[3], aug[4]); if (!inst) { - LogFile->write(EQEmuLog::Error, "Warning: botid %i has an invalid item_id %i in inventory slot %i", this->GetBotID(), item_id, slot_id); + Log.Out(Logs::General, Logs::Error, "Warning: botid %i has an invalid item_id %i in inventory slot %i", this->GetBotID(), item_id, slot_id); continue; } @@ -4235,7 +4235,7 @@ void Bot::GetBotItems(std::string* errorMessage, Inventory &inv) { // Save ptr to item in inventory if (put_slot_id == INVALID_INDEX) - LogFile->write(EQEmuLog::Error, "Warning: Invalid slot_id for item in inventory: botid=%i, item_id=%i, slot_id=%i",this->GetBotID(), item_id, slot_id); + Log.Out(Logs::General, Logs::Error, "Warning: Invalid slot_id for item in inventory: botid=%i, item_id=%i, slot_id=%i",this->GetBotID(), item_id, slot_id); } @@ -5959,7 +5959,7 @@ void Bot::Damage(Mob *from, int32 damage, uint16 spell_id, SkillUseTypes attack_ //handle EVENT_ATTACK. Resets after we have not been attacked for 12 seconds if(attacked_timer.Check()) { - mlog(COMBAT__HITS, "Triggering EVENT_ATTACK due to attack by %s", from->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Triggering EVENT_ATTACK due to attack by %s", from->GetName()); parse->EventNPC(EVENT_ATTACK, this, from, "", 0); } @@ -5972,7 +5972,7 @@ void Bot::Damage(Mob *from, int32 damage, uint16 spell_id, SkillUseTypes attack_ // if spell is lifetap add hp to the caster if (spell_id != SPELL_UNKNOWN && IsLifetapSpell(spell_id)) { int healed = GetActSpellHealing(spell_id, damage); - mlog(COMBAT__DAMAGE, "Applying lifetap heal of %d to %s", healed, GetCleanName()); + Log.Out(Logs::Detail, Logs::Combat, "Applying lifetap heal of %d to %s", healed, GetCleanName()); HealDamage(healed); entity_list.MessageClose(this, true, 300, MT_Spells, "%s beams a smile at %s", GetCleanName(), from->GetCleanName() ); } @@ -6017,14 +6017,14 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b { if (!other) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to Bot::Attack for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Bot::Attack for evaluation!"); return false; } if(!GetTarget() || GetTarget() != other) SetTarget(other); - mlog(COMBAT__ATTACKS, "Attacking %s with hand %d %s", other?other->GetCleanName():"(nullptr)", Hand, FromRiposte?"(this is a riposte)":""); + Log.Out(Logs::Detail, Logs::Combat, "Attacking %s with hand %d %s", other?other->GetCleanName():"(nullptr)", Hand, FromRiposte?"(this is a riposte)":""); if ((IsCasting() && (GetClass() != BARD) && !IsFromSpell) || other == nullptr || @@ -6036,13 +6036,13 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b entity_list.MessageClose(this, 1, 200, 10, "%s says, '%s is not a legal target master.'", this->GetCleanName(), this->GetTarget()->GetCleanName()); if(other) { RemoveFromHateList(other); - mlog(COMBAT__ATTACKS, "I am not allowed to attack %s", other->GetCleanName()); + Log.Out(Logs::Detail, Logs::Combat, "I am not allowed to attack %s", other->GetCleanName()); } return false; } if(DivineAura()) {//cant attack while invulnerable - mlog(COMBAT__ATTACKS, "Attack canceled, Divine Aura is in effect."); + Log.Out(Logs::Detail, Logs::Combat, "Attack canceled, Divine Aura is in effect."); return false; } @@ -6068,19 +6068,19 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b if(weapon != nullptr) { if (!weapon->IsWeapon()) { - mlog(COMBAT__ATTACKS, "Attack canceled, Item %s (%d) is not a weapon.", weapon->GetItem()->Name, weapon->GetID()); + Log.Out(Logs::Detail, Logs::Combat, "Attack canceled, Item %s (%d) is not a weapon.", weapon->GetItem()->Name, weapon->GetID()); return(false); } - mlog(COMBAT__ATTACKS, "Attacking with weapon: %s (%d)", weapon->GetItem()->Name, weapon->GetID()); + Log.Out(Logs::Detail, Logs::Combat, "Attacking with weapon: %s (%d)", weapon->GetItem()->Name, weapon->GetID()); } else { - mlog(COMBAT__ATTACKS, "Attacking without a weapon."); + Log.Out(Logs::Detail, Logs::Combat, "Attacking without a weapon."); } // calculate attack_skill and skillinuse depending on hand and weapon // also send Packet to near clients SkillUseTypes skillinuse; AttackAnimation(skillinuse, Hand, weapon); - mlog(COMBAT__ATTACKS, "Attacking with %s in slot %d using skill %d", weapon?weapon->GetItem()->Name:"Fist", Hand, skillinuse); + Log.Out(Logs::Detail, Logs::Combat, "Attacking with %s in slot %d using skill %d", weapon?weapon->GetItem()->Name:"Fist", Hand, skillinuse); /// Now figure out damage int damage = 0; @@ -6098,7 +6098,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b if(berserk && (GetClass() == BERSERKER)){ int bonus = 3 + GetLevel()/10; //unverified weapon_damage = weapon_damage * (100+bonus) / 100; - mlog(COMBAT__DAMAGE, "Berserker damage bonus increases DMG to %d", weapon_damage); + Log.Out(Logs::Detail, Logs::Combat, "Berserker damage bonus increases DMG to %d", weapon_damage); } //try a finishing blow.. if successful end the attack @@ -6163,7 +6163,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b else damage = zone->random.Int(min_hit, max_hit); - mlog(COMBAT__DAMAGE, "Damage calculated to %d (min %d, max %d, str %d, skill %d, DMG %d, lv %d)", + Log.Out(Logs::Detail, Logs::Combat, "Damage calculated to %d (min %d, max %d, str %d, skill %d, DMG %d, lv %d)", damage, min_hit, max_hit, GetSTR(), GetSkill(skillinuse), weapon_damage, GetLevel()); if(opts) { @@ -6175,7 +6175,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b //check to see if we hit.. if(!other->CheckHitChance(other, skillinuse, Hand)) { - mlog(COMBAT__ATTACKS, "Attack missed. Damage set to 0."); + Log.Out(Logs::Detail, Logs::Combat, "Attack missed. Damage set to 0."); damage = 0; other->AddToHateList(this, 0); } else { //we hit, try to avoid it @@ -6185,13 +6185,13 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b ApplyMeleeDamageBonus(skillinuse, damage); damage += (itembonuses.HeroicSTR / 10) + (damage * other->GetSkillDmgTaken(skillinuse) / 100) + GetSkillDmgAmt(skillinuse); TryCriticalHit(other, skillinuse, damage, opts); - mlog(COMBAT__HITS, "Generating hate %d towards %s", hate, GetCleanName()); + Log.Out(Logs::Detail, Logs::Combat, "Generating hate %d towards %s", hate, GetCleanName()); // now add done damage to the hate list //other->AddToHateList(this, hate); } else other->AddToHateList(this, 0); - mlog(COMBAT__DAMAGE, "Final damage after all reductions: %d", damage); + Log.Out(Logs::Detail, Logs::Combat, "Final damage after all reductions: %d", damage); } //riposte @@ -6253,19 +6253,19 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b //break invis when you attack if(invisible) { - mlog(COMBAT__ATTACKS, "Removing invisibility due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility due to melee attack."); BuffFadeByEffect(SE_Invisibility); BuffFadeByEffect(SE_Invisibility2); invisible = false; } if(invisible_undead) { - mlog(COMBAT__ATTACKS, "Removing invisibility vs. undead due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility vs. undead due to melee attack."); BuffFadeByEffect(SE_InvisVsUndead); BuffFadeByEffect(SE_InvisVsUndead2); invisible_undead = false; } if(invisible_animals){ - mlog(COMBAT__ATTACKS, "Removing invisibility vs. animals due to melee attack."); + Log.Out(Logs::Detail, Logs::Combat, "Removing invisibility vs. animals due to melee attack."); BuffFadeByEffect(SE_InvisVsAnimals); invisible_animals = false; } @@ -7028,7 +7028,7 @@ int32 Bot::CalcBotFocusEffect(BotfocusType bottype, uint16 focus_id, uint16 spel return 0; break; default: - LogFile->write(EQEmuLog::Normal, "CalcFocusEffect: unknown limit spelltype %d", focus_spell.base[i]); + Log.Out(Logs::General, Logs::Normal, "CalcFocusEffect: unknown limit spelltype %d", focus_spell.base[i]); } break; @@ -7332,12 +7332,10 @@ int32 Bot::CalcBotFocusEffect(BotfocusType bottype, uint16 focus_id, uint16 spel break; } -#if EQDEBUG >= 6 //this spits up a lot of garbage when calculating spell focuses //since they have all kinds of extra effects on them. default: - LogFile->write(EQEmuLog::Normal, "CalcFocusEffect: unknown effectid %d", focus_spell.effectid[i]); -#endif + Log.Out(Logs::General, Logs::Spells, "CalcFocusEffect: unknown effectid %d", focus_spell.effectid[i]); } } //Check for spell skill limits. @@ -7380,7 +7378,7 @@ float Bot::GetProcChances(float ProcBonus, uint16 hand) { ProcChance += ProcChance*ProcBonus / 100.0f; } - mlog(COMBAT__PROCS, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus); + Log.Out(Logs::Detail, Logs::Combat, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus); return ProcChance; } @@ -7416,7 +7414,7 @@ bool Bot::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte) ///////////////////////////////////////////////////////// if (IsEnraged() && !other->BehindMob(this, other->GetX(), other->GetY())) { damage = -3; - mlog(COMBAT__DAMAGE, "I am enraged, riposting frontal attack."); + Log.Out(Logs::Detail, Logs::Combat, "I am enraged, riposting frontal attack."); } ///////////////////////////////////////////////////////// @@ -7558,7 +7556,7 @@ bool Bot::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte) } } - mlog(COMBAT__DAMAGE, "Final damage after all avoidances: %d", damage); + Log.Out(Logs::Detail, Logs::Combat, "Final damage after all avoidances: %d", damage); if (damage < 0) return true; @@ -7611,14 +7609,14 @@ bool Bot::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse) uint16 levelreq = aabonuses.FinishingBlowLvl[0]; if(defender->GetLevel() <= levelreq && (chance >= zone->random.Int(0, 1000))){ - mlog(COMBAT__ATTACKS, "Landed a finishing blow: levelreq at %d, other level %d", levelreq , defender->GetLevel()); + Log.Out(Logs::Detail, Logs::Combat, "Landed a finishing blow: levelreq at %d, other level %d", levelreq , defender->GetLevel()); entity_list.MessageClose_StringID(this, false, 200, MT_CritMelee, FINISHING_BLOW, GetName()); defender->Damage(this, damage, SPELL_UNKNOWN, skillinuse); return true; } else { - mlog(COMBAT__ATTACKS, "FAILED a finishing blow: levelreq at %d, other level %d", levelreq , defender->GetLevel()); + Log.Out(Logs::Detail, Logs::Combat, "FAILED a finishing blow: levelreq at %d, other level %d", levelreq , defender->GetLevel()); return false; } } @@ -7626,7 +7624,7 @@ bool Bot::TryFinishingBlow(Mob *defender, SkillUseTypes skillinuse) } void Bot::DoRiposte(Mob* defender) { - mlog(COMBAT__ATTACKS, "Preforming a riposte"); + Log.Out(Logs::Detail, Logs::Combat, "Preforming a riposte"); if (!defender) return; @@ -7639,7 +7637,7 @@ void Bot::DoRiposte(Mob* defender) { defender->GetItemBonuses().GiveDoubleRiposte[0]; if(DoubleRipChance && (DoubleRipChance >= zone->random.Int(0, 100))) { - mlog(COMBAT__ATTACKS, "Preforming a double riposte (%d percent chance)", DoubleRipChance); + Log.Out(Logs::Detail, Logs::Combat, "Preforming a double riposte (%d percent chance)", DoubleRipChance); defender->Attack(this, MainPrimary, true); } @@ -8209,7 +8207,7 @@ bool Bot::TryHeadShot(Mob* defender, SkillUseTypes skillInUse) { float AttackerChance = 0.20f + ((float)(rangerLevel - 51) * 0.005f); float DefenderChance = (float)zone->random.Real(0.00f, 1.00f); if(AttackerChance > DefenderChance) { - mlog(COMBAT__ATTACKS, "Landed a headshot: Attacker chance was %f and Defender chance was %f.", AttackerChance, DefenderChance); + Log.Out(Logs::Detail, Logs::Combat, "Landed a headshot: Attacker chance was %f and Defender chance was %f.", AttackerChance, DefenderChance); // WildcardX: At the time I wrote this, there wasnt a string id for something like HEADSHOT_BLOW //entity_list.MessageClose_StringID(this, false, 200, MT_CritMelee, FINISHING_BLOW, GetName()); entity_list.MessageClose(this, false, 200, MT_CritMelee, "%s has scored a leathal HEADSHOT!", GetName()); @@ -8217,7 +8215,7 @@ bool Bot::TryHeadShot(Mob* defender, SkillUseTypes skillInUse) { Result = true; } else { - mlog(COMBAT__ATTACKS, "FAILED a headshot: Attacker chance was %f and Defender chance was %f.", AttackerChance, DefenderChance); + Log.Out(Logs::Detail, Logs::Combat, "FAILED a headshot: Attacker chance was %f and Defender chance was %f.", AttackerChance, DefenderChance); } } } @@ -8443,11 +8441,11 @@ void Bot::ProcessGuildInvite(Client* guildOfficer, Bot* botToGuild) { return; } - // mlog(GUILDS__ACTIONS, "Inviting %s (%d) into guild %s (%d)", botToGuild->GetName(), botToGuild->GetBotID(), guild_mgr.GetGuildName(client->GuildID()), client->GuildID()); + // Log.Out(Logs::Detail, Logs::Guilds, "Inviting %s (%d) into guild %s (%d)", botToGuild->GetName(), botToGuild->GetBotID(), guild_mgr.GetGuildName(client->GuildID()), client->GuildID()); SetBotGuildMembership(botToGuild->GetBotID(), guildOfficer->GuildID(), GUILD_MEMBER); - //_log(GUILDS__REFRESH, "Sending char refresh for BOT %s from guild %d to world", botToGuild->GetName(), guildOfficer->GuildID(); + //Log.LogDebugType(Logs::Detail, Logs::Guilds, "Sending char refresh for BOT %s from guild %d to world", botToGuild->GetName(), guildOfficer->GuildID(); ServerPacket* pack = new ServerPacket(ServerOP_GuildCharRefresh, sizeof(ServerGuildCharRefresh_Struct)); ServerGuildCharRefresh_Struct *s = (ServerGuildCharRefresh_Struct *) pack->pBuffer; @@ -8550,7 +8548,7 @@ int32 Bot::CalcMaxMana() { } default: { - LogFile->write(EQEmuLog::Debug, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); + Log.Out(Logs::General, Logs::None, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); max_mana = 0; break; } @@ -9078,7 +9076,7 @@ bool Bot::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, int32 cast_t if(zone && !zone->IsSpellBlocked(spell_id, GetPosition())) { - mlog(SPELLS__CASTING, "CastSpell called for spell %s (%d) on entity %d, slot %d, time %d, mana %d, from item slot %d", + Log.Out(Logs::Detail, Logs::Spells, "CastSpell called for spell %s (%d) on entity %d, slot %d, time %d, mana %d, from item slot %d", spells[spell_id].name, spell_id, target_id, slot, cast_time, mana_cost, (item_slot==0xFFFFFFFF)?999:item_slot); if(casting_spell_id == spell_id) @@ -9086,7 +9084,7 @@ bool Bot::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, int32 cast_t if(GetClass() != BARD) { if(!IsValidSpell(spell_id) || casting_spell_id || delaytimer || spellend_timer.Enabled() || IsStunned() || IsFeared() || IsMezzed() || (IsSilenced() && !IsDiscipline(spell_id)) || (IsAmnesiad() && IsDiscipline(spell_id))) { - mlog(SPELLS__CASTING_ERR, "Spell casting canceled: not able to cast now. Valid? %d, casting %d, waiting? %d, spellend? %d, stunned? %d, feared? %d, mezed? %d, silenced? %d", + Log.Out(Logs::Detail, Logs::Spells, "Spell casting canceled: not able to cast now. Valid? %d, casting %d, waiting? %d, spellend? %d, stunned? %d, feared? %d, mezed? %d, silenced? %d", IsValidSpell(spell_id), casting_spell_id, delaytimer, spellend_timer.Enabled(), IsStunned(), IsFeared(), IsMezzed(), IsSilenced() ); if(IsSilenced() && !IsDiscipline(spell_id)) Message_StringID(13, SILENCED_STRING); @@ -9107,7 +9105,7 @@ bool Bot::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, int32 cast_t //cannot cast under deivne aura if(DivineAura()) { - mlog(SPELLS__CASTING_ERR, "Spell casting canceled: cannot cast while Divine Aura is in effect."); + Log.Out(Logs::Detail, Logs::Spells, "Spell casting canceled: cannot cast while Divine Aura is in effect."); InterruptSpell(173, 0x121, false); return(false); } @@ -9121,7 +9119,7 @@ bool Bot::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, int32 cast_t InterruptSpell(fizzle_msg, 0x121, spell_id); uint32 use_mana = ((spells[spell_id].mana) / 4); - mlog(SPELLS__CASTING_ERR, "Spell casting canceled: fizzled. %d mana has been consumed", use_mana); + Log.Out(Logs::Detail, Logs::Spells, "Spell casting canceled: fizzled. %d mana has been consumed", use_mana); // fizzle 1/4 the mana away SetMana(GetMana() - use_mana); @@ -9129,7 +9127,7 @@ bool Bot::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, int32 cast_t } if (HasActiveSong()) { - mlog(SPELLS__BARDS, "Casting a new spell/song while singing a song. Killing old song %d.", bardsong); + Log.Out(Logs::Detail, Logs::Spells, "Casting a new spell/song while singing a song. Killing old song %d.", bardsong); //Note: this does NOT tell the client //_StopSong(); bardsong = 0; @@ -9258,7 +9256,7 @@ bool Bot::IsImmuneToSpell(uint16 spell_id, Mob *caster) { if(caster->IsBot()) { if(spells[spell_id].targettype == ST_Undead) { if((GetBodyType() != BT_SummonedUndead) && (GetBodyType() != BT_Undead) && (GetBodyType() != BT_Vampire)) { - mlog(SPELLS__RESISTS, "Bot's target is not an undead."); + Log.Out(Logs::Detail, Logs::Spells, "Bot's target is not an undead."); return true; } } @@ -9268,13 +9266,13 @@ bool Bot::IsImmuneToSpell(uint16 spell_id, Mob *caster) { && (GetBodyType() != BT_Summoned2) && (GetBodyType() != BT_Summoned3) ) { - mlog(SPELLS__RESISTS, "Bot's target is not a summoned creature."); + Log.Out(Logs::Detail, Logs::Spells, "Bot's target is not a summoned creature."); return true; } } } - mlog(SPELLS__RESISTS, "No bot immunities to spell %d found.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "No bot immunities to spell %d found.", spell_id); } } @@ -15456,7 +15454,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl // according to Rogean, Live NPCs will just cast through walls/floors, no problem.. // // This check was put in to address an idle-mob CPU issue - _log(AI__ERROR, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); + Log.Out(Logs::General, Logs::Error, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); return(false); } diff --git a/zone/bot.h b/zone/bot.h index b783c150a..2f87fc727 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -12,7 +12,7 @@ #include "zonedb.h" #include "string_ids.h" #include "../common/misc_functions.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "guild_mgr.h" #include "worldserver.h" diff --git a/zone/botspellsai.cpp b/zone/botspellsai.cpp index c6c5e920c..c28a3381c 100644 --- a/zone/botspellsai.cpp +++ b/zone/botspellsai.cpp @@ -950,7 +950,7 @@ bool Bot::AI_PursueCastCheck() { AIautocastspell_timer->Disable(); //prevent the timer from going off AGAIN while we are casting. - mlog(AI__SPELLS, "Bot Engaged (pursuing) autocast check triggered. Trying to cast offensive spells."); + Log.Out(Logs::Detail, Logs::AI, "Bot Engaged (pursuing) autocast check triggered. Trying to cast offensive spells."); if(!AICastSpell(GetTarget(), 100, SpellType_Snare)) { if(!AICastSpell(GetTarget(), 100, SpellType_Lifetap)) { @@ -1055,7 +1055,7 @@ bool Bot::AI_EngagedCastCheck() { BotStanceType botStance = GetBotStance(); bool mayGetAggro = HasOrMayGetAggro(); - mlog(AI__SPELLS, "Engaged autocast check triggered (BOTS). Trying to cast healing spells then maybe offensive spells."); + Log.Out(Logs::Detail, Logs::AI, "Engaged autocast check triggered (BOTS). Trying to cast healing spells then maybe offensive spells."); if(botClass == CLERIC) { if(!AICastSpell(GetTarget(), GetChanceToCastBySpellType(SpellType_Escape), SpellType_Escape)) { diff --git a/zone/client.cpp b/zone/client.cpp index feb47dc6f..51ac636e6 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include @@ -34,6 +34,7 @@ extern volatile bool RunLoops; +#include "../common/eqemu_logsys.h" #include "../common/features.h" #include "../common/spdat.h" #include "../common/guilds.h" @@ -47,7 +48,7 @@ extern volatile bool RunLoops; #include "petitions.h" #include "command.h" #include "string_ids.h" -#include "client_logs.h" + #include "guild_mgr.h" #include "quest_parser_collection.h" #include "queryserv.h" @@ -328,7 +329,7 @@ Client::~Client() { ToggleBuyerMode(false); if(conn_state != ClientConnectFinished) { - LogFile->write(EQEmuLog::Debug, "Client '%s' was destroyed before reaching the connected state:", GetName()); + Log.Out(Logs::General, Logs::None, "Client '%s' was destroyed before reaching the connected state:", GetName()); ReportConnectingState(); } @@ -337,10 +338,6 @@ Client::~Client() { m_tradeskill_object = nullptr; } -#ifdef CLIENT_LOGS - client_logs.unsubscribeAll(this); -#endif - ChangeSQLLog(nullptr); if(IsDueling() && GetDuelTarget() != 0) { Entity* entity = entity_list.GetID(GetDuelTarget()); @@ -426,31 +423,31 @@ void Client::SendLogoutPackets() { void Client::ReportConnectingState() { switch(conn_state) { case NoPacketsReceived: //havent gotten anything - LogFile->write(EQEmuLog::Debug, "Client has not sent us an initial zone entry packet."); + Log.Out(Logs::General, Logs::None, "Client has not sent us an initial zone entry packet."); break; case ReceivedZoneEntry: //got the first packet, loading up PP - LogFile->write(EQEmuLog::Debug, "Client sent initial zone packet, but we never got their player info from the database."); + Log.Out(Logs::General, Logs::None, "Client sent initial zone packet, but we never got their player info from the database."); break; case PlayerProfileLoaded: //our DB work is done, sending it - LogFile->write(EQEmuLog::Debug, "We were sending the player profile, tributes, tasks, spawns, time and weather, but never finished."); + Log.Out(Logs::General, Logs::None, "We were sending the player profile, tributes, tasks, spawns, time and weather, but never finished."); break; case ZoneInfoSent: //includes PP, tributes, tasks, spawns, time and weather - LogFile->write(EQEmuLog::Debug, "We successfully sent player info and spawns, waiting for client to request new zone."); + Log.Out(Logs::General, Logs::None, "We successfully sent player info and spawns, waiting for client to request new zone."); break; case NewZoneRequested: //received and sent new zone request - LogFile->write(EQEmuLog::Debug, "We received client's new zone request, waiting for client spawn request."); + Log.Out(Logs::General, Logs::None, "We received client's new zone request, waiting for client spawn request."); break; case ClientSpawnRequested: //client sent ReqClientSpawn - LogFile->write(EQEmuLog::Debug, "We received the client spawn request, and were sending objects, doors, zone points and some other stuff, but never finished."); + Log.Out(Logs::General, Logs::None, "We received the client spawn request, and were sending objects, doors, zone points and some other stuff, but never finished."); break; case ZoneContentsSent: //objects, doors, zone points - LogFile->write(EQEmuLog::Debug, "The rest of the zone contents were successfully sent, waiting for client ready notification."); + Log.Out(Logs::General, Logs::None, "The rest of the zone contents were successfully sent, waiting for client ready notification."); break; case ClientReadyReceived: //client told us its ready, send them a bunch of crap like guild MOTD, etc - LogFile->write(EQEmuLog::Debug, "We received client ready notification, but never finished Client::CompleteConnect"); + Log.Out(Logs::General, Logs::None, "We received client ready notification, but never finished Client::CompleteConnect"); break; case ClientConnectFinished: //client finally moved to finished state, were done here - LogFile->write(EQEmuLog::Debug, "Client is successfully connected."); + Log.Out(Logs::General, Logs::None, "Client is successfully connected."); break; }; } @@ -640,9 +637,7 @@ bool Client::SendAllPackets() { if(eqs) eqs->FastQueuePacket((EQApplicationPacket **)&cp->app, cp->ack_req); iterator.RemoveCurrent(); -#if EQDEBUG >= 6 - LogFile->write(EQEmuLog::Normal, "Transmitting a packet"); -#endif + Log.Out(Logs::Moderate, Logs::Client_Server_Packet, "Transmitting a packet"); } return true; } @@ -690,10 +685,7 @@ void Client::ChannelMessageReceived(uint8 chan_num, uint8 language, uint8 lang_s char message[4096]; strn0cpy(message, orig_message, sizeof(message)); - - #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug,"Client::ChannelMessageReceived() Channel:%i message:'%s'", chan_num, message); - #endif + Log.Out(Logs::Detail, Logs::Zone_Server, "Client::ChannelMessageReceived() Channel:%i message:'%s'", chan_num, message); if (targetname == nullptr) { targetname = (!GetTarget()) ? "" : GetTarget()->GetName(); @@ -1501,9 +1493,7 @@ void Client::UpdateAdmin(bool iFromDB) { if(m_pp.gm) { -#if EQDEBUG >= 5 - printf("%s is a GM\n", GetName()); -#endif + Log.Out(Logs::Moderate, Logs::Zone_Server, "%s - %s is a GM", __FUNCTION__ , GetName()); // no need for this, having it set in pp you already start as gm // and it's also set in your spawn packet so other people see it too // SendAppearancePacket(AT_GM, 1, false); @@ -1703,7 +1693,6 @@ void Client::SendManaUpdatePacket() { SendEnduranceUpdate(); } - //std::cout << "Sending mana update: " << (cur_mana - last_reported_mana) << std::endl; if (last_reported_mana != cur_mana || last_reported_endur != cur_end) { @@ -1908,7 +1897,7 @@ void Client::ReadBook(BookRequest_Struct *book) { if (booktxt2[0] != '\0') { #if EQDEBUG >= 6 - LogFile->write(EQEmuLog::Normal,"Client::ReadBook() textfile:%s Text:%s", txtfile, booktxt2.c_str()); + Log.Out(Logs::General, Logs::Normal, "Client::ReadBook() textfile:%s Text:%s", txtfile, booktxt2.c_str()); #endif EQApplicationPacket* outapp = new EQApplicationPacket(OP_ReadBook, length + sizeof(BookText_Struct)); @@ -2102,7 +2091,7 @@ void Client::AddMoneyToPP(uint64 copper, bool updateclient){ SaveCurrency(); - LogFile->write(EQEmuLog::Debug, "Client::AddMoneyToPP() %s should have: plat:%i gold:%i silver:%i copper:%i", GetName(), m_pp.platinum, m_pp.gold, m_pp.silver, m_pp.copper); + Log.Out(Logs::General, Logs::None, "Client::AddMoneyToPP() %s should have: plat:%i gold:%i silver:%i copper:%i", GetName(), m_pp.platinum, m_pp.gold, m_pp.silver, m_pp.copper); } void Client::EVENT_ITEM_ScriptStopReturn(){ @@ -2142,7 +2131,7 @@ void Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 plat SaveCurrency(); #if (EQDEBUG>=5) - LogFile->write(EQEmuLog::Debug, "Client::AddMoneyToPP() %s should have: plat:%i gold:%i silver:%i copper:%i", + Log.Out(Logs::General, Logs::None, "Client::AddMoneyToPP() %s should have: plat:%i gold:%i silver:%i copper:%i", GetName(), m_pp.platinum, m_pp.gold, m_pp.silver, m_pp.copper); #endif } @@ -2232,13 +2221,13 @@ bool Client::CheckIncreaseSkill(SkillUseTypes skillid, Mob *against_who, int cha if(zone->random.Real(0, 99) < Chance) { SetSkill(skillid, GetRawSkill(skillid) + 1); - _log(SKILLS__GAIN, "Skill %d at value %d successfully gain with %d%%chance (mod %d)", skillid, skillval, Chance, chancemodi); + Log.Out(Logs::Detail, Logs::Skills, "Skill %d at value %d successfully gain with %.4f%%chance (mod %d)", skillid, skillval, Chance, chancemodi); return true; } else { - _log(SKILLS__GAIN, "Skill %d at value %d failed to gain with %d%%chance (mod %d)", skillid, skillval, Chance, chancemodi); + Log.Out(Logs::Detail, Logs::Skills, "Skill %d at value %d failed to gain with %.4f%%chance (mod %d)", skillid, skillval, Chance, chancemodi); } } else { - _log(SKILLS__GAIN, "Skill %d at value %d cannot increase due to maxmum %d", skillid, skillval, maxskill); + Log.Out(Logs::Detail, Logs::Skills, "Skill %d at value %d cannot increase due to maxmum %d", skillid, skillval, maxskill); } return false; } @@ -2259,10 +2248,10 @@ void Client::CheckLanguageSkillIncrease(uint8 langid, uint8 TeacherSkill) { if(zone->random.Real(0,100) < Chance) { // if they make the roll IncreaseLanguageSkill(langid); // increase the language skill by 1 - _log(SKILLS__GAIN, "Language %d at value %d successfully gain with %d%%chance", langid, LangSkill, Chance); + Log.Out(Logs::Detail, Logs::Skills, "Language %d at value %d successfully gain with %.4f%%chance", langid, LangSkill, Chance); } else - _log(SKILLS__GAIN, "Language %d at value %d failed to gain with %d%%chance", langid, LangSkill, Chance); + Log.Out(Logs::Detail, Logs::Skills, "Language %d at value %d failed to gain with %.4f%%chance", langid, LangSkill, Chance); } } @@ -2361,7 +2350,7 @@ uint16 Client::GetMaxSkillAfterSpecializationRules(SkillUseTypes skillid, uint16 Save(); - LogFile->write(EQEmuLog::Normal, "Reset %s's caster specialization skills to 1. " + Log.Out(Logs::General, Logs::Normal, "Reset %s's caster specialization skills to 1. " "Too many specializations skills were above 50.", GetCleanName()); } @@ -3842,7 +3831,6 @@ void Client::KeyRingLoad() "WHERE char_id = '%i' ORDER BY item_id", character_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in Client::KeyRingLoad query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -3863,7 +3851,6 @@ void Client::KeyRingAdd(uint32 item_id) std::string query = StringFormat("INSERT INTO keyring(char_id, item_id) VALUES(%i, %i)", character_id, item_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in Doors::HandleClick query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -3903,7 +3890,6 @@ bool Client::IsDiscovered(uint32 itemid) { std::string query = StringFormat("SELECT count(*) FROM discovered_items WHERE item_id = '%lu'", itemid); auto results = database.QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in IsDiscovered query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -4548,14 +4534,14 @@ void Client::HandleLDoNOpen(NPC *target) { if(target->GetClass() != LDON_TREASURE) { - LogFile->write(EQEmuLog::Debug, "%s tried to open %s but %s was not a treasure chest.", + Log.Out(Logs::General, Logs::None, "%s tried to open %s but %s was not a treasure chest.", GetName(), target->GetName(), target->GetName()); return; } if(ComparativeDistanceNoZ(m_Position, target->GetPosition()) > RuleI(Adventure, LDoNTrapDistanceUse)) { - LogFile->write(EQEmuLog::Debug, "%s tried to open %s but %s was out of range", + Log.Out(Logs::General, Logs::None, "%s tried to open %s but %s was out of range", GetName(), target->GetName(), target->GetName()); Message(13, "Treasure chest out of range."); return; @@ -5290,7 +5276,6 @@ void Client::SendRewards() "ORDER BY reward_id", AccountID()); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Client::SendRewards(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -5358,7 +5343,6 @@ bool Client::TryReward(uint32 claim_id) { AccountID(), claim_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Client::TryReward(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -5384,16 +5368,12 @@ bool Client::TryReward(uint32 claim_id) { "WHERE account_id = %i AND reward_id = %i", AccountID(), claim_id); auto results = database.QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in Client::TryReward(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); } else { query = StringFormat("UPDATE account_rewards SET amount = (amount-1) " "WHERE account_id = %i AND reward_id = %i", AccountID(), claim_id); auto results = database.QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in Client::TryReward(): %s (%s)", query.c_str(), results.ErrorMessage().c_str()); } InternalVeteranReward ivr = (*iter); @@ -6207,7 +6187,7 @@ void Client::Doppelganger(uint16 spell_id, Mob *target, const char *name_overrid PetRecord record; if(!database.GetPetEntry(spells[spell_id].teleport_zone, &record)) { - LogFile->write(EQEmuLog::Error, "Unknown doppelganger spell id: %d, check pets table", spell_id); + Log.Out(Logs::General, Logs::Error, "Unknown doppelganger spell id: %d, check pets table", spell_id); Message(13, "Unable to find data for pet %s", spells[spell_id].teleport_zone); return; } @@ -6221,7 +6201,7 @@ void Client::Doppelganger(uint16 spell_id, Mob *target, const char *name_overrid const NPCType *npc_type = database.GetNPCType(pet.npc_id); if(npc_type == nullptr) { - LogFile->write(EQEmuLog::Error, "Unknown npc type for doppelganger spell id: %d", spell_id); + Log.Out(Logs::General, Logs::Error, "Unknown npc type for doppelganger spell id: %d", spell_id); Message(0,"Unable to find pet!"); return; } @@ -7772,7 +7752,6 @@ void Client::LoadAccountFlags() account_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in LoadAccountFlags query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -7787,7 +7766,6 @@ void Client::SetAccountFlag(std::string flag, std::string val) { account_id, flag.c_str(), val.c_str()); auto results = database.QueryDatabase(query); if(!results.Success()) { - std::cerr << "Error in SetAccountFlags query '" << query << "' " << results.ErrorMessage() << std::endl; return; } @@ -8148,7 +8126,7 @@ void Client::Consume(const Item_Struct *item, uint8 type, int16 slot, bool auto_ entity_list.MessageClose_StringID(this, true, 50, 0, EATING_MESSAGE, GetName(), item->Name); #if EQDEBUG >= 5 - LogFile->write(EQEmuLog::Debug, "Eating from slot:%i", (int)slot); + Log.Out(Logs::General, Logs::None, "Eating from slot:%i", (int)slot); #endif } else @@ -8165,7 +8143,7 @@ void Client::Consume(const Item_Struct *item, uint8 type, int16 slot, bool auto_ entity_list.MessageClose_StringID(this, true, 50, 0, DRINKING_MESSAGE, GetName(), item->Name); #if EQDEBUG >= 5 - LogFile->write(EQEmuLog::Debug, "Drinking from slot:%i", (int)slot); + Log.Out(Logs::General, Logs::None, "Drinking from slot:%i", (int)slot); #endif } } @@ -8288,11 +8266,11 @@ std::string Client::TextLink::GenerateLink() if ((m_Link.length() == 0) || (m_Link.length() > 250)) { m_Error = true; m_Link = ""; - _log(CHANNELS__ERROR, "TextLink::GenerateLink() failed to generate a useable text link (LinkType: %i, Lengths: {link: %u, body: %u, text: %u})", + Log.Out(Logs::General, Logs::Error, "TextLink::GenerateLink() failed to generate a useable text link (LinkType: %i, Lengths: {link: %u, body: %u, text: %u})", m_LinkType, m_Link.length(), m_LinkBody.length(), m_LinkText.length()); #if EQDEBUG >= 5 - _log(CHANNELS__ERROR, ">> LinkBody: %s", m_LinkBody.c_str()); - _log(CHANNELS__ERROR, ">> LinkText: %s", m_LinkText.c_str()); + Log.Out(Logs::General, Logs::Error, ">> LinkBody: %s", m_LinkBody.c_str()); + Log.Out(Logs::General, Logs::Error, ">> LinkText: %s", m_LinkText.c_str()); #endif } diff --git a/zone/client_logs.cpp b/zone/client_logs.cpp deleted file mode 100644 index 4aba31159..000000000 --- a/zone/client_logs.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2004 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ -#include "../common/debug.h" -#include "../common/features.h" - -#ifdef CLIENT_LOGS -#include "client_logs.h" -#include "client.h" -#include - -ClientLogs client_logs; - -char ClientLogs::_buffer[MAX_CLIENT_LOG_MESSAGE_LENGTH+1]; - -void ClientLogs::subscribe(EQEmuLog::LogIDs id, Client *c) { - if(id >= EQEmuLog::MaxLogID) - return; - if(c == nullptr) - return; - - std::vector::iterator cur,end; - cur = entries[id].begin(); - end = entries[id].end(); - for(; cur != end; ++cur) { - if(*cur == c) { - printf("%s was already subscribed to %d\n", c->GetName(), id); - return; - } - } - - printf("%s has been subscribed to %d\n", c->GetName(), id); - entries[id].push_back(c); -} - -void ClientLogs::unsubscribe(EQEmuLog::LogIDs id, Client *c) { - if(id >= EQEmuLog::MaxLogID) - return; - if(c == nullptr) - return; - - std::vector::iterator cur,end; - cur = entries[id].begin(); - end = entries[id].end(); - for(; cur != end; ++cur) { - if(*cur == c) { - entries[id].erase(cur); - return; - } - } -} - -void ClientLogs::subscribeAll(Client *c) { - if(c == nullptr) - return; - int r; - for(r = EQEmuLog::Status; r < EQEmuLog::MaxLogID; r++) { - subscribe((EQEmuLog::LogIDs)r, c); - } -} - -void ClientLogs::unsubscribeAll(Client *c) { - if(c == nullptr) - return; - int r; - for(r = EQEmuLog::Status; r < EQEmuLog::MaxLogID; r++) { - unsubscribe((EQEmuLog::LogIDs)r, c); - } -} - -void ClientLogs::clear() { - int r; - for(r = EQEmuLog::Status; r < EQEmuLog::MaxLogID; r++) { - entries[r].clear(); - } -} - -void ClientLogs::msg(EQEmuLog::LogIDs id, const char *buf) { - if(id >= EQEmuLog::MaxLogID) - return; - std::vector::iterator cur,end; - cur = entries[id].begin(); - end = entries[id].end(); - for(; cur != end; ++cur) { - if(!(*cur)->InZone()) - continue; - - (*cur)->Message(CLIENT_LOG_CHANNEL, buf); - } -} - -void ClientLogs::EQEmuIO_buf(EQEmuLog::LogIDs id, const char *buf, uint8 size, uint32 count) { - if(size != 1) - return; //cannot print multibyte data - if(buf[0] == '\n' || buf[0] == '\r') - return; //skip new lines... - if(count > MAX_CLIENT_LOG_MESSAGE_LENGTH) - count = MAX_CLIENT_LOG_MESSAGE_LENGTH; - memcpy(_buffer, buf, count); - _buffer[count] = '\0'; - client_logs.msg(id, _buffer); -} - -void ClientLogs::EQEmuIO_fmt(EQEmuLog::LogIDs id, const char *fmt, va_list ap) { - if(fmt[0] == '\n' || fmt[0] == '\r') - return; //skip new lines... - vsnprintf(_buffer, MAX_CLIENT_LOG_MESSAGE_LENGTH, fmt, ap); - _buffer[MAX_CLIENT_LOG_MESSAGE_LENGTH] = '\0'; - client_logs.msg(id, _buffer); -} - -void ClientLogs::EQEmuIO_pva(EQEmuLog::LogIDs id, const char *prefix, const char *fmt, va_list ap) { - if(fmt[0] == '\n' || fmt[0] == '\r') - return; //skip new lines... - char *buf = _buffer; - int plen = snprintf(buf, MAX_CLIENT_LOG_MESSAGE_LENGTH, "%s", prefix); - buf += plen; - vsnprintf(buf, MAX_CLIENT_LOG_MESSAGE_LENGTH-plen, fmt, ap); - _buffer[MAX_CLIENT_LOG_MESSAGE_LENGTH] = '\0'; - client_logs.msg(id, _buffer); -} - -#endif //CLIENT_LOGS - - - diff --git a/zone/client_logs.h b/zone/client_logs.h deleted file mode 100644 index 4db83a6b1..000000000 --- a/zone/client_logs.h +++ /dev/null @@ -1,61 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2004 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef CLIENT_LOGS_H -#define CLIENT_LOGS_H - -#include "../common/debug.h" -#include "../common/features.h" - -#ifdef CLIENT_LOGS - -#define CLIENT_LOG_CHANNEL MT_Chat10Echo - -//trim messages to this length before sending to any clients -#define MAX_CLIENT_LOG_MESSAGE_LENGTH 512 - -#include - -class Client; - -class ClientLogs { -public: - static void EQEmuIO_buf(EQEmuLog::LogIDs id, const char *buf, uint8 size, uint32 count); - static void EQEmuIO_fmt(EQEmuLog::LogIDs id, const char *fmt, va_list ap); - static void EQEmuIO_pva(EQEmuLog::LogIDs id, const char *prefix, const char *fmt, va_list ap); - - void subscribe(EQEmuLog::LogIDs id, Client *c); - void unsubscribe(EQEmuLog::LogIDs id, Client *c); - void subscribeAll(Client *c); - void unsubscribeAll(Client *c); - void clear(); //unsubscribes everybody - - void msg(EQEmuLog::LogIDs id, const char *buf); - -protected: - - std::vector entries[EQEmuLog::MaxLogID]; - - static char _buffer[MAX_CLIENT_LOG_MESSAGE_LENGTH+1]; -}; - -extern ClientLogs client_logs; - -#endif //CLIENT_LOGS -#endif - diff --git a/zone/client_mods.cpp b/zone/client_mods.cpp index 1d64cd2c0..fd6045621 100644 --- a/zone/client_mods.cpp +++ b/zone/client_mods.cpp @@ -16,8 +16,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" -#include "../common/logsys.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" + #include "../common/rulesys.h" #include "../common/spdat.h" @@ -825,7 +826,7 @@ int32 Client::acmod() { return (65 + ((agility-300) / 21)); } #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Error, "Error in Client::acmod(): Agility: %i, Level: %i",agility,level); + Log.Out(Logs::General, Logs::Error, "Error in Client::acmod(): Agility: %i, Level: %i",agility,level); #endif return 0; }; @@ -934,7 +935,7 @@ int32 Client::CalcMaxMana() break; } default: { - LogFile->write(EQEmuLog::Debug, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); + Log.Out(Logs::General, Logs::None, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); max_mana = 0; break; } @@ -955,7 +956,7 @@ int32 Client::CalcMaxMana() } #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug, "Client::CalcMaxMana() called for %s - returning %d", GetName(), max_mana); + Log.Out(Logs::General, Logs::None, "Client::CalcMaxMana() called for %s - returning %d", GetName(), max_mana); #endif return max_mana; } @@ -1045,14 +1046,14 @@ int32 Client::CalcBaseMana() break; } default: { - LogFile->write(EQEmuLog::Debug, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); + Log.Out(Logs::General, Logs::None, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); max_m = 0; break; } } #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug, "Client::CalcBaseMana() called for %s - returning %d", GetName(), max_m); + Log.Out(Logs::General, Logs::None, "Client::CalcBaseMana() called for %s - returning %d", GetName(), max_m); #endif return max_m; } @@ -1895,7 +1896,7 @@ uint32 Mob::GetInstrumentMod(uint16 spell_id) const if (effectmod > effectmodcap) effectmod = effectmodcap; - _log(SPELLS__BARDS, "%s::GetInstrumentMod() spell=%d mod=%d modcap=%d\n", + Log.Out(Logs::Detail, Logs::Spells, "%s::GetInstrumentMod() spell=%d mod=%d modcap=%d\n", GetName(), spell_id, effectmod, effectmodcap); return effectmod; diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 46c00bf3f..dc1dff701 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -15,7 +15,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" +#include "../common/opcodemgr.h" #include #include #include @@ -396,11 +398,10 @@ void ClearMappedOpcode(EmuOpcode op) // client methods int Client::HandlePacket(const EQApplicationPacket *app) { - if(is_log_enabled(CLIENT__NET_IN_TRACE)) { + if(Log.log_settings[Logs::LogCategory::Netcode].log_to_console > 0) { char buffer[64]; app->build_header_dump(buffer); - mlog(CLIENT__NET_IN_TRACE, "Dispatch opcode: %s", buffer); - mpkt(CLIENT__NET_IN_TRACE, app); + Log.Out(Logs::Detail, Logs::Client_Server_Packet, "Dispatch opcode: %s", buffer); } EmuOpcode opcode = app->GetOpcode(); @@ -415,7 +416,7 @@ int Client::HandlePacket(const EQApplicationPacket *app) #ifdef SOLAR if(0 && opcode != OP_ClientUpdate) { - LogFile->write(EQEmuLog::Debug,"HandlePacket() OPCODE debug enabled client %s", GetName()); + Log.LogDebug(Logs::General,"HandlePacket() OPCODE debug enabled client %s", GetName()); std::cerr << "OPCODE: " << std::hex << std::setw(4) << std::setfill('0') << opcode << std::dec << ", size: " << app->size << std::endl; DumpPacket(app); } @@ -430,7 +431,7 @@ int Client::HandlePacket(const EQApplicationPacket *app) parse->EventPlayer(EVENT_UNHANDLED_OPCODE, this, "", 1, &args); #if EQDEBUG >= 10 - LogFile->write(EQEmuLog::Error, "HandlePacket() Opcode error: Unexpected packet during CLIENT_CONNECTING: opcode:" + Log.Out(Logs::General, Logs::Error, "HandlePacket() Opcode error: Unexpected packet during CLIENT_CONNECTING: opcode:" " %s (#%d eq=0x%04x), size: %i", OpcodeNames[opcode], opcode, 0, app->size); DumpPacket(app); #endif @@ -458,18 +459,18 @@ int Client::HandlePacket(const EQApplicationPacket *app) args.push_back(const_cast(app)); parse->EventPlayer(EVENT_UNHANDLED_OPCODE, this, "", 0, &args); -#if (EQDEBUG >= 10) - char buffer[64]; - app->build_header_dump(buffer); - mlog(CLIENT__NET_ERR, "Unhandled incoming opcode: %s", buffer); - - if(app->size < 1000) - DumpPacket(app, app->size); - else{ - std::cout << "Dump limited to 1000 characters:\n"; - DumpPacket(app, 1000); + char buffer[64]; + Log.Out(Logs::Detail, Logs::Client_Server_Packet, "Unhandled incoming opcode: %s - 0x%04x", OpcodeManager::EmuToName(app->GetOpcode()), app->GetOpcode()); + if (Log.log_settings[Logs::Client_Server_Packet].log_to_console > 0){ + app->build_header_dump(buffer); + if (app->size < 1000) + DumpPacket(app, app->size); + else{ + std::cout << "Dump limited to 1000 characters:\n"; + DumpPacket(app, 1000); + } } -#endif + break; } @@ -482,7 +483,7 @@ int Client::HandlePacket(const EQApplicationPacket *app) case CLIENT_LINKDEAD: break; default: - LogFile->write(EQEmuLog::Debug, "Unknown client_state: %d\n", client_state); + Log.Out(Logs::General, Logs::None, "Unknown client_state: %d\n", client_state); break; } @@ -758,7 +759,7 @@ void Client::CompleteConnect() //enforce some rules.. if (!CanBeInZone()) { - _log(CLIENT__ERROR, "Kicking char from zone, not allowed here"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Kicking char from zone, not allowed here"); GoToSafeCoords(database.GetZoneID("arena"), 0); return; } @@ -965,7 +966,7 @@ return; void Client::Handle_Connect_OP_ApproveZone(const EQApplicationPacket *app) { if (app->size != sizeof(ApproveZone_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size on OP_ApproveZone: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_ApproveZone: Expected %i, Got %i", sizeof(ApproveZone_Struct), app->size); return; } @@ -978,14 +979,14 @@ void Client::Handle_Connect_OP_ApproveZone(const EQApplicationPacket *app) void Client::Handle_Connect_OP_ClientError(const EQApplicationPacket *app) { if (app->size != sizeof(ClientError_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size on OP_ClientError: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_ClientError: Expected %i, Got %i", sizeof(ClientError_Struct), app->size); return; } // Client reporting error to server ClientError_Struct* error = (ClientError_Struct*)app->pBuffer; - LogFile->write(EQEmuLog::Error, "Client error: %s", error->character_name); - LogFile->write(EQEmuLog::Error, "Error message: %s", error->message); + Log.Out(Logs::General, Logs::Error, "Client error: %s", error->character_name); + Log.Out(Logs::General, Logs::Error, "Error message: %s", error->message); Message(13, error->message); #if (EQDEBUG>=5) DumpPacket(app); @@ -1179,7 +1180,7 @@ void Client::Handle_Connect_OP_SendTributes(const EQApplicationPacket *app) void Client::Handle_Connect_OP_SetServerFilter(const EQApplicationPacket *app) { if (app->size != sizeof(SetServerFilter_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized OP_SetServerFilter"); + Log.Out(Logs::General, Logs::Error, "Received invalid sized OP_SetServerFilter"); DumpPacket(app); return; } @@ -1196,7 +1197,7 @@ void Client::Handle_Connect_OP_SpawnAppearance(const EQApplicationPacket *app) void Client::Handle_Connect_OP_TGB(const EQApplicationPacket *app) { if (app->size != sizeof(uint32)) { - LogFile->write(EQEmuLog::Error, "Invalid size on OP_TGB: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_TGB: Expected %i, Got %i", sizeof(uint32), app->size); return; } @@ -1314,14 +1315,14 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) ClientVersionBit = 1 << (static_cast(m_ClientVersion) - 1); bool siv = m_inv.SetInventoryVersion(m_ClientVersion); - LogFile->write(EQEmuLog::Debug, "%s inventory version to %s(%i)", (siv ? "Succeeded in setting" : "Failed to set"), ClientVersionName(m_ClientVersion), m_ClientVersion); + Log.Out(Logs::General, Logs::None, "%s inventory version to %s(%i)", (siv ? "Succeeded in setting" : "Failed to set"), ClientVersionName(m_ClientVersion), m_ClientVersion); /* Antighost code tmp var is so the search doesnt find this object */ Client* client = entity_list.GetClientByName(cze->char_name); if (!zone->GetAuth(ip, cze->char_name, &WID, &account_id, &character_id, &admin, lskey, &tellsoff)) { - LogFile->write(EQEmuLog::Error, "GetAuth() returned false kicking client"); + Log.Out(Logs::General, Logs::Error, "GetAuth() returned false kicking client"); if (client != 0) { client->Save(); client->Kick(); @@ -1337,7 +1338,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) struct in_addr ghost_addr; ghost_addr.s_addr = eqs->GetRemoteIP(); - LogFile->write(EQEmuLog::Error,"Ghosting client: Account ID:%i Name:%s Character:%s IP:%s", + Log.Out(Logs::General, Logs::Error, "Ghosting client: Account ID:%i Name:%s Character:%s IP:%s", client->AccountID(), client->AccountName(), client->GetName(), inet_ntoa(ghost_addr)); client->Save(); client->Disconnect(); @@ -1727,7 +1728,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) p_timers.SetCharID(CharacterID()); if (!p_timers.Load(&database)) { - LogFile->write(EQEmuLog::Error, "Unable to load ability timers from the database for %s (%i)!", GetCleanName(), CharacterID()); + Log.Out(Logs::General, Logs::Error, "Unable to load ability timers from the database for %s (%i)!", GetCleanName(), CharacterID()); } /* Load Spell Slot Refresh from Currently Memoried Spells */ @@ -1896,8 +1897,7 @@ void Client::Handle_0x0193(const EQApplicationPacket *app) void Client::Handle_OP_AAAction(const EQApplicationPacket *app) { - mlog(AA__IN, "Received OP_AAAction"); - mpkt(AA__IN, app); + Log.Out(Logs::Detail, Logs::AA, "Received OP_AAAction"); if (app->size != sizeof(AA_Action)){ printf("Error! OP_AAAction size didnt match!\n"); @@ -1906,7 +1906,7 @@ void Client::Handle_OP_AAAction(const EQApplicationPacket *app) AA_Action* action = (AA_Action*)app->pBuffer; if (action->action == aaActionActivate) {//AA Hotkey - mlog(AA__MESSAGE, "Activating AA %d", action->ability); + Log.Out(Logs::Detail, Logs::AA, "Activating AA %d", action->ability); ActivateAA((aaID)action->ability); } else if (action->action == aaActionBuy) { @@ -1938,7 +1938,7 @@ void Client::Handle_OP_AcceptNewTask(const EQApplicationPacket *app) { if (app->size != sizeof(AcceptNewTask_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_AcceptNewTask expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_AcceptNewTask expected %i got %i", sizeof(AcceptNewTask_Struct), app->size); DumpPacket(app); return; @@ -1953,7 +1953,7 @@ void Client::Handle_OP_AdventureInfoRequest(const EQApplicationPacket *app) { if (app->size < sizeof(EntityId_Struct)) { - LogFile->write(EQEmuLog::Error, "Handle_OP_AdventureInfoRequest had a packet that was too small."); + Log.Out(Logs::General, Logs::Error, "Handle_OP_AdventureInfoRequest had a packet that was too small."); return; } EntityId_Struct* ent = (EntityId_Struct*)app->pBuffer; @@ -2008,7 +2008,7 @@ void Client::Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app) { if (app->size != sizeof(Adventure_Purchase_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_AdventureMerchantPurchase expected:%i got:%i", sizeof(Adventure_Purchase_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_AdventureMerchantPurchase expected:%i got:%i", sizeof(Adventure_Purchase_Struct), app->size); return; } @@ -2188,7 +2188,7 @@ void Client::Handle_OP_AdventureMerchantRequest(const EQApplicationPacket *app) { if (app->size != sizeof(AdventureMerchant_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_AdventureMerchantRequest expected:%i got:%i", sizeof(AdventureMerchant_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_AdventureMerchantRequest expected:%i got:%i", sizeof(AdventureMerchant_Struct), app->size); return; } std::stringstream ss(std::stringstream::in | std::stringstream::out); @@ -2278,7 +2278,7 @@ void Client::Handle_OP_AdventureMerchantSell(const EQApplicationPacket *app) { if (app->size != sizeof(Adventure_Sell_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch on OP_AdventureMerchantSell: got %u expected %u", + Log.Out(Logs::General, Logs::None, "Size mismatch on OP_AdventureMerchantSell: got %u expected %u", app->size, sizeof(Adventure_Sell_Struct)); DumpPacket(app); return; @@ -2410,7 +2410,7 @@ void Client::Handle_OP_AdventureRequest(const EQApplicationPacket *app) { if (app->size < sizeof(AdventureRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "Handle_OP_AdventureRequest had a packet that was too small."); + Log.Out(Logs::General, Logs::Error, "Handle_OP_AdventureRequest had a packet that was too small."); return; } @@ -2936,7 +2936,7 @@ void Client::Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app) void Client::Handle_OP_Animation(const EQApplicationPacket *app) { if (app->size != sizeof(Animation_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized " + Log.Out(Logs::General, Logs::Error, "Received invalid sized " "OP_Animation: got %d, expected %d", app->size, sizeof(Animation_Struct)); DumpPacket(app); @@ -2955,7 +2955,7 @@ void Client::Handle_OP_Animation(const EQApplicationPacket *app) void Client::Handle_OP_ApplyPoison(const EQApplicationPacket *app) { if (app->size != sizeof(ApplyPoison_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_ApplyPoison, size=%i, expected %i", app->size, sizeof(ApplyPoison_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_ApplyPoison, size=%i, expected %i", app->size, sizeof(ApplyPoison_Struct)); DumpPacket(app); return; } @@ -2969,7 +2969,7 @@ void Client::Handle_OP_ApplyPoison(const EQApplicationPacket *app) if (!IsPoison) { - mlog(SPELLS__CASTING_ERR, "Item used to cast spell effect from a poison item was missing from inventory slot %d " + Log.Out(Logs::Detail, Logs::Spells, "Item used to cast spell effect from a poison item was missing from inventory slot %d " "after casting, or is not a poison!", ApplyPoisonData->inventorySlot); Message(0, "Error: item not found for inventory slot #%i or is not a poison", ApplyPoisonData->inventorySlot); @@ -2992,7 +2992,7 @@ void Client::Handle_OP_ApplyPoison(const EQApplicationPacket *app) DeleteItemInInventory(ApplyPoisonData->inventorySlot, 1, true); - LogFile->write(EQEmuLog::Debug, "Chance to Apply Poison was %f. Roll was %f. Result is %u.", SuccessChance, ChanceRoll, ApplyPoisonSuccessResult); + Log.Out(Logs::General, Logs::None, "Chance to Apply Poison was %f. Roll was %f. Result is %u.", SuccessChance, ChanceRoll, ApplyPoisonSuccessResult); } } @@ -3007,7 +3007,7 @@ void Client::Handle_OP_ApplyPoison(const EQApplicationPacket *app) void Client::Handle_OP_Assist(const EQApplicationPacket *app) { if (app->size != sizeof(EntityId_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_Assist expected %i got %i", sizeof(EntityId_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_Assist expected %i got %i", sizeof(EntityId_Struct), app->size); return; } @@ -3037,7 +3037,7 @@ void Client::Handle_OP_Assist(const EQApplicationPacket *app) void Client::Handle_OP_AssistGroup(const EQApplicationPacket *app) { if (app->size != sizeof(EntityId_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_AssistGroup expected %i got %i", sizeof(EntityId_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_AssistGroup expected %i got %i", sizeof(EntityId_Struct), app->size); return; } QueuePacket(app); @@ -3050,7 +3050,7 @@ void Client::Handle_OP_AugmentInfo(const EQApplicationPacket *app) // Some clients this seems to nuke the charm text (ex. Adventurer's Stone) if (app->size != sizeof(AugmentInfo_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_AugmentInfo expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_AugmentInfo expected %i got %i", sizeof(AugmentInfo_Struct), app->size); DumpPacket(app); return; @@ -3069,7 +3069,7 @@ void Client::Handle_OP_AugmentInfo(const EQApplicationPacket *app) void Client::Handle_OP_AugmentItem(const EQApplicationPacket *app) { if (app->size != sizeof(AugmentItem_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for AugmentItem_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for AugmentItem_Struct: Expected: %i, Got: %i", sizeof(AugmentItem_Struct), app->size); return; } @@ -3226,7 +3226,7 @@ void Client::Handle_OP_AugmentItem(const EQApplicationPacket *app) void Client::Handle_OP_AutoAttack(const EQApplicationPacket *app) { if (app->size != 4) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_AutoAttack expected:4 got:%i", app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_AutoAttack expected:4 got:%i", app->size); return; } @@ -3278,7 +3278,7 @@ void Client::Handle_OP_AutoAttack2(const EQApplicationPacket *app) void Client::Handle_OP_AutoFire(const EQApplicationPacket *app) { if (app->size != sizeof(bool)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_AutoFire expected %i got %i", sizeof(bool), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_AutoFire expected %i got %i", sizeof(bool), app->size); DumpPacket(app); return; } @@ -3294,7 +3294,7 @@ void Client::Handle_OP_Bandolier(const EQApplicationPacket *app) // Although there are three different structs for OP_Bandolier, they are all the same size. // if (app->size != sizeof(BandolierCreate_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_Bandolier expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_Bandolier expected %i got %i", sizeof(BandolierCreate_Struct), app->size); DumpPacket(app); return; @@ -3313,7 +3313,7 @@ void Client::Handle_OP_Bandolier(const EQApplicationPacket *app) SetBandolier(app); break; default: - LogFile->write(EQEmuLog::Debug, "Uknown Bandolier action %i", bs->action); + Log.Out(Logs::General, Logs::None, "Uknown Bandolier action %i", bs->action); } } @@ -3322,7 +3322,7 @@ void Client::Handle_OP_BankerChange(const EQApplicationPacket *app) { if (app->size != sizeof(BankerChange_Struct) && app->size != 4) //Titanium only sends 4 Bytes for this { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_BankerChange expected %i got %i", sizeof(BankerChange_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_BankerChange expected %i got %i", sizeof(BankerChange_Struct), app->size); DumpPacket(app); return; } @@ -3407,7 +3407,7 @@ void Client::Handle_OP_Barter(const EQApplicationPacket *app) if (app->size < 4) { - LogFile->write(EQEmuLog::Debug, "OP_Barter packet below minimum expected size. The packet was %i bytes.", app->size); + Log.Out(Logs::General, Logs::None, "OP_Barter packet below minimum expected size. The packet was %i bytes.", app->size); DumpPacket(app); return; } @@ -3419,7 +3419,6 @@ void Client::Handle_OP_Barter(const EQApplicationPacket *app) // uint32 Action = VARSTRUCT_DECODE_TYPE(uint32, Buf); - _pkt(TRADING__BARTER, app); switch (Action) { @@ -3555,7 +3554,7 @@ void Client::Handle_OP_Barter(const EQApplicationPacket *app) default: Message(13, "Unrecognised Barter action."); - _log(TRADING__BARTER, "Unrecognised Barter Action %i", Action); + Log.Out(Logs::Detail, Logs::Trading, "Unrecognised Barter Action %i", Action); } } @@ -3563,7 +3562,7 @@ void Client::Handle_OP_Barter(const EQApplicationPacket *app) void Client::Handle_OP_BazaarInspect(const EQApplicationPacket *app) { if (app->size != sizeof(BazaarInspect_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for BazaarInspect_Struct: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for BazaarInspect_Struct: Expected %i, Got %i", sizeof(BazaarInspect_Struct), app->size); return; } @@ -3589,7 +3588,6 @@ void Client::Handle_OP_BazaarInspect(const EQApplicationPacket *app) void Client::Handle_OP_BazaarSearch(const EQApplicationPacket *app) { - _pkt(TRADING__PACKETS, app); if (app->size == sizeof(BazaarSearch_Struct)) { @@ -3618,8 +3616,8 @@ void Client::Handle_OP_BazaarSearch(const EQApplicationPacket *app) return; } else { - _log(TRADING__CLIENT, "Malformed BazaarSearch_Struct packe, Action %it received, ignoring..."); - LogFile->write(EQEmuLog::Error, "Malformed BazaarSearch_Struct packet received, ignoring...\n"); + Log.Out(Logs::Detail, Logs::Trading, "Malformed BazaarSearch_Struct packe, Action %it received, ignoring..."); + Log.Out(Logs::General, Logs::Error, "Malformed BazaarSearch_Struct packet received, ignoring...\n"); } return; @@ -3704,16 +3702,16 @@ void Client::Handle_OP_Begging(const EQApplicationPacket *app) void Client::Handle_OP_Bind_Wound(const EQApplicationPacket *app) { if (app->size != sizeof(BindWound_Struct)){ - LogFile->write(EQEmuLog::Error, "Size mismatch for Bind wound packet"); + Log.Out(Logs::General, Logs::Error, "Size mismatch for Bind wound packet"); DumpPacket(app); } BindWound_Struct* bind_in = (BindWound_Struct*)app->pBuffer; Mob* bindmob = entity_list.GetMob(bind_in->to); if (!bindmob){ - LogFile->write(EQEmuLog::Error, "Bindwound on non-exsistant mob from %s", this->GetName()); + Log.Out(Logs::General, Logs::Error, "Bindwound on non-exsistant mob from %s", this->GetName()); } else { - LogFile->write(EQEmuLog::Debug, "BindWound in: to:\'%s\' from=\'%s\'", bindmob->GetName(), GetName()); + Log.Out(Logs::General, Logs::None, "BindWound in: to:\'%s\' from=\'%s\'", bindmob->GetName(), GetName()); BindWound(bindmob, true); } return; @@ -3726,7 +3724,7 @@ void Client::Handle_OP_BlockedBuffs(const EQApplicationPacket *app) if (app->size != sizeof(BlockedBuffs_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_BlockedBuffs expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_BlockedBuffs expected %i got %i", sizeof(BlockedBuffs_Struct), app->size); DumpPacket(app); @@ -3821,7 +3819,7 @@ void Client::Handle_OP_BoardBoat(const EQApplicationPacket *app) // this sends unclean mob name, so capped at 64 // a_boat006 if (app->size <= 5 || app->size > 64) { - LogFile->write(EQEmuLog::Error, "Size mismatch in OP_BoardBoad. Expected greater than 5 less than 64, got %i", app->size); + Log.Out(Logs::General, Logs::Error, "Size mismatch in OP_BoardBoad. Expected greater than 5 less than 64, got %i", app->size); DumpPacket(app); return; } @@ -3842,14 +3840,14 @@ void Client::Handle_OP_Buff(const EQApplicationPacket *app) { if (app->size != sizeof(SpellBuffFade_Struct)) { - LogFile->write(EQEmuLog::Error, "Size mismatch in OP_Buff. expected %i got %i", sizeof(SpellBuffFade_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "Size mismatch in OP_Buff. expected %i got %i", sizeof(SpellBuffFade_Struct), app->size); DumpPacket(app); return; } SpellBuffFade_Struct* sbf = (SpellBuffFade_Struct*)app->pBuffer; uint32 spid = sbf->spellid; - mlog(SPELLS__BUFFS, "Client requested that buff with spell id %d be canceled.", spid); + Log.Out(Logs::Detail, Logs::Spells, "Client requested that buff with spell id %d be canceled.", spid); //something about IsDetrimentalSpell() crashes this portion of code.. //tbh we shouldn't use it anyway since this is a simple red vs blue buff check and @@ -3924,7 +3922,7 @@ void Client::Handle_OP_CancelTask(const EQApplicationPacket *app) { if (app->size != sizeof(CancelTask_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_CancelTask expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_CancelTask expected %i got %i", sizeof(CancelTask_Struct), app->size); DumpPacket(app); return; @@ -3938,7 +3936,7 @@ void Client::Handle_OP_CancelTask(const EQApplicationPacket *app) void Client::Handle_OP_CancelTrade(const EQApplicationPacket *app) { if (app->size != sizeof(CancelTrade_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_CancelTrade, size=%i, expected %i", app->size, sizeof(CancelTrade_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_CancelTrade, size=%i, expected %i", app->size, sizeof(CancelTrade_Struct)); return; } Mob* with = trade->With(); @@ -3987,16 +3985,16 @@ void Client::Handle_OP_CastSpell(const EQApplicationPacket *app) m_TargetRing = xyz_location(castspell->x_pos, castspell->y_pos, castspell->z_pos); #ifdef _EQDEBUG - LogFile->write(EQEmuLog::Debug, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[0], castspell->cs_unknown[0]); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[1], castspell->cs_unknown[1]); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[2], castspell->cs_unknown[2]); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[3], castspell->cs_unknown[3]); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: 32 %p %u", &castspell->cs_unknown, *(uint32*)castspell->cs_unknown); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: 32 %p %i", &castspell->cs_unknown, *(uint32*)castspell->cs_unknown); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: 16 %p %u %u", &castspell->cs_unknown, *(uint16*)castspell->cs_unknown, *(uint16*)castspell->cs_unknown + sizeof(uint16)); - LogFile->write(EQEmuLog::Debug, "cs_unknown2: 16 %p %i %i", &castspell->cs_unknown, *(uint16*)castspell->cs_unknown, *(uint16*)castspell->cs_unknown + sizeof(uint16)); + Log.Out(Logs::General, Logs::None, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[0], castspell->cs_unknown[0]); + Log.Out(Logs::General, Logs::None, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[1], castspell->cs_unknown[1]); + Log.Out(Logs::General, Logs::None, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[2], castspell->cs_unknown[2]); + Log.Out(Logs::General, Logs::None, "cs_unknown2: %u %i", (uint8)castspell->cs_unknown[3], castspell->cs_unknown[3]); + Log.Out(Logs::General, Logs::None, "cs_unknown2: 32 %p %u", &castspell->cs_unknown, *(uint32*)castspell->cs_unknown); + Log.Out(Logs::General, Logs::None, "cs_unknown2: 32 %p %i", &castspell->cs_unknown, *(uint32*)castspell->cs_unknown); + Log.Out(Logs::General, Logs::None, "cs_unknown2: 16 %p %u %u", &castspell->cs_unknown, *(uint16*)castspell->cs_unknown, *(uint16*)castspell->cs_unknown + sizeof(uint16)); + Log.Out(Logs::General, Logs::None, "cs_unknown2: 16 %p %i %i", &castspell->cs_unknown, *(uint16*)castspell->cs_unknown, *(uint16*)castspell->cs_unknown + sizeof(uint16)); #endif - LogFile->write(EQEmuLog::Debug, "OP CastSpell: slot=%d, spell=%d, target=%d, inv=%lx", castspell->slot, castspell->spell_id, castspell->target_id, (unsigned long)castspell->inventoryslot); + Log.Out(Logs::General, Logs::None, "OP CastSpell: slot=%d, spell=%d, target=%d, inv=%lx", castspell->slot, castspell->spell_id, castspell->target_id, (unsigned long)castspell->inventoryslot); std::cout << "OP_CastSpell " << castspell->slot << " spell " << castspell->spell_id << " inventory slot " << castspell->inventoryslot << "\n" << std::endl; @@ -4026,7 +4024,7 @@ void Client::Handle_OP_CastSpell(const EQApplicationPacket *app) //discipline, using the item spell slot if (castspell->inventoryslot == INVALID_INDEX) { if (!UseDiscipline(castspell->spell_id, castspell->target_id)) { - LogFile->write(EQEmuLog::Debug, "Unknown ability being used by %s, spell being cast is: %i\n", GetName(), castspell->spell_id); + Log.Out(Logs::General, Logs::None, "Unknown ability being used by %s, spell being cast is: %i\n", GetName(), castspell->spell_id); InterruptSpell(castspell->spell_id); } return; @@ -4169,7 +4167,7 @@ void Client::Handle_OP_ClearBlockedBuffs(const EQApplicationPacket *app) if (app->size != 1) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_ClearBlockedBuffs expected 1 got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_ClearBlockedBuffs expected 1 got %i", app->size); DumpPacket(app); @@ -4191,7 +4189,7 @@ void Client::Handle_OP_ClearNPCMarks(const EQApplicationPacket *app) if (app->size != 0) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_ClearNPCMarks expected 0 got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_ClearNPCMarks expected 0 got %i", app->size); DumpPacket(app); @@ -4213,7 +4211,7 @@ void Client::Handle_OP_ClearSurname(const EQApplicationPacket *app) void Client::Handle_OP_ClickDoor(const EQApplicationPacket *app) { if (app->size != sizeof(ClickDoor_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_ClickDoor, size=%i, expected %i", app->size, sizeof(ClickDoor_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_ClickDoor, size=%i, expected %i", app->size, sizeof(ClickDoor_Struct)); return; } ClickDoor_Struct* cd = (ClickDoor_Struct*)app->pBuffer; @@ -4238,7 +4236,7 @@ void Client::Handle_OP_ClickDoor(const EQApplicationPacket *app) void Client::Handle_OP_ClickObject(const EQApplicationPacket *app) { if (app->size != sizeof(ClickObject_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size on ClickObject_Struct: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on ClickObject_Struct: Expected %i, Got %i", sizeof(ClickObject_Struct), app->size); return; } @@ -4289,7 +4287,7 @@ void Client::Handle_OP_ClickObjectAction(const EQApplicationPacket *app) else { if (app->size != sizeof(ClickObjectAction_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size on OP_ClickObjectAction: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_ClickObjectAction: Expected %i, Got %i", sizeof(ClickObjectAction_Struct), app->size); return; } @@ -4302,11 +4300,11 @@ void Client::Handle_OP_ClickObjectAction(const EQApplicationPacket *app) object->Close(); } else { - LogFile->write(EQEmuLog::Error, "Unsupported action %d in OP_ClickObjectAction", oos->open); + Log.Out(Logs::General, Logs::Error, "Unsupported action %d in OP_ClickObjectAction", oos->open); } } else { - LogFile->write(EQEmuLog::Error, "Invalid object %d in OP_ClickObjectAction", oos->drop_id); + Log.Out(Logs::General, Logs::Error, "Invalid object %d in OP_ClickObjectAction", oos->drop_id); } } @@ -4323,8 +4321,8 @@ void Client::Handle_OP_ClickObjectAction(const EQApplicationPacket *app) void Client::Handle_OP_ClientError(const EQApplicationPacket *app) { ClientError_Struct* error = (ClientError_Struct*)app->pBuffer; - LogFile->write(EQEmuLog::Error, "Client error: %s", error->character_name); - LogFile->write(EQEmuLog::Error, "Error message:%s", error->message); + Log.Out(Logs::General, Logs::Error, "Client error: %s", error->character_name); + Log.Out(Logs::General, Logs::Error, "Error message:%s", error->message); return; } @@ -4345,7 +4343,7 @@ void Client::Handle_OP_ClientUpdate(const EQApplicationPacket *app) if (app->size != sizeof(PlayerPositionUpdateClient_Struct) && app->size != (sizeof(PlayerPositionUpdateClient_Struct)+1) ) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_ClientUpdate expected:%i got:%i", sizeof(PlayerPositionUpdateClient_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_ClientUpdate expected:%i got:%i", sizeof(PlayerPositionUpdateClient_Struct), app->size); return; } PlayerPositionUpdateClient_Struct* ppu = (PlayerPositionUpdateClient_Struct*)app->pBuffer; @@ -4684,7 +4682,7 @@ void Client::Handle_OP_Consider(const EQApplicationPacket *app) { if (app->size != sizeof(Consider_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in Consider expected %i got %i", sizeof(Consider_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in Consider expected %i got %i", sizeof(Consider_Struct), app->size); return; } Consider_Struct* conin = (Consider_Struct*)app->pBuffer; @@ -4778,7 +4776,7 @@ void Client::Handle_OP_ConsiderCorpse(const EQApplicationPacket *app) { if (app->size != sizeof(Consider_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in Consider corpse expected %i got %i", sizeof(Consider_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in Consider corpse expected %i got %i", sizeof(Consider_Struct), app->size); return; } Consider_Struct* conin = (Consider_Struct*)app->pBuffer; @@ -4838,7 +4836,7 @@ void Client::Handle_OP_Consume(const EQApplicationPacket *app) { if (app->size != sizeof(Consume_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_Consume expected:%i got:%i", sizeof(Consume_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_Consume expected:%i got:%i", sizeof(Consume_Struct), app->size); return; } Consume_Struct* pcs = (Consume_Struct*)app->pBuffer; @@ -4875,7 +4873,7 @@ void Client::Handle_OP_Consume(const EQApplicationPacket *app) ItemInst *myitem = GetInv().GetItem(pcs->slot); if (myitem == nullptr) { - LogFile->write(EQEmuLog::Error, "Consuming from empty slot %d", pcs->slot); + Log.Out(Logs::General, Logs::Error, "Consuming from empty slot %d", pcs->slot); return; } @@ -4887,7 +4885,7 @@ void Client::Handle_OP_Consume(const EQApplicationPacket *app) Consume(eat_item, ItemTypeDrink, pcs->slot, (pcs->auto_consumed == 0xffffffff)); } else { - LogFile->write(EQEmuLog::Error, "OP_Consume: unknown type, type:%i", (int)pcs->type); + Log.Out(Logs::General, Logs::Error, "OP_Consume: unknown type, type:%i", (int)pcs->type); return; } if (m_pp.hunger_level > 50000) @@ -4908,7 +4906,7 @@ void Client::Handle_OP_Consume(const EQApplicationPacket *app) void Client::Handle_OP_ControlBoat(const EQApplicationPacket *app) { if (app->size != sizeof(ControlBoat_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_ControlBoat, size=%i, expected %i", app->size, sizeof(ControlBoat_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_ControlBoat, size=%i, expected %i", app->size, sizeof(ControlBoat_Struct)); return; } ControlBoat_Struct* cbs = (ControlBoat_Struct*)app->pBuffer; @@ -5064,7 +5062,7 @@ void Client::Handle_OP_CrystalReclaim(const EQApplicationPacket *app) void Client::Handle_OP_Damage(const EQApplicationPacket *app) { if (app->size != sizeof(CombatDamage_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized OP_Damage: got %d, expected %d", app->size, + Log.Out(Logs::General, Logs::Error, "Received invalid sized OP_Damage: got %d, expected %d", app->size, sizeof(CombatDamage_Struct)); DumpPacket(app); return; @@ -5086,7 +5084,6 @@ void Client::Handle_OP_Death(const EQApplicationPacket *app) //I think this attack_skill value is really a value from SkillDamageTypes... if (ds->attack_skill > HIGHEST_SKILL) { - mlog(CLIENT__ERROR, "Invalid skill in OP_Death: %d"); return; } @@ -5103,7 +5100,7 @@ void Client::Handle_OP_DelegateAbility(const EQApplicationPacket *app) if (app->size != sizeof(DelegateAbility_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_DelegateAbility expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_DelegateAbility expected %i got %i", sizeof(DelegateAbility_Struct), app->size); DumpPacket(app); @@ -5278,7 +5275,7 @@ void Client::Handle_OP_DoGroupLeadershipAbility(const EQApplicationPacket *app) if (app->size != sizeof(DoGroupLeadershipAbility_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_DoGroupLeadershipAbility expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_DoGroupLeadershipAbility expected %i got %i", sizeof(DoGroupLeadershipAbility_Struct), app->size); DumpPacket(app); @@ -5330,7 +5327,7 @@ void Client::Handle_OP_DoGroupLeadershipAbility(const EQApplicationPacket *app) } default: - LogFile->write(EQEmuLog::Debug, "Got unhandled OP_DoGroupLeadershipAbility Ability: %d Parameter: %d", + Log.Out(Logs::General, Logs::None, "Got unhandled OP_DoGroupLeadershipAbility Ability: %d Parameter: %d", dglas->Ability, dglas->Parameter); break; } @@ -5412,7 +5409,7 @@ void Client::Handle_OP_Dye(const EQApplicationPacket *app) void Client::Handle_OP_Emote(const EQApplicationPacket *app) { if (app->size != sizeof(Emote_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized " + Log.Out(Logs::General, Logs::Error, "Received invalid sized " "OP_Emote: got %d, expected %d", app->size, sizeof(Emote_Struct)); DumpPacket(app); @@ -5503,7 +5500,7 @@ void Client::Handle_OP_EnvDamage(const EQApplicationPacket *app) } if (app->size != sizeof(EnvDamage2_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized OP_EnvDamage: got %d, expected %d", app->size, + Log.Out(Logs::General, Logs::Error, "Received invalid sized OP_EnvDamage: got %d, expected %d", app->size, sizeof(EnvDamage2_Struct)); DumpPacket(app); return; @@ -5558,7 +5555,7 @@ void Client::Handle_OP_EnvDamage(const EQApplicationPacket *app) void Client::Handle_OP_FaceChange(const EQApplicationPacket *app) { if (app->size != sizeof(FaceChange_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for OP_FaceChange: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for OP_FaceChange: Expected: %i, Got: %i", sizeof(FaceChange_Struct), app->size); return; } @@ -5799,8 +5796,7 @@ void Client::Handle_OP_FriendsWho(const EQApplicationPacket *app) void Client::Handle_OP_GetGuildMOTD(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GetGuildMOTD"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GetGuildMOTD"); SendGuildMOTD(true); @@ -5813,8 +5809,7 @@ void Client::Handle_OP_GetGuildMOTD(const EQApplicationPacket *app) void Client::Handle_OP_GetGuildsList(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GetGuildsList"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GetGuildsList"); SendGuildList(); } @@ -5827,7 +5822,7 @@ void Client::Handle_OP_GMBecomeNPC(const EQApplicationPacket *app) return; } if (app->size != sizeof(BecomeNPC_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GMBecomeNPC, size=%i, expected %i", app->size, sizeof(BecomeNPC_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GMBecomeNPC, size=%i, expected %i", app->size, sizeof(BecomeNPC_Struct)); return; } //entity_list.QueueClients(this, app, false); @@ -5879,7 +5874,7 @@ void Client::Handle_OP_GMEmoteZone(const EQApplicationPacket *app) return; } if (app->size != sizeof(GMEmoteZone_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GMEmoteZone, size=%i, expected %i", app->size, sizeof(GMEmoteZone_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GMEmoteZone, size=%i, expected %i", app->size, sizeof(GMEmoteZone_Struct)); return; } GMEmoteZone_Struct* gmez = (GMEmoteZone_Struct*)app->pBuffer; @@ -5896,7 +5891,7 @@ void Client::Handle_OP_GMEmoteZone(const EQApplicationPacket *app) void Client::Handle_OP_GMEndTraining(const EQApplicationPacket *app) { if (app->size != sizeof(GMTrainEnd_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_GMEndTraining expected %i got %i", sizeof(GMTrainEnd_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_GMEndTraining expected %i got %i", sizeof(GMTrainEnd_Struct), app->size); DumpPacket(app); return; } @@ -5912,7 +5907,7 @@ void Client::Handle_OP_GMFind(const EQApplicationPacket *app) return; } if (app->size != sizeof(GMSummon_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GMFind, size=%i, expected %i", app->size, sizeof(GMSummon_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GMFind, size=%i, expected %i", app->size, sizeof(GMSummon_Struct)); return; } //Break down incoming @@ -5977,7 +5972,7 @@ void Client::Handle_OP_GMHideMe(const EQApplicationPacket *app) return; } if (app->size != sizeof(SpawnAppearance_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GMHideMe, size=%i, expected %i", app->size, sizeof(SpawnAppearance_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GMHideMe, size=%i, expected %i", app->size, sizeof(SpawnAppearance_Struct)); return; } SpawnAppearance_Struct* sa = (SpawnAppearance_Struct*)app->pBuffer; @@ -6027,7 +6022,7 @@ void Client::Handle_OP_GMKill(const EQApplicationPacket *app) return; } if (app->size != sizeof(GMKill_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GMKill, size=%i, expected %i", app->size, sizeof(GMKill_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GMKill, size=%i, expected %i", app->size, sizeof(GMKill_Struct)); return; } GMKill_Struct* gmk = (GMKill_Struct *)app->pBuffer; @@ -6094,7 +6089,7 @@ void Client::Handle_OP_GMLastName(const EQApplicationPacket *app) void Client::Handle_OP_GMNameChange(const EQApplicationPacket *app) { if (app->size != sizeof(GMName_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GMNameChange, size=%i, expected %i", app->size, sizeof(GMName_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GMNameChange, size=%i, expected %i", app->size, sizeof(GMName_Struct)); return; } const GMName_Struct* gmn = (const GMName_Struct *)app->pBuffer; @@ -6104,7 +6099,7 @@ void Client::Handle_OP_GMNameChange(const EQApplicationPacket *app) return; } Client* client = entity_list.GetClientByName(gmn->oldname); - LogFile->write(EQEmuLog::Status, "GM(%s) changeing players name. Old:%s New:%s", GetName(), gmn->oldname, gmn->newname); + Log.Out(Logs::General, Logs::Status, "GM(%s) changeing players name. Old:%s New:%s", GetName(), gmn->oldname, gmn->newname); bool usedname = database.CheckUsedName((const char*)gmn->newname); if (client == 0) { Message(13, "%s not found for name change. Operation failed!", gmn->oldname); @@ -6146,7 +6141,7 @@ void Client::Handle_OP_GMSearchCorpse(const EQApplicationPacket *app) if (app->size < sizeof(GMSearchCorpse_Struct)) { - LogFile->write(EQEmuLog::Debug, "OP_GMSearchCorpse size lower than expected: got %u expected at least %u", + Log.Out(Logs::General, Logs::None, "OP_GMSearchCorpse size lower than expected: got %u expected at least %u", app->size, sizeof(GMSearchCorpse_Struct)); DumpPacket(app); return; @@ -6164,7 +6159,6 @@ void Client::Handle_OP_GMSearchCorpse(const EQApplicationPacket *app) safe_delete_array(escSearchString); auto results = database.QueryDatabase(query); if (!results.Success()) { - Message(0, "Query failed: %s.", results.ErrorMessage().c_str()); return; } @@ -6269,7 +6263,7 @@ void Client::Handle_OP_GMToggle(const EQApplicationPacket *app) void Client::Handle_OP_GMTraining(const EQApplicationPacket *app) { if (app->size != sizeof(GMTrainee_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_GMTraining expected %i got %i", sizeof(GMTrainee_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_GMTraining expected %i got %i", sizeof(GMTrainee_Struct), app->size); DumpPacket(app); return; } @@ -6280,7 +6274,7 @@ void Client::Handle_OP_GMTraining(const EQApplicationPacket *app) void Client::Handle_OP_GMTrainSkill(const EQApplicationPacket *app) { if (app->size != sizeof(GMSkillChange_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_GMTrainSkill expected %i got %i", sizeof(GMSkillChange_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_GMTrainSkill expected %i got %i", sizeof(GMSkillChange_Struct), app->size); DumpPacket(app); return; } @@ -6348,7 +6342,7 @@ void Client::Handle_OP_GMZoneRequest2(const EQApplicationPacket *app) return; } if (app->size < sizeof(uint32)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_GMZoneRequest2 expected:%i got:%i", sizeof(uint32), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_GMZoneRequest2 expected:%i got:%i", sizeof(uint32), app->size); return; } @@ -6365,7 +6359,7 @@ void Client::Handle_OP_GroupAcknowledge(const EQApplicationPacket *app) void Client::Handle_OP_GroupCancelInvite(const EQApplicationPacket *app) { if (app->size != sizeof(GroupCancel_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for OP_GroupCancelInvite: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for OP_GroupCancelInvite: Expected: %i, Got: %i", sizeof(GroupCancel_Struct), app->size); return; } @@ -6409,12 +6403,12 @@ void Client::Handle_OP_GroupDelete(const EQApplicationPacket *app) void Client::Handle_OP_GroupDisband(const EQApplicationPacket *app) { if (app->size != sizeof(GroupGeneric_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for GroupGeneric_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for GroupGeneric_Struct: Expected: %i, Got: %i", sizeof(GroupGeneric_Struct), app->size); return; } - LogFile->write(EQEmuLog::Debug, "Member Disband Request from %s\n", GetName()); + Log.Out(Logs::General, Logs::None, "Member Disband Request from %s\n", GetName()); GroupGeneric_Struct* gd = (GroupGeneric_Struct*)app->pBuffer; @@ -6556,7 +6550,7 @@ void Client::Handle_OP_GroupDisband(const EQApplicationPacket *app) } else { - LogFile->write(EQEmuLog::Error, "Failed to remove player from group. Unable to find player named %s in player group", gd->name2); + Log.Out(Logs::General, Logs::Error, "Failed to remove player from group. Unable to find player named %s in player group", gd->name2); } } if (LFP) @@ -6576,7 +6570,7 @@ void Client::Handle_OP_GroupFollow(const EQApplicationPacket *app) void Client::Handle_OP_GroupFollow2(const EQApplicationPacket *app) { if (app->size != sizeof(GroupGeneric_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for OP_GroupFollow: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for OP_GroupFollow: Expected: %i, Got: %i", sizeof(GroupGeneric_Struct), app->size); return; } @@ -6625,7 +6619,7 @@ void Client::Handle_OP_GroupInvite(const EQApplicationPacket *app) void Client::Handle_OP_GroupInvite2(const EQApplicationPacket *app) { if (app->size != sizeof(GroupInvite_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for OP_GroupInvite: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for OP_GroupInvite: Expected: %i, Got: %i", sizeof(GroupInvite_Struct), app->size); return; } @@ -6694,7 +6688,7 @@ void Client::Handle_OP_GroupMakeLeader(const EQApplicationPacket *app) if (g->IsLeader(this)) g->ChangeLeader(NewLeader); else { - LogFile->write(EQEmuLog::Debug, "Group /makeleader request originated from non-leader member: %s", GetName()); + Log.Out(Logs::General, Logs::None, "Group /makeleader request originated from non-leader member: %s", GetName()); DumpPacket(app); } } @@ -6703,7 +6697,7 @@ void Client::Handle_OP_GroupMakeLeader(const EQApplicationPacket *app) void Client::Handle_OP_GroupMentor(const EQApplicationPacket *app) { if (app->size != sizeof(GroupMentor_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GroupMentor, size=%i, expected %i", app->size, sizeof(GroupMentor_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GroupMentor, size=%i, expected %i", app->size, sizeof(GroupMentor_Struct)); DumpPacket(app); return; } @@ -6739,7 +6733,7 @@ void Client::Handle_OP_GroupMentor(const EQApplicationPacket *app) void Client::Handle_OP_GroupRoles(const EQApplicationPacket *app) { if (app->size != sizeof(GroupRole_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GroupRoles, size=%i, expected %i", app->size, sizeof(GroupRole_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GroupRoles, size=%i, expected %i", app->size, sizeof(GroupRole_Struct)); DumpPacket(app); return; } @@ -6785,7 +6779,7 @@ void Client::Handle_OP_GroupUpdate(const EQApplicationPacket *app) { if (app->size != sizeof(GroupUpdate_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch on OP_GroupUpdate: got %u expected %u", + Log.Out(Logs::General, Logs::None, "Size mismatch on OP_GroupUpdate: got %u expected %u", app->size, sizeof(GroupUpdate_Struct)); DumpPacket(app); return; @@ -6804,7 +6798,7 @@ void Client::Handle_OP_GroupUpdate(const EQApplicationPacket *app) if (group->IsLeader(this)) group->ChangeLeader(newleader); else { - LogFile->write(EQEmuLog::Debug, "Group /makeleader request originated from non-leader member: %s", GetName()); + Log.Out(Logs::General, Logs::None, "Group /makeleader request originated from non-leader member: %s", GetName()); DumpPacket(app); } } @@ -6813,7 +6807,7 @@ void Client::Handle_OP_GroupUpdate(const EQApplicationPacket *app) default: { - LogFile->write(EQEmuLog::Debug, "Received unhandled OP_GroupUpdate requesting action %u", gu->action); + Log.Out(Logs::General, Logs::None, "Received unhandled OP_GroupUpdate requesting action %u", gu->action); DumpPacket(app); return; } @@ -6833,7 +6827,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) } if (app->size < sizeof(uint32)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_GuildBank, size=%i, expected %i", app->size, sizeof(uint32)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_GuildBank, size=%i, expected %i", app->size, sizeof(uint32)); DumpPacket(app); return; } @@ -6873,7 +6867,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) { if ((Action != GuildBankDeposit) && (Action != GuildBankViewItem) && (Action != GuildBankWithdraw)) { - _log(GUILDS__BANK_ERROR, "Suspected hacking attempt on guild bank from %s", GetName()); + Log.Out(Logs::General, Logs::Error, "Suspected hacking attempt on guild bank from %s", GetName()); GuildBankAck(); @@ -7034,7 +7028,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) if (!IsGuildBanker() && !GuildBanks->AllowedToWithdraw(GuildID(), gbwis->Area, gbwis->SlotID, GetName())) { - _log(GUILDS__BANK_ERROR, "Suspected attempted hack on the guild bank from %s", GetName()); + Log.Out(Logs::General, Logs::Error, "Suspected attempted hack on the guild bank from %s", GetName()); GuildBankAck(); @@ -7105,7 +7099,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) { Message(13, "Unexpected GuildBank action."); - _log(GUILDS__BANK_ERROR, "Received unexpected guild bank action code %i from %s", Action, GetName()); + Log.Out(Logs::General, Logs::Error, "Received unexpected guild bank action code %i from %s", Action, GetName()); } } } @@ -7176,7 +7170,7 @@ void Client::Handle_OP_GuildCreate(const EQApplicationPacket *app) uint32 NewGuildID = guild_mgr.CreateGuild(GuildName, CharacterID()); - _log(GUILDS__ACTIONS, "%s: Creating guild %s with leader %d via UF+ GUI. It was given id %lu.", GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Creating guild %s with leader %d via UF+ GUI. It was given id %lu.", GetName(), GuildName, CharacterID(), (unsigned long)NewGuildID); if (NewGuildID == GUILD_NONE) @@ -7198,13 +7192,12 @@ void Client::Handle_OP_GuildCreate(const EQApplicationPacket *app) void Client::Handle_OP_GuildDelete(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildDelete"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildDelete"); if (!IsInAGuild() || !guild_mgr.IsGuildLeader(GuildID(), CharacterID())) Message(0, "You are not a guild leader or not in a guild."); else { - mlog(GUILDS__ACTIONS, "Deleting guild %s (%d)", guild_mgr.GetGuildName(GuildID()), GuildID()); + Log.Out(Logs::Detail, Logs::Guilds, "Deleting guild %s (%d)", guild_mgr.GetGuildName(GuildID()), GuildID()); if (!guild_mgr.DeleteGuild(GuildID())) Message(0, "Guild delete failed."); else { @@ -7215,11 +7208,10 @@ void Client::Handle_OP_GuildDelete(const EQApplicationPacket *app) void Client::Handle_OP_GuildDemote(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildDemote"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildDemote"); if (app->size != sizeof(GuildDemoteStruct)) { - mlog(GUILDS__ERROR, "Error: app size of %i != size of GuildDemoteStruct of %i\n", app->size, sizeof(GuildDemoteStruct)); + Log.Out(Logs::Detail, Logs::Guilds, "Error: app size of %i != size of GuildDemoteStruct of %i\n", app->size, sizeof(GuildDemoteStruct)); return; } @@ -7249,7 +7241,7 @@ void Client::Handle_OP_GuildDemote(const EQApplicationPacket *app) uint8 rank = gci.rank - 1; - mlog(GUILDS__ACTIONS, "Demoting %s (%d) from rank %s (%d) to %s (%d) in %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Demoting %s (%d) from rank %s (%d) to %s (%d) in %s (%d)", demote->target, gci.char_id, guild_mgr.GetRankName(GuildID(), gci.rank), gci.rank, guild_mgr.GetRankName(GuildID(), rank), rank, @@ -7267,8 +7259,7 @@ void Client::Handle_OP_GuildDemote(const EQApplicationPacket *app) void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildInvite"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildInvite"); if (app->size != sizeof(GuildCommand_Struct)) { std::cout << "Wrong size: OP_GuildInvite, size=" << app->size << ", expected " << sizeof(GuildCommand_Struct) << std::endl; @@ -7309,7 +7300,7 @@ void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) //we could send this to the member and prompt them to see if they want to //be demoted (I guess), but I dont see a point in that. - mlog(GUILDS__ACTIONS, "%s (%d) is demoting %s (%d) to rank %d in guild %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "%s (%d) is demoting %s (%d) to rank %d in guild %s (%d)", GetName(), CharacterID(), client->GetName(), client->CharacterID(), gc->officer, @@ -7328,7 +7319,7 @@ void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) return; } - mlog(GUILDS__ACTIONS, "%s (%d) is asking to promote %s (%d) to rank %d in guild %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "%s (%d) is asking to promote %s (%d) to rank %d in guild %s (%d)", GetName(), CharacterID(), client->GetName(), client->CharacterID(), gc->officer, @@ -7340,8 +7331,7 @@ void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) if (gc->guildeqid == 0) gc->guildeqid = GuildID(); - mlog(GUILDS__OUT_PACKETS, "Sending OP_GuildInvite for promotion to %s, length %d", client->GetName(), app->size); - mpkt(GUILDS__OUT_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Sending OP_GuildInvite for promotion to %s, length %d", client->GetName(), app->size); client->QueuePacket(app); } @@ -7364,7 +7354,7 @@ void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) return; } - mlog(GUILDS__ACTIONS, "Inviting %s (%d) into guild %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Inviting %s (%d) into guild %s (%d)", client->GetName(), client->CharacterID(), guild_mgr.GetGuildName(GuildID()), GuildID()); @@ -7374,8 +7364,7 @@ void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) if (gc->guildeqid == 0) gc->guildeqid = GuildID(); - mlog(GUILDS__OUT_PACKETS, "Sending OP_GuildInvite for invite to %s, length %d", client->GetName(), app->size); - mpkt(GUILDS__OUT_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Sending OP_GuildInvite for invite to %s, length %d", client->GetName(), app->size); client->SetPendingGuildInvitation(true); client->QueuePacket(app); @@ -7398,8 +7387,7 @@ void Client::Handle_OP_GuildInvite(const EQApplicationPacket *app) void Client::Handle_OP_GuildInviteAccept(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildInviteAccept"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildInviteAccept"); SetPendingGuildInvitation(false); @@ -7435,7 +7423,7 @@ void Client::Handle_OP_GuildInviteAccept(const EQApplicationPacket *app) else if (!worldserver.Connected()) Message(0, "Error: World server disconnected"); else { - mlog(GUILDS__ACTIONS, "Guild Invite Accept: guild %d, response %d, inviter %s, person %s", + Log.Out(Logs::Detail, Logs::Guilds, "Guild Invite Accept: guild %d, response %d, inviter %s, person %s", gj->guildeqid, gj->response, gj->inviter, gj->newmember); //we dont really care a lot about what this packet means, as long as @@ -7449,7 +7437,7 @@ void Client::Handle_OP_GuildInviteAccept(const EQApplicationPacket *app) if (gj->guildeqid == GuildID()) { //only need to change rank. - mlog(GUILDS__ACTIONS, "Changing guild rank of %s (%d) to rank %d in guild %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Changing guild rank of %s (%d) to rank %d in guild %s (%d)", GetName(), CharacterID(), gj->response, guild_mgr.GetGuildName(GuildID()), GuildID()); @@ -7461,7 +7449,7 @@ void Client::Handle_OP_GuildInviteAccept(const EQApplicationPacket *app) } else { - mlog(GUILDS__ACTIONS, "Adding %s (%d) to guild %s (%d) at rank %d", + Log.Out(Logs::Detail, Logs::Guilds, "Adding %s (%d) to guild %s (%d) at rank %d", GetName(), CharacterID(), guild_mgr.GetGuildName(gj->guildeqid), gj->guildeqid, gj->response); @@ -7490,11 +7478,10 @@ void Client::Handle_OP_GuildInviteAccept(const EQApplicationPacket *app) void Client::Handle_OP_GuildLeader(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildLeader"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildLeader"); if (app->size < 2) { - mlog(GUILDS__ERROR, "Invalid length %d on OP_GuildLeader", app->size); + Log.Out(Logs::Detail, Logs::Guilds, "Invalid length %d on OP_GuildLeader", app->size); return; } @@ -7513,7 +7500,7 @@ void Client::Handle_OP_GuildLeader(const EQApplicationPacket *app) Client* newleader = entity_list.GetClientByName(gml->target); if (newleader) { - mlog(GUILDS__ACTIONS, "Transfering leadership of %s (%d) to %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Transfering leadership of %s (%d) to %s (%d)", guild_mgr.GetGuildName(GuildID()), GuildID(), newleader->GetName(), newleader->CharacterID()); @@ -7534,10 +7521,9 @@ void Client::Handle_OP_GuildLeader(const EQApplicationPacket *app) void Client::Handle_OP_GuildManageBanker(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Got OP_GuildManageBanker of len %d", app->size); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Got OP_GuildManageBanker of len %d", app->size); if (app->size != sizeof(GuildManageBanker_Struct)) { - mlog(GUILDS__ERROR, "Error: app size of %i != size of OP_GuildManageBanker of %i\n", app->size, sizeof(GuildManageBanker_Struct)); + Log.Out(Logs::Detail, Logs::Guilds, "Error: app size of %i != size of OP_GuildManageBanker of %i\n", app->size, sizeof(GuildManageBanker_Struct)); return; } GuildManageBanker_Struct* gmb = (GuildManageBanker_Struct*)app->pBuffer; @@ -7612,18 +7598,16 @@ void Client::Handle_OP_GuildManageBanker(const EQApplicationPacket *app) void Client::Handle_OP_GuildPeace(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Got OP_GuildPeace of len %d", app->size); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Got OP_GuildPeace of len %d", app->size); return; } void Client::Handle_OP_GuildPromote(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildPromote"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildPromote"); if (app->size != sizeof(GuildPromoteStruct)) { - mlog(GUILDS__ERROR, "Error: app size of %i != size of GuildDemoteStruct of %i\n", app->size, sizeof(GuildPromoteStruct)); + Log.Out(Logs::Detail, Logs::Guilds, "Error: app size of %i != size of GuildDemoteStruct of %i\n", app->size, sizeof(GuildPromoteStruct)); return; } @@ -7655,7 +7639,7 @@ void Client::Handle_OP_GuildPromote(const EQApplicationPacket *app) } - mlog(GUILDS__ACTIONS, "Promoting %s (%d) from rank %s (%d) to %s (%d) in %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Promoting %s (%d) from rank %s (%d) to %s (%d) in %s (%d)", promote->target, gci.char_id, guild_mgr.GetRankName(GuildID(), gci.rank), gci.rank, guild_mgr.GetRankName(GuildID(), rank), rank, @@ -7672,8 +7656,7 @@ void Client::Handle_OP_GuildPromote(const EQApplicationPacket *app) void Client::Handle_OP_GuildPublicNote(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildPublicNote"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildPublicNote"); if (app->size < sizeof(GuildUpdate_PublicNote)) { // client calls for a motd on login even if they arent in a guild @@ -7692,7 +7675,7 @@ void Client::Handle_OP_GuildPublicNote(const EQApplicationPacket *app) return; } - mlog(GUILDS__ACTIONS, "Setting public note on %s (%d) in guild %s (%d) to: %s", + Log.Out(Logs::Detail, Logs::Guilds, "Setting public note on %s (%d) in guild %s (%d) to: %s", gpn->target, gci.char_id, guild_mgr.GetGuildName(GuildID()), GuildID(), gpn->note); @@ -7709,8 +7692,7 @@ void Client::Handle_OP_GuildPublicNote(const EQApplicationPacket *app) void Client::Handle_OP_GuildRemove(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_GuildRemove"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_GuildRemove"); if (app->size != sizeof(GuildCommand_Struct)) { std::cout << "Wrong size: OP_GuildRemove, size=" << app->size << ", expected " << sizeof(GuildCommand_Struct) << std::endl; @@ -7740,7 +7722,7 @@ void Client::Handle_OP_GuildRemove(const EQApplicationPacket *app) } char_id = client->CharacterID(); - mlog(GUILDS__ACTIONS, "Removing %s (%d) from guild %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Removing %s (%d) from guild %s (%d)", client->GetName(), client->CharacterID(), guild_mgr.GetGuildName(GuildID()), GuildID()); } @@ -7756,7 +7738,7 @@ void Client::Handle_OP_GuildRemove(const EQApplicationPacket *app) } char_id = gci.char_id; - mlog(GUILDS__ACTIONS, "Removing remote/offline %s (%d) into guild %s (%d)", + Log.Out(Logs::Detail, Logs::Guilds, "Removing remote/offline %s (%d) into guild %s (%d)", gci.char_name.c_str(), gci.char_id, guild_mgr.GetGuildName(GuildID()), GuildID()); } @@ -7781,7 +7763,7 @@ void Client::Handle_OP_GuildStatus(const EQApplicationPacket *app) { if (app->size != sizeof(GuildStatus_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_GuildStatus expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_GuildStatus expected %i got %i", sizeof(GuildStatus_Struct), app->size); DumpPacket(app); @@ -7838,7 +7820,7 @@ void Client::Handle_OP_GuildUpdateURLAndChannel(const EQApplicationPacket *app) { if (app->size != sizeof(GuildUpdateURLAndChannel_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_GuildUpdateURLAndChannel expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_GuildUpdateURLAndChannel expected %i got %i", sizeof(GuildUpdateURLAndChannel_Struct), app->size); DumpPacket(app); @@ -7866,8 +7848,7 @@ void Client::Handle_OP_GuildUpdateURLAndChannel(const EQApplicationPacket *app) void Client::Handle_OP_GuildWar(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Got OP_GuildWar of len %d", app->size); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Got OP_GuildWar of len %d", app->size); return; } @@ -7943,7 +7924,7 @@ void Client::Handle_OP_HideCorpse(const EQApplicationPacket *app) // if (app->size != sizeof(HideCorpse_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_HideCorpse expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_HideCorpse expected %i got %i", sizeof(HideCorpse_Struct), app->size); DumpPacket(app); @@ -7972,7 +7953,7 @@ void Client::Handle_OP_Ignore(const EQApplicationPacket *app) void Client::Handle_OP_Illusion(const EQApplicationPacket *app) { if (app->size != sizeof(Illusion_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized OP_Illusion: got %d, expected %d", app->size, + Log.Out(Logs::General, Logs::Error, "Received invalid sized OP_Illusion: got %d, expected %d", app->size, sizeof(Illusion_Struct)); DumpPacket(app); return; @@ -8002,7 +7983,7 @@ void Client::Handle_OP_InspectAnswer(const EQApplicationPacket *app) { if (app->size != sizeof(InspectResponse_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_InspectAnswer, size=%i, expected %i", app->size, sizeof(InspectResponse_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_InspectAnswer, size=%i, expected %i", app->size, sizeof(InspectResponse_Struct)); return; } @@ -8057,7 +8038,7 @@ void Client::Handle_OP_InspectMessageUpdate(const EQApplicationPacket *app) { if (app->size != sizeof(InspectMessage_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_InspectMessageUpdate, size=%i, expected %i", app->size, sizeof(InspectMessage_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_InspectMessageUpdate, size=%i, expected %i", app->size, sizeof(InspectMessage_Struct)); return; } @@ -8071,7 +8052,7 @@ void Client::Handle_OP_InspectRequest(const EQApplicationPacket *app) { if (app->size != sizeof(Inspect_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_InspectRequest, size=%i, expected %i", app->size, sizeof(Inspect_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_InspectRequest, size=%i, expected %i", app->size, sizeof(Inspect_Struct)); return; } @@ -8108,7 +8089,7 @@ void Client::Handle_OP_InstillDoubt(const EQApplicationPacket *app) void Client::Handle_OP_ItemLinkClick(const EQApplicationPacket *app) { if (app->size != sizeof(ItemViewRequest_Struct)){ - LogFile->write(EQEmuLog::Error, "Wrong size on OP_ItemLinkClick. Got: %i, Expected: %i", app->size, sizeof(ItemViewRequest_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size on OP_ItemLinkClick. Got: %i, Expected: %i", app->size, sizeof(ItemViewRequest_Struct)); DumpPacket(app); return; } @@ -8208,7 +8189,7 @@ void Client::Handle_OP_ItemLinkClick(const EQApplicationPacket *app) void Client::Handle_OP_ItemLinkResponse(const EQApplicationPacket *app) { if (app->size != sizeof(LDONItemViewRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_ItemLinkResponse expected:%i got:%i", sizeof(LDONItemViewRequest_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_ItemLinkResponse expected:%i got:%i", sizeof(LDONItemViewRequest_Struct), app->size); return; } LDONItemViewRequest_Struct* item = (LDONItemViewRequest_Struct*)app->pBuffer; @@ -8223,7 +8204,7 @@ void Client::Handle_OP_ItemLinkResponse(const EQApplicationPacket *app) void Client::Handle_OP_ItemName(const EQApplicationPacket *app) { if (app->size != sizeof(ItemNamePacket_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for ItemNamePacket_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for ItemNamePacket_Struct: Expected: %i, Got: %i", sizeof(ItemNamePacket_Struct), app->size); return; } @@ -8421,7 +8402,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) { if (app->size != sizeof(ItemVerifyRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_ItemVerifyRequest expected:%i got:%i", sizeof(ItemVerifyRequest_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_ItemVerifyRequest expected:%i got:%i", sizeof(ItemVerifyRequest_Struct), app->size); return; } @@ -8449,7 +8430,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) } if (slot_id < 0) { - LogFile->write(EQEmuLog::Debug, "Unknown slot being used by %s, slot being used is: %i", GetName(), request->slot); + Log.Out(Logs::General, Logs::None, "Unknown slot being used by %s, slot being used is: %i", GetName(), request->slot); return; } @@ -8492,7 +8473,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) return; } - LogFile->write(EQEmuLog::Debug, "OP ItemVerifyRequest: spell=%i, target=%i, inv=%i", spell_id, target_id, slot_id); + Log.Out(Logs::General, Logs::None, "OP ItemVerifyRequest: spell=%i, target=%i, inv=%i", spell_id, target_id, slot_id); if (m_inv.SupportsClickCasting(slot_id) || ((item->ItemType == ItemTypePotion || item->PotionBelt) && m_inv.SupportsPotionBeltCasting(slot_id))) // sanity check { @@ -8530,7 +8511,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) if ((spell_id <= 0) && (item->ItemType != ItemTypeFood && item->ItemType != ItemTypeDrink && item->ItemType != ItemTypeAlcohol && item->ItemType != ItemTypeSpell)) { - LogFile->write(EQEmuLog::Debug, "Item with no effect right clicked by %s", GetName()); + Log.Out(Logs::General, Logs::None, "Item with no effect right clicked by %s", GetName()); } else if (inst->IsType(ItemClassCommon)) { @@ -8603,7 +8584,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) { if (item->ItemType != ItemTypeFood && item->ItemType != ItemTypeDrink && item->ItemType != ItemTypeAlcohol) { - LogFile->write(EQEmuLog::Debug, "Error: unknown item->Click.Type (%i)", item->Click.Type); + Log.Out(Logs::General, Logs::None, "Error: unknown item->Click.Type (%i)", item->Click.Type); } else { @@ -8619,7 +8600,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) else if (item->ItemType == ItemTypeAlcohol) { #if EQDEBUG >= 1 - LogFile->write(EQEmuLog::Debug, "Drinking Alcohol from slot:%i", slot_id); + Log.Out(Logs::General, Logs::None, "Drinking Alcohol from slot:%i", slot_id); #endif // This Seems to be handled in OP_DeleteItem handling //DeleteItemInInventory(slot_id, 1, false); @@ -8646,7 +8627,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) } else { - LogFile->write(EQEmuLog::Debug, "Error: unknown item->Click.Type (%i)", item->Click.Type); + Log.Out(Logs::General, Logs::None, "Error: unknown item->Click.Type (%i)", item->Click.Type); } } } @@ -8787,7 +8768,7 @@ void Client::Handle_OP_LDoNSenseTraps(const EQApplicationPacket *app) void Client::Handle_OP_LeadershipExpToggle(const EQApplicationPacket *app) { if (app->size != 1) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_LeadershipExpToggle expected %i got %i", 1, app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_LeadershipExpToggle expected %i got %i", 1, app->size); DumpPacket(app); return; } @@ -8874,7 +8855,7 @@ void Client::Handle_OP_LFGGetMatchesRequest(const EQApplicationPacket *app) { if (app->size != sizeof(LFGGetMatchesRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_LFGGetMatchesRequest, size=%i, expected %i", app->size, sizeof(LFGGetMatchesRequest_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_LFGGetMatchesRequest, size=%i, expected %i", app->size, sizeof(LFGGetMatchesRequest_Struct)); DumpPacket(app); return; } @@ -9034,7 +9015,7 @@ void Client::Handle_OP_LFPCommand(const EQApplicationPacket *app) { if (app->size != sizeof(LFP_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_LFPCommand, size=%i, expected %i", app->size, sizeof(LFP_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_LFPCommand, size=%i, expected %i", app->size, sizeof(LFP_Struct)); DumpPacket(app); return; } @@ -9071,7 +9052,7 @@ void Client::Handle_OP_LFPCommand(const EQApplicationPacket *app) // This should not happen. The client checks if you are in a group and will not let you put LFP on if // you are not the leader. if (!g->IsLeader(this)) { - LogFile->write(EQEmuLog::Error, "Client sent LFP on for character %s who is grouped but not leader.", GetName()); + Log.Out(Logs::General, Logs::Error, "Client sent LFP on for character %s who is grouped but not leader.", GetName()); return; } // Fill the LFPMembers array with the rest of the group members, excluding ourself @@ -9096,7 +9077,7 @@ void Client::Handle_OP_LFPGetMatchesRequest(const EQApplicationPacket *app) { if (app->size != sizeof(LFPGetMatchesRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_LFPGetMatchesRequest, size=%i, expected %i", app->size, sizeof(LFPGetMatchesRequest_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_LFPGetMatchesRequest, size=%i, expected %i", app->size, sizeof(LFPGetMatchesRequest_Struct)); DumpPacket(app); return; } @@ -9136,9 +9117,7 @@ void Client::Handle_OP_LoadSpellSet(const EQApplicationPacket *app) void Client::Handle_OP_Logout(const EQApplicationPacket *app) { - //LogFile->write(EQEMuLog::Debug, "%s sent a logout packet.", GetName()); - //we will save when we get destroyed soon anyhow - //Save(); + Log.Out(Logs::Detail, Logs::None, "%s sent a logout packet.", GetName()); SendLogoutPackets(); @@ -9152,7 +9131,7 @@ void Client::Handle_OP_Logout(const EQApplicationPacket *app) void Client::Handle_OP_LootItem(const EQApplicationPacket *app) { if (app->size != sizeof(LootingItem_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_LootItem, size=%i, expected %i", app->size, sizeof(LootingItem_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_LootItem, size=%i, expected %i", app->size, sizeof(LootingItem_Struct)); return; } @@ -9329,7 +9308,7 @@ void Client::Handle_OP_MercenaryCommand(const EQApplicationPacket *app) if (app->size != sizeof(MercenaryCommand_Struct)) { Message(13, "Size mismatch in OP_MercenaryCommand expected %i got %i", sizeof(MercenaryCommand_Struct), app->size); - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenaryCommand expected %i got %i", sizeof(MercenaryCommand_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenaryCommand expected %i got %i", sizeof(MercenaryCommand_Struct), app->size); DumpPacket(app); return; } @@ -9386,7 +9365,7 @@ void Client::Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app) // The payload is 4 bytes. The EntityID of the Mercenary Liason which are of class 71. if (app->size != sizeof(MercenaryMerchantShopRequest_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenaryDataRequest expected 4 got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenaryDataRequest expected 4 got %i", app->size); DumpPacket(app); @@ -9521,7 +9500,7 @@ void Client::Handle_OP_MercenaryDataUpdateRequest(const EQApplicationPacket *app if (app->size != 0) { Message(13, "Size mismatch in OP_MercenaryDataUpdateRequest expected 0 got %i", app->size); - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenaryDataUpdateRequest expected 0 got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenaryDataUpdateRequest expected 0 got %i", app->size); DumpPacket(app); return; } @@ -9541,7 +9520,7 @@ void Client::Handle_OP_MercenaryDismiss(const EQApplicationPacket *app) if (app->size > 1) { Message(13, "Size mismatch in OP_MercenaryDismiss expected 0 got %i", app->size); - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenaryDismiss expected 0 got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenaryDismiss expected 0 got %i", app->size); DumpPacket(app); return; } @@ -9566,7 +9545,7 @@ void Client::Handle_OP_MercenaryHire(const EQApplicationPacket *app) // The payload is 16 bytes. First four bytes are the Merc ID (Template ID) if (app->size != sizeof(MercenaryMerchantRequest_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenaryHire expected %i got %i", sizeof(MercenaryMerchantRequest_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenaryHire expected %i got %i", sizeof(MercenaryMerchantRequest_Struct), app->size); DumpPacket(app); @@ -9638,7 +9617,7 @@ void Client::Handle_OP_MercenarySuspendRequest(const EQApplicationPacket *app) if (app->size != sizeof(SuspendMercenary_Struct)) { Message(13, "Size mismatch in OP_MercenarySuspendRequest expected %i got %i", sizeof(SuspendMercenary_Struct), app->size); - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenarySuspendRequest expected %i got %i", sizeof(SuspendMercenary_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenarySuspendRequest expected %i got %i", sizeof(SuspendMercenary_Struct), app->size); DumpPacket(app); return; } @@ -9662,7 +9641,7 @@ void Client::Handle_OP_MercenaryTimerRequest(const EQApplicationPacket *app) if (app->size > 1) { Message(13, "Size mismatch in OP_MercenaryTimerRequest expected 0 got %i", app->size); - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_MercenaryTimerRequest expected 0 got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_MercenaryTimerRequest expected 0 got %i", app->size); DumpPacket(app); return; } @@ -9700,7 +9679,7 @@ void Client::Handle_OP_MercenaryTimerRequest(const EQApplicationPacket *app) void Client::Handle_OP_MoveCoin(const EQApplicationPacket *app) { if (app->size != sizeof(MoveCoin_Struct)){ - LogFile->write(EQEmuLog::Error, "Wrong size on OP_MoveCoin. Got: %i, Expected: %i", app->size, sizeof(MoveCoin_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size on OP_MoveCoin. Got: %i, Expected: %i", app->size, sizeof(MoveCoin_Struct)); DumpPacket(app); return; } @@ -9716,7 +9695,7 @@ void Client::Handle_OP_MoveItem(const EQApplicationPacket *app) } if (app->size != sizeof(MoveItem_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_MoveItem, size=%i, expected %i", app->size, sizeof(MoveItem_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_MoveItem, size=%i, expected %i", app->size, sizeof(MoveItem_Struct)); return; } @@ -9799,8 +9778,7 @@ void Client::Handle_OP_OpenContainer(const EQApplicationPacket *app) void Client::Handle_OP_OpenGuildTributeMaster(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_OpenGuildTributeMaster of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_OpenGuildTributeMaster of length %d", app->size); if (app->size != sizeof(StartTribute_Struct)) printf("Error in OP_OpenGuildTributeMaster. Expected size of: %zu, but got: %i\n", sizeof(StartTribute_Struct), app->size); @@ -9831,8 +9809,7 @@ void Client::Handle_OP_OpenInventory(const EQApplicationPacket *app) void Client::Handle_OP_OpenTributeMaster(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_OpenTributeMaster of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_OpenTributeMaster of length %d", app->size); if (app->size != sizeof(StartTribute_Struct)) printf("Error in OP_OpenTributeMaster. Expected size of: %zu, but got: %i\n", sizeof(StartTribute_Struct), app->size); @@ -9858,7 +9835,7 @@ void Client::Handle_OP_OpenTributeMaster(const EQApplicationPacket *app) void Client::Handle_OP_PDeletePetition(const EQApplicationPacket *app) { if (app->size < 2) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_PDeletePetition, size=%i, expected %i", app->size, 2); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_PDeletePetition, size=%i, expected %i", app->size, 2); return; } if (petition_list.DeletePetitionByCharName((char*)app->pBuffer)) @@ -9871,7 +9848,7 @@ void Client::Handle_OP_PDeletePetition(const EQApplicationPacket *app) void Client::Handle_OP_PetCommands(const EQApplicationPacket *app) { if (app->size != sizeof(PetCommand_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_PetCommands, size=%i, expected %i", app->size, sizeof(PetCommand_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_PetCommands, size=%i, expected %i", app->size, sizeof(PetCommand_Struct)); return; } char val1[20] = { 0 }; @@ -10334,7 +10311,7 @@ void Client::Handle_OP_PetitionBug(const EQApplicationPacket *app) void Client::Handle_OP_PetitionCheckIn(const EQApplicationPacket *app) { if (app->size != sizeof(Petition_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_PetitionCheckIn, size=%i, expected %i", app->size, sizeof(Petition_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_PetitionCheckIn, size=%i, expected %i", app->size, sizeof(Petition_Struct)); return; } Petition_Struct* inpet = (Petition_Struct*)app->pBuffer; @@ -10378,7 +10355,7 @@ void Client::Handle_OP_PetitionCheckout(const EQApplicationPacket *app) void Client::Handle_OP_PetitionDelete(const EQApplicationPacket *app) { if (app->size != sizeof(PetitionUpdate_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_PetitionDelete, size=%i, expected %i", app->size, sizeof(PetitionUpdate_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_PetitionDelete, size=%i, expected %i", app->size, sizeof(PetitionUpdate_Struct)); return; } EQApplicationPacket* outapp = new EQApplicationPacket(OP_PetitionUpdate, sizeof(PetitionUpdate_Struct)); @@ -10448,7 +10425,7 @@ void Client::Handle_OP_PickPocket(const EQApplicationPacket *app) { if (app->size != sizeof(PickPocket_Struct)) { - LogFile->write(EQEmuLog::Error, "Size mismatch for Pick Pocket packet"); + Log.Out(Logs::General, Logs::Error, "Size mismatch for Pick Pocket packet"); DumpPacket(app); } @@ -10518,7 +10495,7 @@ void Client::Handle_OP_PopupResponse(const EQApplicationPacket *app) { if (app->size != sizeof(PopupResponse_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_PopupResponse expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_PopupResponse expected %i got %i", sizeof(PopupResponse_Struct), app->size); DumpPacket(app); return; @@ -10553,7 +10530,7 @@ void Client::Handle_OP_PopupResponse(const EQApplicationPacket *app) void Client::Handle_OP_PotionBelt(const EQApplicationPacket *app) { if (app->size != sizeof(MovePotionToBelt_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_PotionBelt expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_PotionBelt expected %i got %i", sizeof(MovePotionToBelt_Struct), app->size); DumpPacket(app); return; @@ -10561,7 +10538,7 @@ void Client::Handle_OP_PotionBelt(const EQApplicationPacket *app) MovePotionToBelt_Struct *mptbs = (MovePotionToBelt_Struct*)app->pBuffer; if(!EQEmu::ValueWithin(mptbs->SlotNumber, 0U, 3U)) { - LogFile->write(EQEmuLog::Debug, "Client::Handle_OP_PotionBelt mptbs->SlotNumber out of range."); + Log.Out(Logs::General, Logs::None, "Client::Handle_OP_PotionBelt mptbs->SlotNumber out of range."); return; } @@ -10584,7 +10561,7 @@ void Client::Handle_OP_PotionBelt(const EQApplicationPacket *app) void Client::Handle_OP_PurchaseLeadershipAA(const EQApplicationPacket *app) { if (app->size != sizeof(uint32)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_LeadershipExpToggle expected %i got %i", 1, app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_LeadershipExpToggle expected %i got %i", 1, app->size); DumpPacket(app); return; } @@ -10674,7 +10651,7 @@ void Client::Handle_OP_PVPLeaderBoardDetailsRequest(const EQApplicationPacket *a // if (app->size != sizeof(PVPLeaderBoardDetailsRequest_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_PVPLeaderBoardDetailsRequest expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_PVPLeaderBoardDetailsRequest expected %i got %i", sizeof(PVPLeaderBoardDetailsRequest_Struct), app->size); DumpPacket(app); @@ -10701,7 +10678,7 @@ void Client::Handle_OP_PVPLeaderBoardRequest(const EQApplicationPacket *app) // if (app->size != sizeof(PVPLeaderBoardRequest_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_PVPLeaderBoardRequest expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_PVPLeaderBoardRequest expected %i got %i", sizeof(PVPLeaderBoardRequest_Struct), app->size); DumpPacket(app); @@ -10722,7 +10699,7 @@ void Client::Handle_OP_PVPLeaderBoardRequest(const EQApplicationPacket *app) void Client::Handle_OP_RaidCommand(const EQApplicationPacket *app) { if (app->size < sizeof(RaidGeneral_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_RaidCommand, size=%i, expected at least %i", app->size, sizeof(RaidGeneral_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_RaidCommand, size=%i, expected at least %i", app->size, sizeof(RaidGeneral_Struct)); DumpPacket(app); return; } @@ -11307,7 +11284,7 @@ void Client::Handle_OP_RaidCommand(const EQApplicationPacket *app) void Client::Handle_OP_RandomReq(const EQApplicationPacket *app) { if (app->size != sizeof(RandomReq_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_RandomReq, size=%i, expected %i", app->size, sizeof(RandomReq_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_RandomReq, size=%i, expected %i", app->size, sizeof(RandomReq_Struct)); return; } const RandomReq_Struct* rndq = (const RandomReq_Struct*)app->pBuffer; @@ -11336,7 +11313,7 @@ void Client::Handle_OP_RandomReq(const EQApplicationPacket *app) void Client::Handle_OP_ReadBook(const EQApplicationPacket *app) { if (app->size != sizeof(BookRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_ReadBook, size=%i, expected %i", app->size, sizeof(BookRequest_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_ReadBook, size=%i, expected %i", app->size, sizeof(BookRequest_Struct)); return; } BookRequest_Struct* book = (BookRequest_Struct*)app->pBuffer; @@ -11352,7 +11329,7 @@ void Client::Handle_OP_ReadBook(const EQApplicationPacket *app) void Client::Handle_OP_RecipeAutoCombine(const EQApplicationPacket *app) { if (app->size != sizeof(RecipeAutoCombine_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for RecipeAutoCombine_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for RecipeAutoCombine_Struct: Expected: %i, Got: %i", sizeof(RecipeAutoCombine_Struct), app->size); return; } @@ -11366,7 +11343,7 @@ void Client::Handle_OP_RecipeAutoCombine(const EQApplicationPacket *app) void Client::Handle_OP_RecipeDetails(const EQApplicationPacket *app) { if (app->size < sizeof(uint32)) { - LogFile->write(EQEmuLog::Error, "Invalid size for RecipeDetails Request: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for RecipeDetails Request: Expected: %i, Got: %i", sizeof(uint32), app->size); return; } @@ -11380,14 +11357,14 @@ void Client::Handle_OP_RecipeDetails(const EQApplicationPacket *app) void Client::Handle_OP_RecipesFavorite(const EQApplicationPacket *app) { if (app->size != sizeof(TradeskillFavorites_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for TradeskillFavorites_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for TradeskillFavorites_Struct: Expected: %i, Got: %i", sizeof(TradeskillFavorites_Struct), app->size); return; } TradeskillFavorites_Struct* tsf = (TradeskillFavorites_Struct*)app->pBuffer; - LogFile->write(EQEmuLog::Debug, "Requested Favorites for: %d - %d\n", tsf->object_type, tsf->some_id); + Log.Out(Logs::General, Logs::None, "Requested Favorites for: %d - %d\n", tsf->object_type, tsf->some_id); // results show that object_type is combiner type // some_id = 0 if world combiner, item number otherwise @@ -11439,7 +11416,7 @@ void Client::Handle_OP_RecipesFavorite(const EQApplicationPacket *app) void Client::Handle_OP_RecipesSearch(const EQApplicationPacket *app) { if (app->size != sizeof(RecipesSearch_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for RecipesSearch_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for RecipesSearch_Struct: Expected: %i, Got: %i", sizeof(RecipesSearch_Struct), app->size); return; } @@ -11448,7 +11425,7 @@ void Client::Handle_OP_RecipesSearch(const EQApplicationPacket *app) rss->query[55] = '\0'; //just to be sure. - LogFile->write(EQEmuLog::Debug, "Requested search recipes for: %d - %d\n", rss->object_type, rss->some_id); + Log.Out(Logs::General, Logs::None, "Requested search recipes for: %d - %d\n", rss->object_type, rss->some_id); // make where clause segment for container(s) char containers[30]; @@ -11508,7 +11485,7 @@ void Client::Handle_OP_RemoveBlockedBuffs(const EQApplicationPacket *app) if (app->size != sizeof(BlockedBuffs_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_RemoveBlockedBuffs expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_RemoveBlockedBuffs expected %i got %i", sizeof(BlockedBuffs_Struct), app->size); DumpPacket(app); @@ -11671,7 +11648,7 @@ void Client::Handle_OP_RespawnWindow(const EQApplicationPacket *app) // if (app->size != 4) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_RespawnWindow expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_RespawnWindow expected %i got %i", 4, app->size); DumpPacket(app); return; @@ -11699,10 +11676,9 @@ void Client::Handle_OP_RezzAnswer(const EQApplicationPacket *app) const Resurrect_Struct* ra = (const Resurrect_Struct*)app->pBuffer; - _log(SPELLS__REZ, "Received OP_RezzAnswer from client. Pendingrezzexp is %i, action is %s", + Log.Out(Logs::Detail, Logs::Spells, "Received OP_RezzAnswer from client. Pendingrezzexp is %i, action is %s", PendingRezzXP, ra->action ? "ACCEPT" : "DECLINE"); - _pkt(SPELLS__REZ, app); OPRezzAnswer(ra->action, ra->spellid, ra->zone_id, ra->instance_id, ra->x, ra->y, ra->z); @@ -11722,14 +11698,14 @@ void Client::Handle_OP_Sacrifice(const EQApplicationPacket *app) { if (app->size != sizeof(Sacrifice_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_Sacrifice expected %i got %i", sizeof(Sacrifice_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_Sacrifice expected %i got %i", sizeof(Sacrifice_Struct), app->size); DumpPacket(app); return; } Sacrifice_Struct *ss = (Sacrifice_Struct*)app->pBuffer; if (!PendingSacrifice) { - LogFile->write(EQEmuLog::Error, "Unexpected OP_Sacrifice reply"); + Log.Out(Logs::General, Logs::Error, "Unexpected OP_Sacrifice reply"); DumpPacket(app); return; } @@ -11767,13 +11743,12 @@ void Client::Handle_OP_SaveOnZoneReq(const EQApplicationPacket *app) void Client::Handle_OP_SelectTribute(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_SelectTribute of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_SelectTribute of length %d", app->size); //we should enforce being near a real tribute master to change this //but im not sure how I wanna do that right now. if (app->size != sizeof(SelectTributeReq_Struct)) - LogFile->write(EQEmuLog::Error, "Invalid size on OP_SelectTribute packet"); + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_SelectTribute packet"); else { SelectTributeReq_Struct *t = (SelectTributeReq_Struct *)app->pBuffer; SendTributeDetails(t->client_id, t->tribute_id); @@ -11850,8 +11825,7 @@ void Client::Handle_OP_SenseTraps(const EQApplicationPacket *app) void Client::Handle_OP_SetGuildMOTD(const EQApplicationPacket *app) { - mlog(GUILDS__IN_PACKETS, "Received OP_SetGuildMOTD"); - mpkt(GUILDS__IN_PACKET_TRACE, app); + Log.Out(Logs::Detail, Logs::Guilds, "Received OP_SetGuildMOTD"); if (app->size != sizeof(GuildMOTD_Struct)) { // client calls for a motd on login even if they arent in a guild @@ -11869,7 +11843,7 @@ void Client::Handle_OP_SetGuildMOTD(const EQApplicationPacket *app) GuildMOTD_Struct* gmotd = (GuildMOTD_Struct*)app->pBuffer; - mlog(GUILDS__ACTIONS, "Setting MOTD for %s (%d) to: %s - %s", + Log.Out(Logs::Detail, Logs::Guilds, "Setting MOTD for %s (%d) to: %s - %s", guild_mgr.GetGuildName(GuildID()), GuildID(), GetName(), gmotd->motd); if (!guild_mgr.SetGuildMOTD(GuildID(), gmotd->motd, GetName())) { @@ -11887,7 +11861,7 @@ void Client::Handle_OP_SetRunMode(const EQApplicationPacket *app) void Client::Handle_OP_SetServerFilter(const EQApplicationPacket *app) { if (app->size != sizeof(SetServerFilter_Struct)) { - LogFile->write(EQEmuLog::Error, "Received invalid sized " + Log.Out(Logs::General, Logs::Error, "Received invalid sized " "OP_SetServerFilter: got %d, expected %d", app->size, sizeof(SetServerFilter_Struct)); DumpPacket(app); @@ -11907,7 +11881,7 @@ void Client::Handle_OP_SetStartCity(const EQApplicationPacket *app) } if (app->size < 1) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_SetStartCity, size=%i, expected %i", app->size, 1); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_SetStartCity, size=%i, expected %i", app->size, 1); DumpPacket(app); return; } @@ -11921,7 +11895,7 @@ void Client::Handle_OP_SetStartCity(const EQApplicationPacket *app) m_pp.class_, m_pp.deity, m_pp.race); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "No valid start zones found for /setstartcity"); + Log.Out(Logs::General, Logs::Error, "No valid start zones found for /setstartcity"); return; } @@ -11972,7 +11946,7 @@ void Client::Handle_OP_SetStartCity(const EQApplicationPacket *app) void Client::Handle_OP_SetTitle(const EQApplicationPacket *app) { if (app->size != sizeof(SetTitle_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_SetTitle expected %i got %i", sizeof(SetTitle_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_SetTitle expected %i got %i", sizeof(SetTitle_Struct), app->size); DumpPacket(app); return; } @@ -11996,7 +11970,7 @@ void Client::Handle_OP_SetTitle(const EQApplicationPacket *app) void Client::Handle_OP_Shielding(const EQApplicationPacket *app) { if (app->size != sizeof(Shielding_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_Shielding expected:%i got:%i", sizeof(Shielding_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_Shielding expected:%i got:%i", sizeof(Shielding_Struct), app->size); return; } if (GetClass() != WARRIOR) @@ -12093,7 +12067,7 @@ void Client::Handle_OP_ShopEnd(const EQApplicationPacket *app) void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) { if (app->size != sizeof(Merchant_Sell_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size on OP_ShopPlayerBuy: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_ShopPlayerBuy: Expected %i, Got %i", sizeof(Merchant_Sell_Struct), app->size); return; } @@ -12101,7 +12075,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) t1.start(); Merchant_Sell_Struct* mp = (Merchant_Sell_Struct*)app->pBuffer; #if EQDEBUG >= 5 - LogFile->write(EQEmuLog::Debug, "%s, purchase item..", GetName()); + Log.Out(Logs::General, Logs::None, "%s, purchase item..", GetName()); DumpPacket(app); #endif @@ -12261,7 +12235,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) SendItemPacket(freeslotid, inst, ItemPacketTrade); } else if (!stacked){ - LogFile->write(EQEmuLog::Error, "OP_ShopPlayerBuy: item->ItemClass Unknown! Type: %i", item->ItemClass); + Log.Out(Logs::General, Logs::Error, "OP_ShopPlayerBuy: item->ItemClass Unknown! Type: %i", item->ItemClass); } QueuePacket(outapp); if (inst && tmpmer_used){ @@ -12351,7 +12325,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) void Client::Handle_OP_ShopPlayerSell(const EQApplicationPacket *app) { if (app->size != sizeof(Merchant_Purchase_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size on OP_ShopPlayerSell: Expected %i, Got %i", + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_ShopPlayerSell: Expected %i, Got %i", sizeof(Merchant_Purchase_Struct), app->size); return; } @@ -12507,7 +12481,7 @@ void Client::Handle_OP_ShopPlayerSell(const EQApplicationPacket *app) void Client::Handle_OP_ShopRequest(const EQApplicationPacket *app) { if (app->size != sizeof(Merchant_Click_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_ShopRequest, size=%i, expected %i", app->size, sizeof(Merchant_Click_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_ShopRequest, size=%i, expected %i", app->size, sizeof(Merchant_Click_Struct)); return; } @@ -12800,7 +12774,7 @@ void Client::Handle_OP_SpawnAppearance(const EQApplicationPacket *app) void Client::Handle_OP_Split(const EQApplicationPacket *app) { if (app->size != sizeof(Split_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_Split, size=%i, expected %i", app->size, sizeof(Split_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_Split, size=%i, expected %i", app->size, sizeof(Split_Struct)); return; } // The client removes the money on its own, but we have to @@ -12837,7 +12811,7 @@ void Client::Handle_OP_Surname(const EQApplicationPacket *app) { if (app->size != sizeof(Surname_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in Surname expected %i got %i", sizeof(Surname_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in Surname expected %i got %i", sizeof(Surname_Struct), app->size); return; } @@ -12927,7 +12901,7 @@ void Client::Handle_OP_SwapSpell(const EQApplicationPacket *app) void Client::Handle_OP_TargetCommand(const EQApplicationPacket *app) { if (app->size != sizeof(ClientTarget_Struct)) { - LogFile->write(EQEmuLog::Error, "OP size error: OP_TargetMouse expected:%i got:%i", sizeof(ClientTarget_Struct), app->size); + Log.Out(Logs::General, Logs::Error, "OP size error: OP_TargetMouse expected:%i got:%i", sizeof(ClientTarget_Struct), app->size); return; } @@ -13152,7 +13126,7 @@ void Client::Handle_OP_TaskHistoryRequest(const EQApplicationPacket *app) { if (app->size != sizeof(TaskHistoryRequest_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_TaskHistoryRequest expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_TaskHistoryRequest expected %i got %i", sizeof(TaskHistoryRequest_Struct), app->size); DumpPacket(app); return; @@ -13205,7 +13179,7 @@ void Client::Handle_OP_Track(const EQApplicationPacket *app) CheckIncreaseSkill(SkillTracking, nullptr, 15); if (!entity_list.MakeTrackPacket(this)) - LogFile->write(EQEmuLog::Error, "Unable to generate OP_Track packet requested by client."); + Log.Out(Logs::General, Logs::Error, "Unable to generate OP_Track packet requested by client."); return; } @@ -13219,7 +13193,7 @@ void Client::Handle_OP_TrackTarget(const EQApplicationPacket *app) if (app->size != sizeof(TrackTarget_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for OP_TrackTarget: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for OP_TrackTarget: Expected: %i, Got: %i", sizeof(TrackTarget_Struct), app->size); return; } @@ -13372,7 +13346,7 @@ void Client::Handle_OP_TradeAcceptClick(const EQApplicationPacket *app) void Client::Handle_OP_TradeBusy(const EQApplicationPacket *app) { if (app->size != sizeof(TradeBusy_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_TradeBusy, size=%i, expected %i", app->size, sizeof(TradeBusy_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_TradeBusy, size=%i, expected %i", app->size, sizeof(TradeBusy_Struct)); return; } // Trade request recipient is cancelling the trade due to being busy @@ -13394,7 +13368,6 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) // SoF sends 1 or more unhandled OP_Trader packets of size 96 when a trade has completed. // I don't know what they are for (yet), but it doesn't seem to matter that we ignore them. - _pkt(TRADING__PACKETS, app); uint32 max_items = 80; @@ -13420,7 +13393,7 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) if (c) c->WithCustomer(0); else - _log(TRADING__CLIENT, "Client::Handle_OP_TraderBuy: Null Client Pointer"); + Log.Out(Logs::Detail, Logs::Trading, "Client::Handle_OP_TraderBuy: Null Client Pointer"); break; } @@ -13429,7 +13402,7 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) break; } default: { - _log(TRADING__CLIENT, "Unhandled action code in OP_Trader ShowItems_Struct"); + Log.Out(Logs::Detail, Logs::Trading, "Unhandled action code in OP_Trader ShowItems_Struct"); break; } } @@ -13501,7 +13474,6 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) TraderStatus_Struct* tss = (TraderStatus_Struct*)outapp->pBuffer; tss->Code = BazaarTrader_StartTraderMode2; QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); } } @@ -13515,10 +13487,10 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) } } else { - _log(TRADING__CLIENT, "Client::Handle_OP_Trader: Unknown TraderStruct code of: %i\n", + Log.Out(Logs::Detail, Logs::Trading, "Client::Handle_OP_Trader: Unknown TraderStruct code of: %i\n", ints->Code); - LogFile->write(EQEmuLog::Error, "Unknown TraderStruct code of: %i\n", ints->Code); + Log.Out(Logs::General, Logs::Error, "Unknown TraderStruct code of: %i\n", ints->Code); } } @@ -13527,8 +13499,8 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) HandleTraderPriceUpdate(app); } else { - _log(TRADING__CLIENT, "Unknown size for OP_Trader: %i\n", app->size); - LogFile->write(EQEmuLog::Error, "Unknown size for OP_Trader: %i\n", app->size); + Log.Out(Logs::Detail, Logs::Trading, "Unknown size for OP_Trader: %i\n", app->size); + Log.Out(Logs::General, Logs::Error, "Unknown size for OP_Trader: %i\n", app->size); DumpPacket(app); return; } @@ -13542,7 +13514,6 @@ void Client::Handle_OP_TraderBuy(const EQApplicationPacket *app) // // Client has elected to buy an item from a Trader // - _pkt(TRADING__PACKETS, app); if (app->size == sizeof(TraderBuy_Struct)){ @@ -13553,11 +13524,11 @@ void Client::Handle_OP_TraderBuy(const EQApplicationPacket *app) BuyTraderItem(tbs, Trader, app); } else { - _log(TRADING__CLIENT, "Client::Handle_OP_TraderBuy: Null Client Pointer"); + Log.Out(Logs::Detail, Logs::Trading, "Client::Handle_OP_TraderBuy: Null Client Pointer"); } } else { - _log(TRADING__CLIENT, "Client::Handle_OP_TraderBuy: Struct size mismatch"); + Log.Out(Logs::Detail, Logs::Trading, "Client::Handle_OP_TraderBuy: Struct size mismatch"); } return; @@ -13566,7 +13537,7 @@ void Client::Handle_OP_TraderBuy(const EQApplicationPacket *app) void Client::Handle_OP_TradeRequest(const EQApplicationPacket *app) { if (app->size != sizeof(TradeRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_TradeRequest, size=%i, expected %i", app->size, sizeof(TradeRequest_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_TradeRequest, size=%i, expected %i", app->size, sizeof(TradeRequest_Struct)); return; } // Client requesting a trade session from an npc/client @@ -13602,7 +13573,7 @@ void Client::Handle_OP_TradeRequest(const EQApplicationPacket *app) void Client::Handle_OP_TradeRequestAck(const EQApplicationPacket *app) { if (app->size != sizeof(TradeRequest_Struct)) { - LogFile->write(EQEmuLog::Error, "Wrong size: OP_TradeRequestAck, size=%i, expected %i", app->size, sizeof(TradeRequest_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size: OP_TradeRequestAck, size=%i, expected %i", app->size, sizeof(TradeRequest_Struct)); return; } // Trade request recipient is acknowledging they are able to trade @@ -13625,13 +13596,12 @@ void Client::Handle_OP_TraderShop(const EQApplicationPacket *app) // This is when a potential purchaser right clicks on this client who is in Trader mode to // browse their goods. // - _pkt(TRADING__PACKETS, app); TraderClick_Struct* tcs = (TraderClick_Struct*)app->pBuffer; if (app->size != sizeof(TraderClick_Struct)) { - _log(TRADING__CLIENT, "Client::Handle_OP_TraderShop: Returning due to struct size mismatch"); + Log.Out(Logs::Detail, Logs::Trading, "Client::Handle_OP_TraderShop: Returning due to struct size mismatch"); return; } @@ -13645,7 +13615,7 @@ void Client::Handle_OP_TraderShop(const EQApplicationPacket *app) if (Customer) outtcs->Approval = Customer->WithCustomer(GetID()); else { - _log(TRADING__CLIENT, "Client::Handle_OP_TraderShop: entity_list.GetClientByID(tcs->traderid)" + Log.Out(Logs::Detail, Logs::Trading, "Client::Handle_OP_TraderShop: entity_list.GetClientByID(tcs->traderid)" " returned a nullptr pointer"); return; } @@ -13656,7 +13626,6 @@ void Client::Handle_OP_TraderShop(const EQApplicationPacket *app) QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); if (outtcs->Approval) { this->BulkSendTraderInventory(Customer->CharacterID()); @@ -13673,7 +13642,7 @@ void Client::Handle_OP_TraderShop(const EQApplicationPacket *app) void Client::Handle_OP_TradeSkillCombine(const EQApplicationPacket *app) { if (app->size != sizeof(NewCombine_Struct)) { - LogFile->write(EQEmuLog::Error, "Invalid size for NewCombine_Struct: Expected: %i, Got: %i", + Log.Out(Logs::General, Logs::Error, "Invalid size for NewCombine_Struct: Expected: %i, Got: %i", sizeof(NewCombine_Struct), app->size); return; } @@ -13694,7 +13663,7 @@ void Client::Handle_OP_Translocate(const EQApplicationPacket *app) { if (app->size != sizeof(Translocate_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_Translocate expected %i got %i", sizeof(Translocate_Struct), app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_Translocate expected %i got %i", sizeof(Translocate_Struct), app->size); DumpPacket(app); return; } @@ -13742,8 +13711,7 @@ void Client::Handle_OP_Translocate(const EQApplicationPacket *app) void Client::Handle_OP_TributeItem(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_TributeItem of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_TributeItem of length %d", app->size); //player donates an item... if (app->size != sizeof(TributeItem_Struct)) @@ -13761,8 +13729,7 @@ void Client::Handle_OP_TributeItem(const EQApplicationPacket *app) t->tribute_points = TributeItem(t->slot, t->quantity); - _log(TRIBUTE__OUT, "Sending tribute item reply with %d points", t->tribute_points); - _pkt(TRIBUTE__OUT, app); + Log.Out(Logs::Detail, Logs::Tribute, "Sending tribute item reply with %d points", t->tribute_points); QueuePacket(app); } @@ -13771,8 +13738,7 @@ void Client::Handle_OP_TributeItem(const EQApplicationPacket *app) void Client::Handle_OP_TributeMoney(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_TributeMoney of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_TributeMoney of length %d", app->size); //player donates money if (app->size != sizeof(TributeMoney_Struct)) @@ -13790,8 +13756,7 @@ void Client::Handle_OP_TributeMoney(const EQApplicationPacket *app) t->tribute_points = TributeMoney(t->platinum); - _log(TRIBUTE__OUT, "Sending tribute money reply with %d points", t->tribute_points); - _pkt(TRIBUTE__OUT, app); + Log.Out(Logs::Detail, Logs::Tribute, "Sending tribute money reply with %d points", t->tribute_points); QueuePacket(app); } @@ -13800,19 +13765,17 @@ void Client::Handle_OP_TributeMoney(const EQApplicationPacket *app) void Client::Handle_OP_TributeNPC(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_TributeNPC of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_TributeNPC of length %d", app->size); return; } void Client::Handle_OP_TributeToggle(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_TributeToggle of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_TributeToggle of length %d", app->size); if (app->size != sizeof(uint32)) - LogFile->write(EQEmuLog::Error, "Invalid size on OP_TributeToggle packet"); + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_TributeToggle packet"); else { uint32 *val = (uint32 *)app->pBuffer; ToggleTribute(*val ? true : false); @@ -13822,12 +13785,11 @@ void Client::Handle_OP_TributeToggle(const EQApplicationPacket *app) void Client::Handle_OP_TributeUpdate(const EQApplicationPacket *app) { - _log(TRIBUTE__IN, "Received OP_TributeUpdate of length %d", app->size); - _pkt(TRIBUTE__IN, app); + Log.Out(Logs::Detail, Logs::Tribute, "Received OP_TributeUpdate of length %d", app->size); //sent when the client changes their tribute settings... if (app->size != sizeof(TributeInfo_Struct)) - LogFile->write(EQEmuLog::Error, "Invalid size on OP_TributeUpdate packet"); + Log.Out(Logs::General, Logs::Error, "Invalid size on OP_TributeUpdate packet"); else { TributeInfo_Struct *t = (TributeInfo_Struct *)app->pBuffer; ChangeTributeSettings(t); @@ -13839,8 +13801,7 @@ void Client::Handle_OP_VetClaimRequest(const EQApplicationPacket *app) { if (app->size < sizeof(VeteranClaimRequest)) { - LogFile->write(EQEmuLog::Debug, "OP_VetClaimRequest size lower than expected: got %u expected at least %u", - app->size, sizeof(VeteranClaimRequest)); + Log.Out(Logs::General, Logs::None, "OP_VetClaimRequest size lower than expected: got %u expected at least %u", app->size, sizeof(VeteranClaimRequest)); DumpPacket(app); return; } @@ -13880,7 +13841,7 @@ void Client::Handle_OP_VoiceMacroIn(const EQApplicationPacket *app) if (app->size != sizeof(VoiceMacroIn_Struct)) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_VoiceMacroIn expected %i got %i", + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_VoiceMacroIn expected %i got %i", sizeof(VoiceMacroIn_Struct), app->size); DumpPacket(app); @@ -13931,7 +13892,7 @@ void Client::Handle_OP_XTargetAutoAddHaters(const EQApplicationPacket *app) { if (app->size != 1) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_XTargetAutoAddHaters, expected 1, got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_XTargetAutoAddHaters, expected 1, got %i", app->size); DumpPacket(app); return; } @@ -13943,7 +13904,7 @@ void Client::Handle_OP_XTargetRequest(const EQApplicationPacket *app) { if (app->size < 12) { - LogFile->write(EQEmuLog::Debug, "Size mismatch in OP_XTargetRequest, expected at least 12, got %i", app->size); + Log.Out(Logs::General, Logs::None, "Size mismatch in OP_XTargetRequest, expected at least 12, got %i", app->size); DumpPacket(app); return; } @@ -14166,7 +14127,7 @@ void Client::Handle_OP_XTargetRequest(const EQApplicationPacket *app) } default: - LogFile->write(EQEmuLog::Debug, "Unhandled XTarget Type %i", Type); + Log.Out(Logs::General, Logs::None, "Unhandled XTarget Type %i", Type); break; } diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 03714d5e5..a83f1be5c 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -18,7 +18,9 @@ client_process.cpp: Handles client login sequence and packets sent from client to zone */ -#include "../common/debug.h" + +#include "../common/eqemu_logsys.h" +#include "../common/global_define.h" #include #include #include @@ -656,7 +658,7 @@ bool Client::Process() { if (client_state != CLIENT_LINKDEAD && !eqs->CheckState(ESTABLISHED)) { OnDisconnect(true); - std::cout << "Client linkdead: " << name << std::endl; + Log.Out(Logs::General, Logs::Zone_Server, "Client linkdead: %s", name); if (GetGM()) { if (GetMerc()) @@ -785,7 +787,7 @@ void Client::OnDisconnect(bool hard_disconnect) { Mob *Other = trade->With(); if(Other) { - mlog(TRADING__CLIENT, "Client disconnected during a trade. Returning their items."); + Log.Out(Logs::Detail, Logs::Trading, "Client disconnected during a trade. Returning their items."); FinishTrade(this); if(Other->IsClient()) @@ -822,7 +824,7 @@ void Client::BulkSendInventoryItems() { if(inst) { bool is_arrow = (inst->GetItem()->ItemType == ItemTypeArrow) ? true : false; int16 free_slot_id = m_inv.FindFreeSlot(inst->IsType(ItemClassContainer), true, inst->GetItem()->Size, is_arrow); - mlog(INVENTORY__ERROR, "Incomplete Trade Transaction: Moving %s from slot %i to %i", inst->GetItem()->Name, slot_id, free_slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Incomplete Trade Transaction: Moving %s from slot %i to %i", inst->GetItem()->Name, slot_id, free_slot_id); PutItemInInventory(free_slot_id, *inst, false); database.SaveInventory(character_id, nullptr, slot_id); safe_delete(inst); @@ -1023,7 +1025,7 @@ void Client::BulkSendMerchantInventory(int merchant_id, int npcid) { // Account for merchant lists with gaps. if (ml.slot >= i) { if (ml.slot > i) - LogFile->write(EQEmuLog::Debug, "(WARNING) Merchantlist contains gap at slot %d. Merchant: %d, NPC: %d", i, merchant_id, npcid); + Log.Out(Logs::General, Logs::None, "(WARNING) Merchantlist contains gap at slot %d. Merchant: %d, NPC: %d", i, merchant_id, npcid); i = ml.slot + 1; } } @@ -1115,7 +1117,7 @@ uint8 Client::WithCustomer(uint16 NewCustomer){ Client* c = entity_list.GetClientByID(CustomerID); if(!c) { - _log(TRADING__CLIENT, "Previous customer has gone away."); + Log.Out(Logs::Detail, Logs::Trading, "Previous customer has gone away."); CustomerID = NewCustomer; return 1; } @@ -1127,7 +1129,7 @@ void Client::OPRezzAnswer(uint32 Action, uint32 SpellID, uint16 ZoneID, uint16 I { if(PendingRezzXP < 0) { // pendingrezexp is set to -1 if we are not expecting an OP_RezzAnswer - _log(SPELLS__REZ, "Unexpected OP_RezzAnswer. Ignoring it."); + Log.Out(Logs::Detail, Logs::Spells, "Unexpected OP_RezzAnswer. Ignoring it."); Message(13, "You have already been resurrected.\n"); return; } @@ -1137,7 +1139,7 @@ void Client::OPRezzAnswer(uint32 Action, uint32 SpellID, uint16 ZoneID, uint16 I // Mark the corpse as rezzed in the database, just in case the corpse has buried, or the zone the // corpse is in has shutdown since the rez spell was cast. database.MarkCorpseAsRezzed(PendingRezzDBID); - _log(SPELLS__REZ, "Player %s got a %i Rezz, spellid %i in zone%i, instance id %i", + Log.Out(Logs::Detail, Logs::Spells, "Player %s got a %i Rezz, spellid %i in zone%i, instance id %i", this->name, (uint16)spells[SpellID].base[0], SpellID, ZoneID, InstanceID); @@ -1187,7 +1189,7 @@ void Client::OPMemorizeSpell(const EQApplicationPacket* app) { if(app->size != sizeof(MemorizeSpell_Struct)) { - LogFile->write(EQEmuLog::Error,"Wrong size on OP_MemorizeSpell. Got: %i, Expected: %i", app->size, sizeof(MemorizeSpell_Struct)); + Log.Out(Logs::General, Logs::Error, "Wrong size on OP_MemorizeSpell. Got: %i, Expected: %i", app->size, sizeof(MemorizeSpell_Struct)); DumpPacket(app); return; } @@ -1709,12 +1711,12 @@ void Client::OPGMTrainSkill(const EQApplicationPacket *app) SkillUseTypes skill = (SkillUseTypes) gmskill->skill_id; if(!CanHaveSkill(skill)) { - mlog(CLIENT__ERROR, "Tried to train skill %d, which is not allowed.", skill); + Log.Out(Logs::Detail, Logs::Skills, "Tried to train skill %d, which is not allowed.", skill); return; } if(MaxSkill(skill) == 0) { - mlog(CLIENT__ERROR, "Tried to train skill %d, but training is not allowed at this level.", skill); + Log.Out(Logs::Detail, Logs::Skills, "Tried to train skill %d, but training is not allowed at this level.", skill); return; } @@ -2108,7 +2110,7 @@ void Client::HandleRespawnFromHover(uint32 Option) { if (PendingRezzXP < 0 || PendingRezzSpellID == 0) { - _log(SPELLS__REZ, "Unexpected Rezz from hover request."); + Log.Out(Logs::Detail, Logs::Spells, "Unexpected Rezz from hover request."); return; } SetHP(GetMaxHP() / 5); @@ -2141,10 +2143,10 @@ void Client::HandleRespawnFromHover(uint32 Option) if (corpse && corpse->IsCorpse()) { - _log(SPELLS__REZ, "Hover Rez in zone %s for corpse %s", + Log.Out(Logs::Detail, Logs::Spells, "Hover Rez in zone %s for corpse %s", zone->GetShortName(), PendingRezzCorpseName.c_str()); - _log(SPELLS__REZ, "Found corpse. Marking corpse as rezzed."); + Log.Out(Logs::Detail, Logs::Spells, "Found corpse. Marking corpse as rezzed."); corpse->IsRezzed(true); corpse->CompleteResurrection(); diff --git a/zone/command.cpp b/zone/command.cpp index 8d9b55b4c..7226b57cf 100644 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -36,12 +36,13 @@ #include #include #include +#include #ifdef _WINDOWS #define strcasecmp _stricmp #endif -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/eq_packet.h" #include "../common/features.h" #include "../common/guilds.h" @@ -50,8 +51,9 @@ #include "../common/rulesys.h" #include "../common/serverinfo.h" #include "../common/string_util.h" +#include "../common/eqemu_logsys.h" + -#include "client_logs.h" #include "command.h" #include "guild_mgr.h" #include "map.h" @@ -162,7 +164,6 @@ int command_init(void) { command_add("getvariable","[varname] - Get the value of a variable from the database",200,command_getvariable) || command_add("chat","[channel num] [message] - Send a channel message to all zones",200,command_chat) || command_add("npcloot","[show/money/add/remove] [itemid/all/money: pp gp sp cp] - Manipulate the loot an NPC is carrying",80,command_npcloot) || - command_add("log","- Search character event log",80,command_log) || command_add("gm","- Turn player target's or your GM flag on or off",80,command_gm) || command_add("summon","[charname] - Summons your player/npc/corpse target, or charname if specified",80,command_summon) || command_add("zone","[zonename] [x] [y] [z] - Go to specified zone (coords optional)",50,command_zone) || @@ -346,8 +347,6 @@ int command_init(void) { #endif command_add("opcode","- opcode management",250,command_opcode) || - command_add("logs","[status|normal|error|debug|quest|all] - Subscribe to a log type",250,command_logs) || - command_add("nologs","[status|normal|error|debug|quest|all] - Unsubscribe to a log type",250,command_nologs) || command_add("ban","[name] [reason]- Ban by character name",150,command_ban) || command_add("suspend","[name] [days] [reason] - Suspend by character name and for specificed number of days",150,command_suspend) || command_add("ipban","[IP address] - Ban IP by character name",200,command_ipban) || @@ -367,7 +366,6 @@ int command_init(void) { command_add("path","- view and edit pathing",200,command_path) || command_add("flags","- displays the flags of you or your target",0,command_flags) || command_add("flagedit","- Edit zone flags on your target",100,command_flagedit) || - command_add("mlog","- Manage log settings",250,command_mlog) || command_add("aggro","(range) [-v] - Display aggro information for all mobs 'range' distance from your target. -v is verbose faction info.",80,command_aggro) || command_add("hatelist"," - Display hate list for target.", 80,command_hatelist) || command_add("aggrozone","[aggro] - Aggro every mob in the zone with X aggro. Default is 0. Not recommend if you're not invulnerable.",100,command_aggrozone) || @@ -427,8 +425,11 @@ int command_init(void) { command_add("open_shop", nullptr, 100, command_merchantopenshop) || command_add("merchant_close_shop", "Closes a merchant shop", 100, command_merchantcloseshop) || command_add("close_shop", nullptr, 100, command_merchantcloseshop) || + command_add("tune", "Calculate ideal statical values related to combat.", 100, command_tune) || command_add("shownumhits", "Shows buffs numhits for yourself.", 0, command_shownumhits) || - command_add("tune", "Calculate ideal statical values related to combat.", 100, command_tune) + command_add("crashtest", "- Crash the zoneserver", 255, command_crashtest) || + command_add("logtest", "Performs log performance testing.", 250, command_logtest) || + command_add("logs", "Manage anything to do with logs", 250, command_logs) ) { command_deinit(); @@ -445,15 +446,13 @@ int command_init(void) { if ((itr=command_settings.find(cur->first))!=command_settings.end()) { cur->second->access = itr->second; -#if EQDEBUG >=5 - LogFile->write(EQEmuLog::Debug, "command_init(): - Command '%s' set to access level %d." , cur->first.c_str(), itr->second); -#endif + Log.Out(Logs::General, Logs::Commands, "command_init(): - Command '%s' set to access level %d.", cur->first.c_str(), itr->second); } else { #ifdef COMMANDS_WARNINGS if(cur->second->access == 0) - LogFile->write(EQEmuLog::Status, "command_init(): Warning: Command '%s' defaulting to access level 0!" , cur->first.c_str()); + Log.Out(Logs::General, Logs::Status, "command_init(): Warning: Command '%s' defaulting to access level 0!" , cur->first.c_str()); #endif } } @@ -498,7 +497,7 @@ int command_add(const char *command_string, const char *desc, int access, CmdFun std::string cstr(command_string); if(commandlist.count(cstr) != 0) { - LogFile->write(EQEmuLog::Error, "command_add() - Command '%s' is a duplicate - check command.cpp." , command_string); + Log.Out(Logs::General, Logs::Error, "command_add() - Command '%s' is a duplicate - check command.cpp." , command_string); return(-1); } @@ -572,12 +571,12 @@ int command_realdispatch(Client *c, const char *message) #ifdef COMMANDS_LOGGING if(cur->access >= COMMANDS_LOGGING_MIN_STATUS) { - LogFile->write(EQEmuLog::Commands, "%s (%s) used command: %s (target=%s)", c->GetName(), c->AccountName(), message, c->GetTarget()?c->GetTarget()->GetName():"NONE"); + Log.Out(Logs::General, Logs::Commands, "%s (%s) used command: %s (target=%s)", c->GetName(), c->AccountName(), message, c->GetTarget()?c->GetTarget()->GetName():"NONE"); } #endif if(cur->function == nullptr) { - LogFile->write(EQEmuLog::Error, "Command '%s' has a null function\n", cstr.c_str()); + Log.Out(Logs::General, Logs::Error, "Command '%s' has a null function\n", cstr.c_str()); return(-1); } else { //dispatch C++ command @@ -969,59 +968,6 @@ void command_npcloot(Client *c, const Seperator *sep) c->Message(0, "Usage: #npcloot [show/money/add/remove] [itemid/all/money: pp gp sp cp]"); } -void command_log(Client *c, const Seperator *sep) -{ - if(strlen(sep->arg[4]) == 0 || strlen(sep->arg[1]) == 0 || strlen(sep->arg[2]) == 0 || (strlen(sep->arg[3]) == 0 && atoi(sep->arg[3]) == 0)) - { - c->Message(0,"#log
"); - c->Message(0,"(Req.) Types: 1) Command, 2) Merchant Buying, 3) Merchant Selling, 4) Loot, 5) Money Loot 6) Trade"); - c->Message(0,"(Req.) byaccountid/bycharname: choose either byaccountid or bycharname and then set querytype to effect it"); - c->Message(0,"(Req.) Details are information about the event, for example, partially an items name, or item id."); - c->Message(0,"Timestamp allows you to set a date to when the event occured: YYYYMMDDHHMMSS (Year,Month,Day,Hour,Minute,Second). It can be a partial timestamp."); - c->Message(0,"Note: when specifying a target, spaces in EQEMu use '_'"); - return; - // help - } - CharacterEventLog_Struct* cel = new CharacterEventLog_Struct; - memset(cel,0,sizeof(CharacterEventLog_Struct)); - if(strcasecmp(sep->arg[2], "byaccountid") == 0) - database.GetEventLogs("",sep->arg[5],atoi(sep->arg[3]),atoi(sep->arg[1]),sep->arg[4],sep->arg[6],cel); - else if(strcasecmp(sep->arg[2], "bycharname") == 0) - database.GetEventLogs(sep->arg[3],sep->arg[5],0,atoi(sep->arg[1]),sep->arg[4],sep->arg[6],cel); - else - { - c->Message(0,"Incorrect query type, use either byaccountid or bycharname"); - safe_delete(cel); - return; - } - if(cel->count != 0) - { - uint32 count = 0; - bool cont = true; - while(cont) - { - if(count >= cel->count) - cont = false; - else if(cel->eld[count].id != 0) - { - c->Message(0,"ID: %i AccountName: %s AccountID: %i Status: %i CharacterName: %s TargetName: %s",cel->eld[count].id,cel->eld[count].accountname,cel->eld[count].account_id,cel->eld[count].status,cel->eld[count].charactername,cel->eld[count].targetname); - - c->Message(0,"LogType: %s Timestamp: %s LogDetails: %s",cel->eld[count].descriptiontype,cel->eld[count].timestamp,cel->eld[count].details); - } - else - cont = false; - count++; - if(count > 20) - { - c->Message(0,"Please refine search."); - cont = false; - } - } - } - c->Message(0,"End of Query"); - safe_delete(cel); -} - void command_gm(Client *c, const Seperator *sep) { bool state=atobool(sep->arg[1]); @@ -1349,7 +1295,7 @@ void command_viewpetition(Client *c, const Seperator *sep) if (!results.Success()) return; - LogFile->write(EQEmuLog::Normal,"View petition request from %s, petition number: %i", c->GetName(), atoi(sep->argplus[1]) ); + Log.Out(Logs::General, Logs::Normal, "View petition request from %s, petition number: %i", c->GetName(), atoi(sep->argplus[1]) ); if (results.RowCount() == 0) { c->Message(13,"There was an error in your request: ID not found! Please check the Id and try again."); @@ -1374,7 +1320,7 @@ void command_petitioninfo(Client *c, const Seperator *sep) if (!results.Success()) return; - LogFile->write(EQEmuLog::Normal,"Petition information request from %s, petition number:", c->GetName(), atoi(sep->argplus[1]) ); + Log.Out(Logs::General, Logs::Normal, "Petition information request from %s, petition number:", c->GetName(), atoi(sep->argplus[1]) ); if (results.RowCount() == 0) { c->Message(13,"There was an error in your request: ID not found! Please check the Id and try again."); @@ -1400,7 +1346,7 @@ void command_delpetition(Client *c, const Seperator *sep) if (!results.Success()) return; - LogFile->write(EQEmuLog::Normal,"Delete petition request from %s, petition number:", c->GetName(), atoi(sep->argplus[1]) ); + Log.Out(Logs::General, Logs::Normal, "Delete petition request from %s, petition number:", c->GetName(), atoi(sep->argplus[1]) ); } @@ -1623,7 +1569,7 @@ void command_permaclass(Client *c, const Seperator *sep) c->Message(0,"Target is not a client."); else { c->Message(0, "Setting %s's class...Sending to char select.", t->GetName()); - LogFile->write(EQEmuLog::Normal,"Class change request from %s for %s, requested class:%i", c->GetName(), t->GetName(), atoi(sep->arg[1]) ); + Log.Out(Logs::General, Logs::Normal, "Class change request from %s for %s, requested class:%i", c->GetName(), t->GetName(), atoi(sep->arg[1]) ); t->SetBaseClass(atoi(sep->arg[1])); t->Save(); t->Kick(); @@ -1645,7 +1591,7 @@ void command_permarace(Client *c, const Seperator *sep) c->Message(0,"Target is not a client."); else { c->Message(0, "Setting %s's race - zone to take effect",t->GetName()); - LogFile->write(EQEmuLog::Normal,"Permanant race change request from %s for %s, requested race:%i", c->GetName(), t->GetName(), atoi(sep->arg[1]) ); + Log.Out(Logs::General, Logs::Normal, "Permanant race change request from %s for %s, requested race:%i", c->GetName(), t->GetName(), atoi(sep->arg[1]) ); uint32 tmp = Mob::GetDefaultGender(atoi(sep->arg[1]), t->GetBaseGender()); t->SetBaseRace(atoi(sep->arg[1])); t->SetBaseGender(tmp); @@ -1669,7 +1615,7 @@ void command_permagender(Client *c, const Seperator *sep) c->Message(0,"Target is not a client."); else { c->Message(0, "Setting %s's gender - zone to take effect",t->GetName()); - LogFile->write(EQEmuLog::Normal,"Permanant gender change request from %s for %s, requested gender:%i", c->GetName(), t->GetName(), atoi(sep->arg[1]) ); + Log.Out(Logs::General, Logs::Normal, "Permanant gender change request from %s for %s, requested gender:%i", c->GetName(), t->GetName(), atoi(sep->arg[1]) ); t->SetBaseGender(atoi(sep->arg[1])); t->Save(); t->SendIllusionPacket(atoi(sep->arg[1])); @@ -2004,7 +1950,7 @@ void command_dbspawn2(Client *c, const Seperator *sep) { if (sep->IsNumber(1) && sep->IsNumber(2) && sep->IsNumber(3)) { - LogFile->write(EQEmuLog::Normal,"Spawning database spawn"); + Log.Out(Logs::General, Logs::Normal, "Spawning database spawn"); uint16 cond = 0; int16 cond_min = 0; if(sep->IsNumber(4)) { @@ -2326,7 +2272,7 @@ void command_setlanguage(Client *c, const Seperator *sep) } else { - LogFile->write(EQEmuLog::Normal,"Set language request from %s, target:%s lang_id:%i value:%i", c->GetName(), c->GetTarget()->GetName(), atoi(sep->arg[1]), atoi(sep->arg[2]) ); + Log.Out(Logs::General, Logs::Normal, "Set language request from %s, target:%s lang_id:%i value:%i", c->GetName(), c->GetTarget()->GetName(), atoi(sep->arg[1]), atoi(sep->arg[2]) ); uint8 langid = (uint8)atoi(sep->arg[1]); uint8 value = (uint8)atoi(sep->arg[2]); c->GetTarget()->CastToClient()->SetLanguageSkill( langid, value ); @@ -2351,7 +2297,7 @@ void command_setskill(Client *c, const Seperator *sep) c->Message(0, " x = 0 to %d", HIGHEST_CAN_SET_SKILL); } else { - LogFile->write(EQEmuLog::Normal,"Set skill request from %s, target:%s skill_id:%i value:%i", c->GetName(), c->GetTarget()->GetName(), atoi(sep->arg[1]), atoi(sep->arg[2]) ); + Log.Out(Logs::General, Logs::Normal, "Set skill request from %s, target:%s skill_id:%i value:%i", c->GetName(), c->GetTarget()->GetName(), atoi(sep->arg[1]), atoi(sep->arg[2]) ); int skill_num = atoi(sep->arg[1]); uint16 skill_value = atoi(sep->arg[2]); if(skill_num < HIGHEST_SKILL) @@ -2371,7 +2317,7 @@ void command_setskillall(Client *c, const Seperator *sep) } else { if (c->Admin() >= commandSetSkillsOther || c->GetTarget()==c || c->GetTarget()==0) { - LogFile->write(EQEmuLog::Normal,"Set ALL skill request from %s, target:%s", c->GetName(), c->GetTarget()->GetName()); + Log.Out(Logs::General, Logs::Normal, "Set ALL skill request from %s, target:%s", c->GetName(), c->GetTarget()->GetName()); uint16 level = atoi(sep->arg[1]); for(SkillUseTypes skill_num=Skill1HBlunt;skill_num <= HIGHEST_SKILL;skill_num=(SkillUseTypes)(skill_num+1)) { c->GetTarget()->CastToClient()->SetSkill(skill_num, level); @@ -2461,7 +2407,7 @@ void command_spawn(Client *c, const Seperator *sep) } } #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug,"#spawn Spawning:"); + Log.LogDebug(Logs::General,"#spawn Spawning:"); #endif NPC* npc = NPC::SpawnNPC(sep->argplus[1], c->GetPosition(), c); @@ -3166,7 +3112,7 @@ void command_listpetition(Client *c, const Seperator *sep) if (!results.Success()) return; - LogFile->write(EQEmuLog::Normal,"Petition list requested by %s", c->GetName()); + Log.Out(Logs::General, Logs::Normal, "Petition list requested by %s", c->GetName()); if (results.RowCount() == 0) return; @@ -3823,7 +3769,7 @@ void command_lastname(Client *c, const Seperator *sep) if(c->GetTarget() && c->GetTarget()->IsClient()) t=c->GetTarget()->CastToClient(); - LogFile->write(EQEmuLog::Normal,"#lastname request from %s for %s", c->GetName(), t->GetName()); + Log.Out(Logs::General, Logs::Normal, "#lastname request from %s for %s", c->GetName(), t->GetName()); if(strlen(sep->arg[1]) <= 70) t->ChangeLastName(sep->arg[1]); @@ -4446,7 +4392,7 @@ void command_time(Client *c, const Seperator *sep) ); c->Message(13, "It is now %s.", timeMessage); #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug,"Recieved timeMessage:%s", timeMessage); + Log.LogDebug(Logs::General,"Recieved timeMessage:%s", timeMessage); #endif } } @@ -4597,10 +4543,10 @@ void command_guild(Client *c, const Seperator *sep) } if(guild_id == GUILD_NONE) { - _log(GUILDS__ACTIONS, "%s: Removing %s (%d) from guild with GM command.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Removing %s (%d) from guild with GM command.", c->GetName(), sep->arg[2], charid); } else { - _log(GUILDS__ACTIONS, "%s: Putting %s (%d) into guild %s (%d) with GM command.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Putting %s (%d) into guild %s (%d) with GM command.", c->GetName(), sep->arg[2], charid, guild_mgr.GetGuildName(guild_id), guild_id); } @@ -4649,7 +4595,7 @@ void command_guild(Client *c, const Seperator *sep) return; } - _log(GUILDS__ACTIONS, "%s: Setting %s (%d)'s guild rank to %d with GM command.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Setting %s (%d)'s guild rank to %d with GM command.", c->GetName(), sep->arg[2], charid, rank); if(!guild_mgr.SetGuildRank(charid, rank)) @@ -4691,7 +4637,7 @@ void command_guild(Client *c, const Seperator *sep) uint32 id = guild_mgr.CreateGuild(sep->argplus[3], leader); - _log(GUILDS__ACTIONS, "%s: Creating guild %s with leader %d with GM command. It was given id %lu.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Creating guild %s with leader %d with GM command. It was given id %lu.", c->GetName(), sep->argplus[3], leader, (unsigned long)id); if (id == GUILD_NONE) @@ -4730,7 +4676,7 @@ void command_guild(Client *c, const Seperator *sep) } } - _log(GUILDS__ACTIONS, "%s: Deleting guild %s (%d) with GM command.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Deleting guild %s (%d) with GM command.", c->GetName(), guild_mgr.GetGuildName(id), id); if (!guild_mgr.DeleteGuild(id)) @@ -4764,7 +4710,7 @@ void command_guild(Client *c, const Seperator *sep) } } - _log(GUILDS__ACTIONS, "%s: Renaming guild %s (%d) to '%s' with GM command.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Renaming guild %s (%d) to '%s' with GM command.", c->GetName(), guild_mgr.GetGuildName(id), id, sep->argplus[3]); if (!guild_mgr.RenameGuild(id, sep->argplus[3])) @@ -4815,7 +4761,7 @@ void command_guild(Client *c, const Seperator *sep) } } - _log(GUILDS__ACTIONS, "%s: Setting leader of guild %s (%d) to %d with GM command.", c->GetName(), + Log.Out(Logs::Detail, Logs::Guilds, "%s: Setting leader of guild %s (%d) to %d with GM command.", c->GetName(), guild_mgr.GetGuildName(id), id, leader); if(!guild_mgr.SetGuildLeader(id, leader)) @@ -4921,7 +4867,7 @@ void command_manaburn(Client *c, const Seperator *sep) target->Damage(c, nukedmg, 2751, SkillAbjuration/*hackish*/); c->Message(4,"You unleash an enormous blast of magical energies."); } - LogFile->write(EQEmuLog::Normal,"Manaburn request from %s, damage: %d", c->GetName(), nukedmg); + Log.Out(Logs::General, Logs::Normal, "Manaburn request from %s, damage: %d", c->GetName(), nukedmg); } } else @@ -5273,7 +5219,7 @@ void command_scribespells(Client *c, const Seperator *sep) t->Message(0, "Scribing spells to spellbook."); if(t != c) c->Message(0, "Scribing spells for %s.", t->GetName()); - LogFile->write(EQEmuLog::Normal, "Scribe spells request for %s from %s, levels: %u -> %u", t->GetName(), c->GetName(), min_level, max_level); + Log.Out(Logs::General, Logs::Normal, "Scribe spells request for %s from %s, levels: %u -> %u", t->GetName(), c->GetName(), min_level, max_level); for(curspell = 0, book_slot = t->GetNextAvailableSpellBookSlot(), count = 0; curspell < SPDAT_RECORDS && book_slot < MAX_PP_SPELLBOOK; curspell++, book_slot = t->GetNextAvailableSpellBookSlot(book_slot)) { @@ -5330,7 +5276,7 @@ void command_scribespell(Client *c, const Seperator *sep) { if(t != c) c->Message(0, "Scribing spell: %s (%i) for %s.", spells[spell_id].name, spell_id, t->GetName()); - LogFile->write(EQEmuLog::Normal, "Scribe spell: %s (%i) request for %s from %s.", spells[spell_id].name, spell_id, t->GetName(), c->GetName()); + Log.Out(Logs::General, Logs::Normal, "Scribe spell: %s (%i) request for %s from %s.", spells[spell_id].name, spell_id, t->GetName(), c->GetName()); if (spells[spell_id].classes[WARRIOR] != 0 && spells[spell_id].skill != 52 && spells[spell_id].classes[t->GetPP().class_ - 1] > 0 && !IsDiscipline(spell_id)) { book_slot = t->GetNextAvailableSpellBookSlot(); @@ -5377,7 +5323,7 @@ void command_unscribespell(Client *c, const Seperator *sep) { if(t != c) c->Message(0, "Unscribing spell: %s (%i) for %s.", spells[spell_id].name, spell_id, t->GetName()); - LogFile->write(EQEmuLog::Normal, "Unscribe spell: %s (%i) request for %s from %s.", spells[spell_id].name, spell_id, t->GetName(), c->GetName()); + Log.Out(Logs::General, Logs::Normal, "Unscribe spell: %s (%i) request for %s from %s.", spells[spell_id].name, spell_id, t->GetName(), c->GetName()); } else { t->Message(13, "Unable to unscribe spell: %s (%i) from your spellbook. This spell is not scribed.", spells[spell_id].name, spell_id); @@ -6797,69 +6743,6 @@ void command_logsql(Client *c, const Seperator *sep) { } } -void command_logs(Client *c, const Seperator *sep) -{ -#ifdef CLIENT_LOGS - Client *t = c; - if(c->GetTarget() && c->GetTarget()->IsClient()) { - t = c->GetTarget()->CastToClient(); - } - - if(!strcasecmp(sep->arg[1], "status" ) ) - client_logs.subscribe(EQEmuLog::Status, t); - else if(!strcasecmp(sep->arg[1], "normal" ) ) - client_logs.subscribe(EQEmuLog::Normal, t); - else if(!strcasecmp(sep->arg[1], "error" ) ) - client_logs.subscribe(EQEmuLog::Error, t); - else if(!strcasecmp(sep->arg[1], "debug" ) ) - client_logs.subscribe(EQEmuLog::Debug, t); - else if(!strcasecmp(sep->arg[1], "quest" ) ) - client_logs.subscribe(EQEmuLog::Quest, t); - else if(!strcasecmp(sep->arg[1], "all" ) ) - client_logs.subscribeAll(t); - else { - c->Message(0, "Usage: #logs [status|normal|error|debug|quest|all]"); - return; - } - if(c != t) - c->Message(0, "%s have been subscribed to %s logs.", t->GetName(), sep->arg[1]); - t->Message(0, "You have been subscribed to %s logs.", sep->arg[1]); -#else - c->Message(0, "Client logs are disabled in this server's build."); -#endif -} - -void command_nologs(Client *c, const Seperator *sep) -{ -#ifdef CLIENT_LOGS - Client *t = c; - if(c->GetTarget() && c->GetTarget()->IsClient()) { - t = c; - } - - if(!strcasecmp(sep->arg[1], "status" ) ) - client_logs.unsubscribe(EQEmuLog::Status, t); - else if(!strcasecmp(sep->arg[1], "normal" ) ) - client_logs.unsubscribe(EQEmuLog::Normal, t); - else if(!strcasecmp(sep->arg[1], "error" ) ) - client_logs.unsubscribe(EQEmuLog::Error, t); - else if(!strcasecmp(sep->arg[1], "debug" ) ) - client_logs.unsubscribe(EQEmuLog::Debug, t); - else if(!strcasecmp(sep->arg[1], "quest" ) ) - client_logs.unsubscribe(EQEmuLog::Quest, t); - else if(!strcasecmp(sep->arg[1], "all" ) ) - client_logs.unsubscribeAll(t); - else { - c->Message(0, "Usage: #logs [status|normal|error|debug|quest|all]"); - return; - } - - c->Message(0, "You have been unsubscribed from %s logs.", sep->arg[1]); -#else - c->Message(0, "Client logs are disabled in this server's build."); -#endif -} - void command_qglobal(Client *c, const Seperator *sep) { //In-game switch for qglobal column if(sep->arg[1][0] == 0) { @@ -7501,7 +7384,6 @@ void command_flagedit(Client *c, const Seperator *sep) { "FROM zone WHERE flag_needed != ''"; auto results = database.QueryDatabase(query); if (!results.Success()) { - c->Message(13, "Unable to query zone flags: %s", results.ErrorMessage().c_str()); return; } @@ -7561,165 +7443,6 @@ void command_flagedit(Client *c, const Seperator *sep) { c->Message(15, "Invalid action specified. use '#flagedit help' for help"); } -void command_mlog(Client *c, const Seperator *sep) { - //super-command for managing log settings - if(sep->arg[1][0] == '\0' || !strcasecmp(sep->arg[1], "help")) { - c->Message(0, "Syntax: #mlog [subcommand]."); - c->Message(0, "-- Mob Logging Togglers --"); - c->Message(0, "...target [on|off] - Set logging enabled for your target"); - c->Message(0, "...all [on|off] - Set logging enabled for all mobs and clients (prolly a bad idea)"); - c->Message(0, "...mobs [on|off] - Set logging enabled for all mobs"); - c->Message(0, "...clients [on|off] - Set logging enabled for all clients"); - c->Message(0, "...radius [on|off] [radius] - Set logging enable for all mobs and clients within `radius`"); - c->Message(0, "-------------"); - c->Message(0, "-- Log Settings --"); - c->Message(0, "...list [category] - List all log types in specified category, or all categories if none specified."); - c->Message(0, "...setcat [category] [on|off] - Enable/Disable all types in a specified category"); - c->Message(0, "...set [type] [on|off] - Enable/Disable the specified log type"); - c->Message(0, "...load [filename] - Load log type settings from the file `filename`"); - return; - } - bool onoff; - std::string on("on"); - std::string off("off"); - - if(!strcasecmp(sep->arg[1], "target")) { - if(on == sep->arg[2]) onoff = true; - else if(off == sep->arg[2]) onoff = false; - else { c->Message(13, "Invalid argument. Expected on/off."); return; } - - Mob *tgt = c->GetTarget(); - if(tgt == nullptr) { - c->Message(13, "You must have a target for this command."); - return; - } - - if(onoff) - tgt->EnableLogging(); - else - tgt->DisableLogging(); - - c->Message(0, "Logging has been enabled on %s", tgt->GetName()); - } else if(!strcasecmp(sep->arg[1], "all")) { - if(on == sep->arg[2]) onoff = true; - else if(off == sep->arg[2]) onoff = false; - else { c->Message(13, "Invalid argument '%s'. Expected on/off.", sep->arg[2]); return; } - - entity_list.RadialSetLogging(c, onoff, true, true); - - c->Message(0, "Logging has been enabled for all entities"); - } else if(!strcasecmp(sep->arg[1], "mobs")) { - if(on == sep->arg[2]) onoff = true; - else if(off == sep->arg[2]) onoff = false; - else { c->Message(13, "Invalid argument '%s'. Expected on/off.", sep->arg[2]); return; } - - entity_list.RadialSetLogging(c, onoff, false, true); - - c->Message(0, "Logging has been enabled for all mobs"); - } else if(!strcasecmp(sep->arg[1], "clients")) { - if(on == sep->arg[2]) onoff = true; - else if(off == sep->arg[2]) onoff = false; - else { c->Message(13, "Invalid argument '%s'. Expected on/off.", sep->arg[2]); return; } - - entity_list.RadialSetLogging(c, onoff, true, false); - - c->Message(0, "Logging has been enabled for all clients"); - } else if(!strcasecmp(sep->arg[1], "radius")) { - if(on == sep->arg[2]) onoff = true; - else if(off == sep->arg[2]) onoff = false; - else { c->Message(13, "Invalid argument '%s'. Expected on/off.", sep->arg[2]); return; } - - float radius = atof(sep->arg[3]); - if(radius <= 0) { - c->Message(13, "Invalid radius %f", radius); - return; - } - - entity_list.RadialSetLogging(c, onoff, false, true, radius); - - c->Message(0, "Logging has been enabled for all entities within %f", radius); - } else if(!strcasecmp(sep->arg[1], "list")) { - int r; - if(sep->arg[2][0] == '\0') { - c->Message(0, "Listing all log categories:"); - for(r = 0; r < NUMBER_OF_LOG_CATEGORIES; r++) { - c->Message(0, "Category %d: %s", r, log_category_names[r]); - } - } else { - //first we have to find the category ID. - for(r = 0; r < NUMBER_OF_LOG_CATEGORIES; r++) { - if(!strcasecmp(log_category_names[r], sep->arg[2])) - break; - } - if(r == NUMBER_OF_LOG_CATEGORIES) { - c->Message(13, "Unable to find category '%s'", sep->arg[2]); - return; - } - int logcat = r; - c->Message(0, "Types for category %d: %s", logcat, log_category_names[logcat]); - for(r = 0; r < NUMBER_OF_LOG_TYPES; r++) { - if(log_type_info[r].category != logcat) - continue; - c->Message(0, "...%d: %s (%s)", r, log_type_info[r].name, is_log_enabled(LogType(r))?"enabled":"disabled"); - } - } - } else if(!strcasecmp(sep->arg[1], "setcat")) { - if(on == sep->arg[3]) onoff = true; - else if(off == sep->arg[3]) onoff = false; - else { c->Message(13, "Invalid argument %s. Expected on/off.", sep->arg[3]); return; } - - int r; - //first we have to find the category ID. - for(r = 0; r < NUMBER_OF_LOG_CATEGORIES; r++) { - if(!strcasecmp(log_category_names[r], sep->arg[2])) - break; - } - if(r == NUMBER_OF_LOG_CATEGORIES) { - c->Message(13, "Unable to find category '%s'", sep->arg[2]); - return; - } - - LogCategory logcat = LogCategory(r); - for(r = 0; r < NUMBER_OF_LOG_TYPES; r++) { - if(log_type_info[r].category != logcat) - continue; - - if(onoff) { - log_enable(LogType(r)); - c->Message(0, "Log type %s (%d) has been enabled", log_type_info[r].name, r); - } else { - log_disable(LogType(r)); - c->Message(0, "Log type %s (%d) has been disabled", log_type_info[r].name, r); - } - } - } else if(!strcasecmp(sep->arg[1], "set")) { - if(on == sep->arg[3]) onoff = true; - else if(off == sep->arg[3]) onoff = false; - else { c->Message(13, "Invalid argument %s. Expected on/off.", sep->arg[3]); return; } - - //first we have to find the category ID. - int r; - for(r = 0; r < NUMBER_OF_LOG_TYPES; r++) { - if(!strcasecmp(log_type_info[r].name, sep->arg[2])) - break; - } - if(r == NUMBER_OF_LOG_TYPES) { - c->Message(13, "Unable to find log type %s", sep->arg[2]); - return; - } - - if(onoff) { - log_enable(LogType(r)); - c->Message(0, "Log type %s (%d) has been enabled", log_type_info[r].name, r); - } else { - log_disable(LogType(r)); - c->Message(0, "Log type %s (%d) has been disabled", log_type_info[r].name, r); - } - } else { - c->Message(15, "Invalid action specified. use '#mlog help' for help"); - } -} - void command_serverrules(Client *c, const Seperator *sep) { c->SendRules(c); @@ -8139,7 +7862,7 @@ void command_traindisc(Client *c, const Seperator *sep) t->Message(0, "Training disciplines"); if(t != c) c->Message(0, "Training disciplines for %s.", t->GetName()); - LogFile->write(EQEmuLog::Normal, "Train disciplines request for %s from %s, levels: %u -> %u", t->GetName(), c->GetName(), min_level, max_level); + Log.Out(Logs::General, Logs::Normal, "Train disciplines request for %s from %s, levels: %u -> %u", t->GetName(), c->GetName(), min_level, max_level); for(curspell = 0, count = 0; curspell < SPDAT_RECORDS; curspell++) { @@ -10406,7 +10129,6 @@ void command_mysql(Client *c, const Seperator *sep) std::replace(query.begin(), query.end(), '#', '%'); auto results = database.QueryDatabase(query); if (!results.Success()) { - c->Message(0, "Invalid query: '%s', '%s'", sep->arg[2], results.ErrorMessage().c_str()); return; } @@ -10873,3 +10595,86 @@ void command_tune(Client *c, const Seperator *sep) return; } + +void command_logtest(Client *c, const Seperator *sep){ + clock_t t = std::clock(); /* Function timer start */ + if (sep->IsNumber(1)){ + uint32 i = 0; + std::ofstream log_test; + for (i = 0; i < atoi(sep->arg[1]); i++){ + log_test.open("logs/log_test.txt", std::ios_base::app | std::ios_base::out); + log_test << "this is a test\n"; + log_test.close(); + } + Log.Out(Logs::General, Logs::Zone_Server, "[%u] Test #1... Took %f seconds", i, ((float)(std::clock() - t)) / CLOCKS_PER_SEC); + t = std::clock(); + log_test.open("logs/log_test.txt", std::ios_base::app | std::ios_base::out); + for (i = 0; i < atoi(sep->arg[1]); i++){ + log_test << "this is a test\n"; + } + log_test.close(); + Log.Out(Logs::General, Logs::Zone_Server, "[%u] Test #2... Took %f seconds", i, ((float)(std::clock() - t)) / CLOCKS_PER_SEC); + } +} + +void command_crashtest(Client *c, const Seperator *sep) +{ + c->Message(0, "Alright, now we get an GPF ;) "); + char* gpf = 0; + memcpy(gpf, "Ready to crash", 30); +} + +void command_logs(Client *c, const Seperator *sep){ + int logs_set = 0; + if (sep->argnum > 0) { + /* #logs reload_all */ + if (strcasecmp(sep->arg[1], "reload_all") == 0){ + ServerPacket *pack = new ServerPacket(ServerOP_ReloadLogs, 0); + worldserver.SendPacket(pack); + c->Message(13, "Successfully sent the packet to world to reload log settings from the database for all zones"); + safe_delete(pack); + } + /* #logs list_settings */ + if (strcasecmp(sep->arg[1], "list_settings") == 0 || (strcasecmp(sep->arg[1], "set") == 0 && strcasecmp(sep->arg[3], "") == 0)){ + c->Message(0, "[Category ID | console | file | gmsay | Category Description]"); + int redisplay_columns = 0; + for (int i = 0; i < Logs::LogCategory::MaxCategoryID; i++){ + if (redisplay_columns == 10){ + c->Message(0, "[Category ID | console | file | gmsay | Category Description]"); + redisplay_columns = 0; + } + c->Message(0, StringFormat("--- %i | %u | %u | %u | %s", i, Log.log_settings[i].log_to_console, Log.log_settings[i].log_to_file, Log.log_settings[i].log_to_gmsay, Logs::LogCategoryName[i]).c_str()); + redisplay_columns++; + } + } + /* #logs set */ + if (strcasecmp(sep->arg[1], "set") == 0){ + if (strcasecmp(sep->arg[2], "console") == 0){ + Log.log_settings[atoi(sep->arg[3])].log_to_console = atoi(sep->arg[4]); + logs_set = 1; + } + else if (strcasecmp(sep->arg[2], "file") == 0){ + Log.log_settings[atoi(sep->arg[3])].log_to_file = atoi(sep->arg[4]); + logs_set = 1; + } + else if (strcasecmp(sep->arg[2], "gmsay") == 0){ + Log.log_settings[atoi(sep->arg[3])].log_to_gmsay = atoi(sep->arg[4]); + logs_set = 1; + } + else{ + c->Message(0, "--- #logs set [console|file|gmsay] - Sets log settings during the lifetime of the zone"); + c->Message(0, "--- #logs set gmsay 20 1 - Would output Quest errors to gmsay"); + } + if (logs_set == 1){ + c->Message(15, "Your Log Settings have been applied"); + c->Message(15, "Output Method: %s :: Debug Level: %i - Category: %s", sep->arg[2], atoi(sep->arg[4]), Logs::LogCategoryName[atoi(sep->arg[3])]); + } + } + } + else { + c->Message(0, "#logs usage:"); + c->Message(0, "--- #logs reload_all - Reloads all rules defined in database in world and all zone processes"); + c->Message(0, "--- #logs list_settings - Shows current log settings and categories"); + c->Message(0, "--- #logs set [console|file|gmsay] - Sets log settings during the lifetime of the zone"); + } +} diff --git a/zone/command.h b/zone/command.h index f8018f295..61025f2bc 100644 --- a/zone/command.h +++ b/zone/command.h @@ -87,7 +87,6 @@ void command_chat(Client *c, const Seperator *sep); void command_showpetspell(Client *c, const Seperator *sep); void command_ipc(Client *c, const Seperator *sep); void command_npcloot(Client *c, const Seperator *sep); -void command_log(Client *c, const Seperator *sep); void command_gm(Client *c, const Seperator *sep); void command_summon(Client *c, const Seperator *sep); void command_zone(Client *c, const Seperator *sep); @@ -259,8 +258,6 @@ void command_undye(Client *c, const Seperator *sep); void command_undyeme(Client *c, const Seperator *sep); void command_hp(Client *c, const Seperator *sep); void command_ginfo(Client *c, const Seperator *sep); -void command_logs(Client *c, const Seperator *sep); -void command_nologs(Client *c, const Seperator *sep); void command_logsql(Client *c, const Seperator *sep); void command_qglobal(Client *c, const Seperator *sep); void command_path(Client *c, const Seperator *sep); @@ -272,7 +269,6 @@ void command_aggrozone(Client *c, const Seperator *sep); void command_reloadstatic(Client *c, const Seperator *sep); void command_flags(Client *c, const Seperator *sep); void command_flagedit(Client *c, const Seperator *sep); -void command_mlog(Client *c, const Seperator *sep); void command_serverrules(Client *c, const Seperator *sep); void command_acceptrules(Client *c, const Seperator *sep); void command_guildcreate(Client *c, const Seperator *sep); @@ -327,6 +323,8 @@ void command_merchantopenshop(Client *c, const Seperator *sep); void command_merchantcloseshop(Client *c, const Seperator *sep); void command_shownumhits(Client *c, const Seperator *sep); void command_tune(Client *c, const Seperator *sep); +void command_logtest(Client *c, const Seperator *sep); +void command_logs(Client *c, const Seperator *sep); #ifdef EQPROFILE void command_profiledump(Client *c, const Seperator *sep); diff --git a/zone/corpse.cpp b/zone/corpse.cpp index 12e1e4ba8..c4b9e483c 100644 --- a/zone/corpse.cpp +++ b/zone/corpse.cpp @@ -28,7 +28,8 @@ Child of the Mob class. #define strcasecmp _stricmp #endif -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/rulesys.h" #include "../common/string_util.h" @@ -793,7 +794,7 @@ bool Corpse::Process() { spc->zone_id = zone->graveyard_zoneid(); worldserver.SendPacket(pack); safe_delete(pack); - LogFile->write(EQEmuLog::Debug, "Moved %s player corpse to the designated graveyard in zone %s.", this->GetName(), database.GetZoneName(zone->graveyard_zoneid())); + Log.Out(Logs::General, Logs::None, "Moved %s player corpse to the designated graveyard in zone %s.", this->GetName(), database.GetZoneName(zone->graveyard_zoneid())); corpse_db_id = 0; } @@ -823,10 +824,10 @@ bool Corpse::Process() { Save(); player_corpse_depop = true; corpse_db_id = 0; - LogFile->write(EQEmuLog::Debug, "Tagged %s player corpse has burried.", this->GetName()); + Log.Out(Logs::General, Logs::None, "Tagged %s player corpse has burried.", this->GetName()); } else { - LogFile->write(EQEmuLog::Error, "Unable to bury %s player corpse.", this->GetName()); + Log.Out(Logs::General, Logs::Error, "Unable to bury %s player corpse.", this->GetName()); return true; } } @@ -1029,7 +1030,7 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a for(; cur != end; ++cur) { ServerLootItem_Struct* item_data = *cur; item = database.GetItem(item_data->item_id); - LogFile->write(EQEmuLog::Debug, "Corpse Looting: %s was not sent to client loot window (corpse_dbid: %i, charname: %s(%s))", item->Name, GetCorpseDBID(), client->GetName(), client->GetGM() ? "GM" : "Owner"); + Log.Out(Logs::General, Logs::None, "Corpse Looting: %s was not sent to client loot window (corpse_dbid: %i, charname: %s(%s))", item->Name, GetCorpseDBID(), client->GetName(), client->GetGM() ? "GM" : "Owner"); client->Message(0, "Inaccessable Corpse Item: %s", item->Name); } } diff --git a/zone/doors.cpp b/zone/doors.cpp index 152712c15..bac8202af 100644 --- a/zone/doors.cpp +++ b/zone/doors.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/string_util.h" #include "client.h" @@ -132,9 +133,9 @@ bool Doors::Process() void Doors::HandleClick(Client* sender, uint8 trigger) { //door debugging info dump - _log(DOORS__INFO, "%s clicked door %s (dbid %d, eqid %d) at %s", sender->GetName(), door_name, db_id, door_id, to_string(m_Position).c_str()); - _log(DOORS__INFO, " incline %d, opentype %d, lockpick %d, key %d, nokeyring %d, trigger %d type %d, param %d", incline, opentype, lockpick, keyitem, nokeyring, trigger_door, trigger_type, door_param); - _log(DOORS__INFO, " size %d, invert %d, dest: %s %s", size, invert_state, dest_zone, to_string(m_Destination).c_str()); + Log.Out(Logs::Detail, Logs::Doors, "%s clicked door %s (dbid %d, eqid %d) at %s", sender->GetName(), door_name, db_id, door_id, to_string(m_Position).c_str()); + Log.Out(Logs::Detail, Logs::Doors, " incline %d, opentype %d, lockpick %d, key %d, nokeyring %d, trigger %d type %d, param %d", incline, opentype, lockpick, keyitem, nokeyring, trigger_door, trigger_type, door_param); + Log.Out(Logs::Detail, Logs::Doors, " size %d, invert %d, dest: %s %s", size, invert_state, dest_zone, to_string(m_Destination).c_str()); EQApplicationPacket* outapp = new EQApplicationPacket(OP_MoveDoor, sizeof(MoveDoor_Struct)); MoveDoor_Struct* md = (MoveDoor_Struct*)outapp->pBuffer; @@ -290,7 +291,7 @@ void Doors::HandleClick(Client* sender, uint8 trigger) sender->CheckIncreaseSkill(SkillPickLock, nullptr, 1); #if EQDEBUG>=5 - LogFile->write(EQEmuLog::Debug, "Client has lockpicks: skill=%f", modskill); + Log.Out(Logs::General, Logs::None, "Client has lockpicks: skill=%f", modskill); #endif if(GetLockpick() <= modskill) @@ -547,13 +548,13 @@ void Doors::ToggleState(Mob *sender) } void Doors::DumpDoor(){ - LogFile->write(EQEmuLog::Debug, + Log.Out(Logs::General, Logs::None, "db_id:%i door_id:%i zone_name:%s door_name:%s %s", db_id, door_id, zone_name, door_name, to_string(m_Position).c_str()); - LogFile->write(EQEmuLog::Debug, + Log.Out(Logs::General, Logs::None, "opentype:%i guild_id:%i lockpick:%i keyitem:%i nokeyring:%i trigger_door:%i trigger_type:%i door_param:%i open:%s", opentype, guild_id, lockpick, keyitem, nokeyring, trigger_door, trigger_type, door_param, (isopen) ? "open":"closed"); - LogFile->write(EQEmuLog::Debug, + Log.Out(Logs::General, Logs::None, "dest_zone:%s destination:%s ", dest_zone, to_string(m_Destination).c_str()); } @@ -565,7 +566,6 @@ int32 ZoneDatabase::GetDoorsCount(uint32* oMaxID, const char *zone_name, int16 v zone_name, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetDoorsCount query '" << query << "' " << results.ErrorMessage() << std::endl; return -1; } @@ -592,7 +592,6 @@ int32 ZoneDatabase::GetDoorsCountPlusOne(const char *zone_name, int16 version) { "WHERE zone = '%s' AND version = %u", zone_name, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetDoorsCountPlusOne query '" << query << "' " << results.ErrorMessage() << std::endl; return -1; } @@ -616,7 +615,6 @@ int32 ZoneDatabase::GetDoorsDBCountPlusOne(const char *zone_name, int16 version) zone_name, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetDoorsCountPlusOne query '" << query << "' " << results.ErrorMessage() << std::endl; return -1; } @@ -632,7 +630,7 @@ int32 ZoneDatabase::GetDoorsDBCountPlusOne(const char *zone_name, int16 version) } bool ZoneDatabase::LoadDoors(int32 iDoorCount, Door *into, const char *zone_name, int16 version) { - LogFile->write(EQEmuLog::Status, "Loading Doors from database..."); + Log.Out(Logs::General, Logs::Status, "Loading Doors from database..."); // Door tmpDoor; @@ -644,7 +642,6 @@ bool ZoneDatabase::LoadDoors(int32 iDoorCount, Door *into, const char *zone_name "ORDER BY doorid asc", zone_name, version); auto results = QueryDatabase(query); if (!results.Success()){ - std::cerr << "Error in DBLoadDoors query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } diff --git a/zone/effects.cpp b/zone/effects.cpp index c43b91168..1762de948 100644 --- a/zone/effects.cpp +++ b/zone/effects.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/spdat.h" #include "client.h" @@ -461,7 +462,7 @@ bool Client::TrainDiscipline(uint32 itemid) { const Item_Struct *item = database.GetItem(itemid); if(item == nullptr) { Message(13, "Unable to find the tome you turned in!"); - LogFile->write(EQEmuLog::Error, "Unable to find turned in tome id %lu\n", (unsigned long)itemid); + Log.Out(Logs::General, Logs::Error, "Unable to find turned in tome id %lu\n", (unsigned long)itemid); return(false); } diff --git a/zone/embparser.cpp b/zone/embparser.cpp index 12fd3effb..2e038eb5a 100644 --- a/zone/embparser.cpp +++ b/zone/embparser.cpp @@ -18,7 +18,7 @@ #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/seperator.h" #include "../common/misc_functions.h" #include "../common/string_util.h" @@ -140,7 +140,7 @@ void PerlembParser::ReloadQuests() { perl = nullptr; } - LogFile->write(EQEmuLog::Status, "Error re-initializing perlembed: %s", e.what()); + Log.Out(Logs::General, Logs::Status, "Error re-initializing perlembed: %s", e.what()); throw e.what(); } diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index 435dd6eea..1fedc9ddd 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -21,7 +21,7 @@ #ifdef EMBPERL #ifdef EMBPERL_XS -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/misc_functions.h" #include "embparser.h" @@ -3506,7 +3506,7 @@ EXTERN_C XS(boot_quest) file[255] = '\0'; if(items != 1) - LogFile->write(EQEmuLog::Error, "boot_quest does not take any arguments."); + Log.Out(Logs::General, Logs::Error, "boot_quest does not take any arguments."); char buf[128]; //shouldent have any function names longer than this. diff --git a/zone/embperl.cpp b/zone/embperl.cpp index e356ff7ac..4d27d1269 100644 --- a/zone/embperl.cpp +++ b/zone/embperl.cpp @@ -10,7 +10,8 @@ Eglin #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #include #include @@ -139,12 +140,12 @@ void Embperl::DoInit() { catch(const char *err) { //remember... lasterr() is no good if we crap out here, in construction - LogFile->write(EQEmuLog::Quest, "perl error: %s", err); + Log.Out(Logs::General, Logs::Quests, "perl error: %s", err); throw "failed to install eval_file hook"; } #ifdef EMBPERL_IO_CAPTURE - LogFile->write(EQEmuLog::Quest, "Tying perl output to eqemu logs"); + Log.Out(Logs::General, Logs::Quests, "Tying perl output to eqemu logs"); //make a tieable class to capture IO and pass it into EQEMuLog eval_pv( "package EQEmuIO; " @@ -169,14 +170,14 @@ void Embperl::DoInit() { ,FALSE ); - LogFile->write(EQEmuLog::Quest, "Loading perlemb plugins."); + Log.Out(Logs::General, Logs::Quests, "Loading perlemb plugins."); try { eval_pv("main::eval_file('plugin', 'plugin.pl');", FALSE); } catch(const char *err) { - LogFile->write(EQEmuLog::Quest, "Warning - plugin.pl: %s", err); + Log.Out(Logs::General, Logs::Quests, "Warning - plugin.pl: %s", err); } try { @@ -194,7 +195,7 @@ void Embperl::DoInit() { } catch(const char *err) { - LogFile->write(EQEmuLog::Quest, "Perl warning: %s", err); + Log.Out(Logs::General, Logs::Quests, "Perl warning: %s", err); } #endif //EMBPERL_PLUGIN in_use = false; diff --git a/zone/embxs.cpp b/zone/embxs.cpp index 11b444ef0..664416587 100644 --- a/zone/embxs.cpp +++ b/zone/embxs.cpp @@ -17,7 +17,8 @@ */ #ifdef EMBPERL -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "masterentity.h" #include "command.h" @@ -63,7 +64,7 @@ EXTERN_C XS(boot_qc) file[255] = '\0'; if(items != 1) - LogFile->write(EQEmuLog::Error, "boot_qc does not take any arguments."); + Log.Out(Logs::General, Logs::Error, "boot_qc does not take any arguments."); char buf[128]; //shouldent have any function names longer than this. @@ -91,12 +92,15 @@ XS(XS_EQEmuIO_PRINT) char *str = SvPV_nolen(ST(r)); char *cur = str; + /* Strip newlines from log message 'str' */ + *std::remove(str, str + strlen(str), '\n') = '\0'; + int i; int pos = 0; int len = 0; for(i = 0; *cur != '\0'; i++, cur++) { if(*cur == '\n') { - LogFile->writebuf(EQEmuLog::Quest, str + pos, 1, len); + Log.Out(Logs::General, Logs::Quests, str); len = 0; pos = i+1; } else { @@ -104,7 +108,7 @@ XS(XS_EQEmuIO_PRINT) } } if(len > 0) { - LogFile->writebuf(EQEmuLog::Quest, str + pos, 1, len); + Log.Out(Logs::General, Logs::Quests, str); } } diff --git a/zone/entity.cpp b/zone/entity.cpp index 5b426f776..5600ccc83 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include @@ -75,13 +75,11 @@ Client *Entity::CastToClient() { if (this == 0x00) { std::cout << "CastToClient error (nullptr)" << std::endl; - DebugBreak(); return 0; } #ifdef _EQDEBUG if (!IsClient()) { std::cout << "CastToClient error (not client?)" << std::endl; - DebugBreak(); return 0; } #endif @@ -93,7 +91,6 @@ NPC *Entity::CastToNPC() #ifdef _EQDEBUG if (!IsNPC()) { std::cout << "CastToNPC error" << std::endl; - DebugBreak(); return 0; } #endif @@ -105,7 +102,6 @@ Mob *Entity::CastToMob() #ifdef _EQDEBUG if (!IsMob()) { std::cout << "CastToMob error" << std::endl; - DebugBreak(); return 0; } #endif @@ -117,7 +113,6 @@ Merc *Entity::CastToMerc() #ifdef _EQDEBUG if (!IsMerc()) { std::cout << "CastToMerc error" << std::endl; - DebugBreak(); return 0; } #endif @@ -129,7 +124,6 @@ Trap *Entity::CastToTrap() { #ifdef DEBUG if (!IsTrap()) { - //std::cout << "CastToTrap error" << std::endl; return 0; } #endif @@ -141,7 +135,6 @@ Corpse *Entity::CastToCorpse() #ifdef _EQDEBUG if (!IsCorpse()) { std::cout << "CastToCorpse error" << std::endl; - DebugBreak(); return 0; } #endif @@ -153,7 +146,6 @@ Object *Entity::CastToObject() #ifdef _EQDEBUG if (!IsObject()) { std::cout << "CastToObject error" << std::endl; - DebugBreak(); return 0; } #endif @@ -164,7 +156,6 @@ Object *Entity::CastToObject() #ifdef _EQDEBUG if(!IsGroup()) { std::cout << "CastToGroup error" << std::endl; - DebugBreak(); return 0; } #endif @@ -185,13 +176,11 @@ const Client *Entity::CastToClient() const { if (this == 0x00) { std::cout << "CastToClient error (nullptr)" << std::endl; - DebugBreak(); return 0; } #ifdef _EQDEBUG if (!IsClient()) { std::cout << "CastToClient error (not client?)" << std::endl; - DebugBreak(); return 0; } #endif @@ -203,7 +192,6 @@ const NPC *Entity::CastToNPC() const #ifdef _EQDEBUG if (!IsNPC()) { std::cout << "CastToNPC error" << std::endl; - DebugBreak(); return 0; } #endif @@ -215,7 +203,6 @@ const Mob *Entity::CastToMob() const #ifdef _EQDEBUG if (!IsMob()) { std::cout << "CastToMob error" << std::endl; - DebugBreak(); return 0; } #endif @@ -227,7 +214,6 @@ const Merc *Entity::CastToMerc() const #ifdef _EQDEBUG if (!IsMerc()) { std::cout << "CastToMerc error" << std::endl; - DebugBreak(); return 0; } #endif @@ -238,7 +224,6 @@ const Trap *Entity::CastToTrap() const { #ifdef DEBUG if (!IsTrap()) { - //std::cout << "CastToTrap error" << std::endl; return 0; } #endif @@ -250,7 +235,6 @@ const Corpse *Entity::CastToCorpse() const #ifdef _EQDEBUG if (!IsCorpse()) { std::cout << "CastToCorpse error" << std::endl; - DebugBreak(); return 0; } #endif @@ -262,7 +246,6 @@ const Object *Entity::CastToObject() const #ifdef _EQDEBUG if (!IsObject()) { std::cout << "CastToObject error" << std::endl; - DebugBreak(); return 0; } #endif @@ -285,7 +268,6 @@ Bot *Entity::CastToBot() #ifdef _EQDEBUG if (!IsBot()) { std::cout << "CastToBot error" << std::endl; - DebugBreak(); return 0; } #endif @@ -371,7 +353,7 @@ void EntityList::CheckGroupList (const char *fname, const int fline) { if (*it == nullptr) { - LogFile->write(EQEmuLog::Error, "nullptr group, %s:%i", fname, fline); + Log.Out(Logs::General, Logs::Error, "nullptr group, %s:%i", fname, fline); } } } @@ -515,17 +497,17 @@ void EntityList::MobProcess() #ifdef _WINDOWS struct in_addr in; in.s_addr = mob->CastToClient()->GetIP(); - std::cout << "Dropping client: Process=false, ip=" << inet_ntoa(in) << ", port=" << mob->CastToClient()->GetPort() << std::endl; + Log.Out(Logs::General, Logs::Zone_Server, "Dropping client: Process=false, ip=%s port=%u", inet_ntoa(in), mob->CastToClient()->GetPort()); #endif zone->StartShutdownTimer(); Group *g = GetGroupByMob(mob); if(g) { - LogFile->write(EQEmuLog::Error, "About to delete a client still in a group."); + Log.Out(Logs::General, Logs::Error, "About to delete a client still in a group."); g->DelMember(mob); } Raid *r = entity_list.GetRaidByClient(mob->CastToClient()); if(r) { - LogFile->write(EQEmuLog::Error, "About to delete a client still in a raid."); + Log.Out(Logs::General, Logs::Error, "About to delete a client still in a raid."); r->MemberZoned(mob->CastToClient()); } entity_list.RemoveClient(id); @@ -557,7 +539,7 @@ void EntityList::AddGroup(Group *group) uint32 gid = worldserver.NextGroupID(); if (gid == 0) { - LogFile->write(EQEmuLog::Error, + Log.Out(Logs::General, Logs::Error, "Unable to get new group ID from world server. group is going to be broken."); return; } @@ -586,7 +568,7 @@ void EntityList::AddRaid(Raid *raid) uint32 gid = worldserver.NextGroupID(); if (gid == 0) { - LogFile->write(EQEmuLog::Error, + Log.Out(Logs::General, Logs::Error, "Unable to get new group ID from world server. group is going to be broken."); return; } @@ -2508,7 +2490,7 @@ char *EntityList::MakeNameUnique(char *name) return name; } } - LogFile->write(EQEmuLog::Error, "Fatal error in EntityList::MakeNameUnique: Unable to find unique name for '%s'", name); + Log.Out(Logs::General, Logs::Error, "Fatal error in EntityList::MakeNameUnique: Unable to find unique name for '%s'", name); char tmp[64] = "!"; strn0cpy(&tmp[1], name, sizeof(tmp) - 1); strcpy(name, tmp); @@ -3386,7 +3368,7 @@ void EntityList::ReloadAllClientsTaskState(int TaskID) // If we have been passed a TaskID, only reload the client state if they have // that Task active. if ((!TaskID) || (TaskID && client->IsTaskActive(TaskID))) { - _log(TASKS__CLIENTLOAD, "Reloading Task State For Client %s", client->GetName()); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] Reloading Task State For Client %s", client->GetName()); client->RemoveClientTaskState(); client->LoadClientTaskState(); taskmanager->SendActiveTasksToClient(client); @@ -3527,35 +3509,6 @@ bool EntityList::LimitCheckName(const char *npc_name) return true; } -void EntityList::RadialSetLogging(Mob *around, bool enabled, bool clients, - bool non_clients, float range) -{ - float range2 = range * range; - - auto it = mob_list.begin(); - while (it != mob_list.end()) { - Mob *mob = it->second; - - ++it; - - if (mob->IsClient()) { - if (!clients) - continue; - } else { - if (!non_clients) - continue; - } - - if (ComparativeDistance(around->GetPosition(), mob->GetPosition()) > range2) - continue; - - if (enabled) - mob->EnableLogging(); - else - mob->DisableLogging(); - } -} - void EntityList::UpdateHoTT(Mob *target) { auto it = client_list.begin(); diff --git a/zone/entity.h b/zone/entity.h index c94ce03b8..54e6b6279 100644 --- a/zone/entity.h +++ b/zone/entity.h @@ -321,8 +321,6 @@ public: void MassGroupBuff(Mob *caster, Mob *center, uint16 spell_id, bool affect_caster = true); void AEBardPulse(Mob *caster, Mob *center, uint16 spell_id, bool affect_caster = true); - void RadialSetLogging(Mob *around, bool enabled, bool clients, bool non_clients, float range = 0); - //trap stuff Mob* GetTrapTrigger(Trap* trap); void SendAlarm(Trap* trap, Mob* currenttarget, uint8 kos); diff --git a/zone/exp.cpp b/zone/exp.cpp index 7edd70864..7eb2189df 100644 --- a/zone/exp.cpp +++ b/zone/exp.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/features.h" #include "../common/rulesys.h" #include "../common/string_util.h" @@ -240,7 +240,7 @@ void Client::AddEXP(uint32 in_add_exp, uint8 conlevel, bool resexp) { } void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) { - _log(CLIENT__EXP, "Attempting to Set Exp for %s (XP: %u, AAXP: %u, Rez: %s)", this->GetCleanName(), set_exp, set_aaxp, isrezzexp ? "true" : "false"); + Log.Out(Logs::Detail, Logs::None, "Attempting to Set Exp for %s (XP: %u, AAXP: %u, Rez: %s)", this->GetCleanName(), set_exp, set_aaxp, isrezzexp ? "true" : "false"); //max_AAXP = GetEXPForLevel(52) - GetEXPForLevel(51); //GetEXPForLevel() doesn't depend on class/race, just level, so it shouldn't change between Clients max_AAXP = RuleI(AA, ExpPerPoint); //this may be redundant since we're doing this in Client::FinishConnState2() if (max_AAXP == 0 || GetEXPForLevel(GetLevel()) == 0xFFFFFFFF) { @@ -308,7 +308,7 @@ void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) { //figure out how many AA points we get from the exp were setting m_pp.aapoints = set_aaxp / max_AAXP; - _log(CLIENT__EXP, "Calculating additional AA Points from AAXP for %s: %u / %u = %.1f points", this->GetCleanName(), set_aaxp, max_AAXP, (float)set_aaxp / (float)max_AAXP); + Log.Out(Logs::Detail, Logs::None, "Calculating additional AA Points from AAXP for %s: %u / %u = %.1f points", this->GetCleanName(), set_aaxp, max_AAXP, (float)set_aaxp / (float)max_AAXP); //get remainder exp points, set in PP below set_aaxp = set_aaxp - (max_AAXP * m_pp.aapoints); @@ -430,7 +430,7 @@ void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) { void Client::SetLevel(uint8 set_level, bool command) { if (GetEXPForLevel(set_level) == 0xFFFFFFFF) { - LogFile->write(EQEmuLog::Error,"Client::SetLevel() GetEXPForLevel(%i) = 0xFFFFFFFF", set_level); + Log.Out(Logs::General, Logs::Error, "Client::SetLevel() GetEXPForLevel(%i) = 0xFFFFFFFF", set_level); return; } @@ -488,7 +488,7 @@ void Client::SetLevel(uint8 set_level, bool command) safe_delete(outapp); this->SendAppearancePacket(AT_WhoLevel, set_level); // who level change - LogFile->write(EQEmuLog::Normal,"Setting Level for %s to %i", GetName(), set_level); + Log.Out(Logs::General, Logs::Normal, "Setting Level for %s to %i", GetName(), set_level); CalcBonuses(); diff --git a/zone/fearpath.cpp b/zone/fearpath.cpp index ea32e2f95..7bf854bbc 100644 --- a/zone/fearpath.cpp +++ b/zone/fearpath.cpp @@ -165,11 +165,11 @@ void Mob::CalculateNewFearpoint() m_FearWalkTarget = xyz_location(Loc.x, Loc.y, Loc.z); curfp = true; - mlog(PATHING__DEBUG, "Feared to node %i (%8.3f, %8.3f, %8.3f)", Node, Loc.x, Loc.y, Loc.z); + Log.Out(Logs::Detail, Logs::None, "Feared to node %i (%8.3f, %8.3f, %8.3f)", Node, Loc.x, Loc.y, Loc.z); return; } - mlog(PATHING__DEBUG, "No path found to selected node. Falling through to old fear point selection."); + Log.Out(Logs::Detail, Logs::None, "No path found to selected node. Falling through to old fear point selection."); } int loop = 0; diff --git a/zone/forage.cpp b/zone/forage.cpp index 24c621c52..bad996850 100644 --- a/zone/forage.cpp +++ b/zone/forage.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/misc_functions.h" #include "../common/rulesys.h" #include "../common/string_util.h" @@ -58,7 +59,6 @@ uint32 ZoneDatabase::GetZoneForage(uint32 ZoneID, uint8 skill) { "LIMIT %i", ZoneID, skill, FORAGE_ITEM_LIMIT); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Forage query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -69,7 +69,7 @@ uint32 ZoneDatabase::GetZoneForage(uint32 ZoneID, uint8 skill) { item[index] = atoi(row[0]); chance[index] = atoi(row[1]) + chancepool; - LogFile->write(EQEmuLog::Error, "Possible Forage: %d with a %d chance", item[index], chance[index]); + Log.Out(Logs::General, Logs::Error, "Possible Forage: %d with a %d chance", item[index], chance[index]); chancepool = chance[index]; } @@ -114,7 +114,6 @@ uint32 ZoneDatabase::GetZoneFishing(uint32 ZoneID, uint8 skill, uint32 &npc_id, ZoneID, skill); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in Fishing query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -391,7 +390,7 @@ void Client::ForageItem(bool guarantee) { const Item_Struct* food_item = database.GetItem(foragedfood); if(!food_item) { - LogFile->write(EQEmuLog::Error, "nullptr returned from database.GetItem in ClientForageItem"); + Log.Out(Logs::General, Logs::Error, "nullptr returned from database.GetItem in ClientForageItem"); return; } diff --git a/zone/groups.cpp b/zone/groups.cpp index 27ff3b758..99a3e66dc 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -15,7 +15,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "masterentity.h" #include "npc_ai.h" #include "../common/packet_functions.h" @@ -767,7 +768,7 @@ void Group::CastGroupSpell(Mob* caster, uint16 spell_id) { caster->SpellOnTarget(spell_id, members[z]->GetPet()); #endif } else - _log(SPELLS__CASTING, "Group spell: %s is out of range %f at distance %f from %s", members[z]->GetName(), range, distance, caster->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Group spell: %s is out of range %f at distance %f from %s", members[z]->GetName(), range, distance, caster->GetName()); } } @@ -806,7 +807,7 @@ void Group::GroupBardPulse(Mob* caster, uint16 spell_id) { members[z]->GetPet()->BardPulse(spell_id, caster); #endif } else - _log(SPELLS__BARDS, "Group bard pulse: %s is out of range %f at distance %f from %s", members[z]->GetName(), range, distance, caster->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Group bard pulse: %s is out of range %f at distance %f from %s", members[z]->GetName(), range, distance, caster->GetName()); } } } @@ -1068,7 +1069,7 @@ bool Group::LearnMembers() { return false; if (results.RowCount() == 0) { - LogFile->write(EQEmuLog::Error, "Error getting group members for group %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error getting group members for group %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); return false; } @@ -1097,7 +1098,7 @@ void Group::VerifyGroup() { for (i = 0; i < MAX_GROUP_MEMBERS; i++) { if (membername[i][0] == '\0') { #if EQDEBUG >= 7 - LogFile->write(EQEmuLog::Debug, "Group %lu: Verify %d: Empty.\n", (unsigned long)GetID(), i); + Log.Out(Logs::General, Logs::None, "Group %lu: Verify %d: Empty.\n", (unsigned long)GetID(), i); #endif members[i] = nullptr; continue; @@ -1106,7 +1107,7 @@ void Group::VerifyGroup() { Mob *them = entity_list.GetMob(membername[i]); if(them == nullptr && members[i] != nullptr) { //they aren't in zone #if EQDEBUG >= 6 - LogFile->write(EQEmuLog::Debug, "Member of group %lu named '%s' has disappeared!!", (unsigned long)GetID(), membername[i]); + Log.Out(Logs::General, Logs::None, "Member of group %lu named '%s' has disappeared!!", (unsigned long)GetID(), membername[i]); #endif membername[i][0] = '\0'; members[i] = nullptr; @@ -1115,13 +1116,13 @@ void Group::VerifyGroup() { if(them != nullptr && members[i] != them) { //our pointer is out of date... not so good. #if EQDEBUG >= 5 - LogFile->write(EQEmuLog::Debug, "Member of group %lu named '%s' had an out of date pointer!!", (unsigned long)GetID(), membername[i]); + Log.Out(Logs::General, Logs::None, "Member of group %lu named '%s' had an out of date pointer!!", (unsigned long)GetID(), membername[i]); #endif members[i] = them; continue; } #if EQDEBUG >= 8 - LogFile->write(EQEmuLog::Debug, "Member of group %lu named '%s' is valid.", (unsigned long)GetID(), membername[i]); + Log.Out(Logs::General, Logs::None, "Member of group %lu named '%s' is valid.", (unsigned long)GetID(), membername[i]); #endif } } @@ -1456,7 +1457,7 @@ void Group::DelegateMainTank(const char *NewMainTankName, uint8 toggle) MainTankName.c_str(), GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to set group main tank: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to set group main tank: %s\n", results.ErrorMessage().c_str()); } } @@ -1502,7 +1503,7 @@ void Group::DelegateMainAssist(const char *NewMainAssistName, uint8 toggle) MainAssistName.c_str(), GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to set group main assist: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to set group main assist: %s\n", results.ErrorMessage().c_str()); } } @@ -1549,7 +1550,7 @@ void Group::DelegatePuller(const char *NewPullerName, uint8 toggle) PullerName.c_str(), GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to set group main puller: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to set group main puller: %s\n", results.ErrorMessage().c_str()); } @@ -1700,7 +1701,7 @@ void Group::UnDelegateMainTank(const char *OldMainTankName, uint8 toggle) std::string query = StringFormat("UPDATE group_leaders SET maintank = '' WHERE gid = %i LIMIT 1", GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to clear group main tank: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to clear group main tank: %s\n", results.ErrorMessage().c_str()); if(!toggle) { for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) { @@ -1749,7 +1750,7 @@ void Group::UnDelegateMainAssist(const char *OldMainAssistName, uint8 toggle) std::string query = StringFormat("UPDATE group_leaders SET assist = '' WHERE gid = %i LIMIT 1", GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to clear group main assist: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to clear group main assist: %s\n", results.ErrorMessage().c_str()); if(!toggle) { @@ -1777,7 +1778,7 @@ void Group::UnDelegatePuller(const char *OldPullerName, uint8 toggle) std::string query = StringFormat("UPDATE group_leaders SET puller = '' WHERE gid = %i LIMIT 1", GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to clear group main puller: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to clear group main puller: %s\n", results.ErrorMessage().c_str()); if(!toggle) { for(uint32 i = 0; i < MAX_GROUP_MEMBERS; ++i) { @@ -1860,7 +1861,7 @@ void Group::SetGroupMentor(int percent, char *name) mentoree_name.c_str(), mentor_percent, GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to set group mentor: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to set group mentor: %s\n", results.ErrorMessage().c_str()); } void Group::ClearGroupMentor() @@ -1871,7 +1872,7 @@ void Group::ClearGroupMentor() std::string query = StringFormat("UPDATE group_leaders SET mentoree = '', mentor_percent = 0 WHERE gid = %i LIMIT 1", GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to clear group mentor: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to clear group mentor: %s\n", results.ErrorMessage().c_str()); } void Group::NotifyAssistTarget(Client *c) @@ -1941,7 +1942,7 @@ void Group::DelegateMarkNPC(const char *NewNPCMarkerName) NewNPCMarkerName, GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to set group mark npc: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to set group mark npc: %s\n", results.ErrorMessage().c_str()); } void Group::NotifyMarkNPC(Client *c) @@ -2022,7 +2023,7 @@ void Group::UnDelegateMarkNPC(const char *OldNPCMarkerName) std::string query = StringFormat("UPDATE group_leaders SET marknpc = '' WHERE gid = %i LIMIT 1", GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to clear group marknpc: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to clear group marknpc: %s\n", results.ErrorMessage().c_str()); } @@ -2039,7 +2040,7 @@ void Group::SaveGroupLeaderAA() safe_delete_array(queryBuffer); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to store LeadershipAA: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to store LeadershipAA: %s\n", results.ErrorMessage().c_str()); } diff --git a/zone/guild.cpp b/zone/guild.cpp index 05713f66f..12f785b02 100644 --- a/zone/guild.cpp +++ b/zone/guild.cpp @@ -56,8 +56,7 @@ void Client::SendGuildMOTD(bool GetGuildMOTDReply) { } - mlog(GUILDS__OUT_PACKETS, "Sending OP_GuildMOTD of length %d", outapp->size); - mpkt(GUILDS__OUT_PACKET_TRACE, outapp); + Log.Out(Logs::Detail, Logs::Guilds, "Sending OP_GuildMOTD of length %d", outapp->size); FastQueuePacket(&outapp); } @@ -145,10 +144,10 @@ void Client::SendGuildSpawnAppearance() { if (!IsInAGuild()) { // clear guildtag SendAppearancePacket(AT_GuildID, GUILD_NONE); - mlog(GUILDS__OUT_PACKETS, "Sending spawn appearance for no guild tag."); + Log.Out(Logs::Detail, Logs::Guilds, "Sending spawn appearance for no guild tag."); } else { uint8 rank = guild_mgr.GetDisplayedRank(GuildID(), GuildRank(), CharacterID()); - mlog(GUILDS__OUT_PACKETS, "Sending spawn appearance for guild %d at rank %d", GuildID(), rank); + Log.Out(Logs::Detail, Logs::Guilds, "Sending spawn appearance for guild %d at rank %d", GuildID(), rank); SendAppearancePacket(AT_GuildID, GuildID()); if(GetClientVersion() >= ClientVersion::RoF) { @@ -172,12 +171,11 @@ void Client::SendGuildList() { //ask the guild manager to build us a nice guild list packet outapp->pBuffer = guild_mgr.MakeGuildList(/*GetName()*/"", outapp->size); if(outapp->pBuffer == nullptr) { - mlog(GUILDS__ERROR, "Unable to make guild list!"); + Log.Out(Logs::Detail, Logs::Guilds, "Unable to make guild list!"); return; } - mlog(GUILDS__OUT_PACKETS, "Sending OP_ZoneGuildList of length %d", outapp->size); -// mpkt(GUILDS__OUT_PACKET_TRACE, outapp); + Log.Out(Logs::Detail, Logs::Guilds, "Sending OP_ZoneGuildList of length %d", outapp->size); FastQueuePacket(&outapp); } @@ -194,8 +192,7 @@ void Client::SendGuildMembers() { outapp->pBuffer = data; data = nullptr; - mlog(GUILDS__OUT_PACKETS, "Sending OP_GuildMemberList of length %d", outapp->size); - mpkt(GUILDS__OUT_PACKET_TRACE, outapp); + Log.Out(Logs::Detail, Logs::Guilds, "Sending OP_GuildMemberList of length %d", outapp->size); FastQueuePacket(&outapp); @@ -226,7 +223,7 @@ void Client::RefreshGuildInfo() CharGuildInfo info; if(!guild_mgr.GetCharInfo(CharacterID(), info)) { - mlog(GUILDS__ERROR, "Unable to obtain guild char info for %s (%d)", GetName(), CharacterID()); + Log.Out(Logs::Detail, Logs::Guilds, "Unable to obtain guild char info for %s (%d)", GetName(), CharacterID()); return; } @@ -338,8 +335,7 @@ void Client::SendGuildJoin(GuildJoin_Struct* gj){ outgj->rank = gj->rank; outgj->zoneid = gj->zoneid; - mlog(GUILDS__OUT_PACKETS, "Sending OP_GuildManageAdd for join of length %d", outapp->size); - mpkt(GUILDS__OUT_PACKET_TRACE, outapp); + Log.Out(Logs::Detail, Logs::Guilds, "Sending OP_GuildManageAdd for join of length %d", outapp->size); FastQueuePacket(&outapp); @@ -413,7 +409,6 @@ bool ZoneDatabase::CheckGuildDoor(uint8 doorid, uint16 guild_id, const char* zon doorid-128, zone); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in CheckGuildDoor query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -433,7 +428,6 @@ bool ZoneDatabase::SetGuildDoor(uint8 doorid,uint16 guild_id, const char* zone) guild_id, doorid, zone); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in SetGuildDoor query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } diff --git a/zone/guild_mgr.cpp b/zone/guild_mgr.cpp index 5f75ec801..a5188def9 100644 --- a/zone/guild_mgr.cpp +++ b/zone/guild_mgr.cpp @@ -32,7 +32,7 @@ extern WorldServer worldserver; extern volatile bool ZoneLoaded; void ZoneGuildManager::SendGuildRefresh(uint32 guild_id, bool name, bool motd, bool rank, bool relation) { - _log(GUILDS__REFRESH, "Sending guild refresh for %d to world, changes: name=%d, motd=%d, rank=d, relation=%d", guild_id, name, motd, rank, relation); + Log.Out(Logs::Detail, Logs::Guilds, "Sending guild refresh for %d to world, changes: name=%d, motd=%d, rank=d, relation=%d", guild_id, name, motd, rank, relation); ServerPacket* pack = new ServerPacket(ServerOP_RefreshGuild, sizeof(ServerGuildRefresh_Struct)); ServerGuildRefresh_Struct *s = (ServerGuildRefresh_Struct *) pack->pBuffer; s->guild_id = guild_id; @@ -46,7 +46,7 @@ void ZoneGuildManager::SendGuildRefresh(uint32 guild_id, bool name, bool motd, b void ZoneGuildManager::SendCharRefresh(uint32 old_guild_id, uint32 guild_id, uint32 charid) { if(guild_id == 0) { - _log(GUILDS__REFRESH, "Guild lookup for char %d when sending char refresh.", charid); + Log.Out(Logs::Detail, Logs::Guilds, "Guild lookup for char %d when sending char refresh.", charid); CharGuildInfo gci; if(!GetCharInfo(charid, gci)) { @@ -56,7 +56,7 @@ void ZoneGuildManager::SendCharRefresh(uint32 old_guild_id, uint32 guild_id, uin } } - _log(GUILDS__REFRESH, "Sending char refresh for %d from guild %d to world", charid, guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Sending char refresh for %d from guild %d to world", charid, guild_id); ServerPacket* pack = new ServerPacket(ServerOP_GuildCharRefresh, sizeof(ServerGuildCharRefresh_Struct)); ServerGuildCharRefresh_Struct *s = (ServerGuildCharRefresh_Struct *) pack->pBuffer; @@ -89,7 +89,7 @@ void ZoneGuildManager::SendRankUpdate(uint32 CharID) } void ZoneGuildManager::SendGuildDelete(uint32 guild_id) { - _log(GUILDS__REFRESH, "Sending guild delete for guild %d to world", guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Sending guild delete for guild %d to world", guild_id); ServerPacket* pack = new ServerPacket(ServerOP_DeleteGuild, sizeof(ServerGuildID_Struct)); ServerGuildID_Struct *s = (ServerGuildID_Struct *) pack->pBuffer; s->guild_id = guild_id; @@ -261,12 +261,12 @@ void ZoneGuildManager::ProcessWorldPacket(ServerPacket *pack) { switch(pack->opcode) { case ServerOP_RefreshGuild: { if(pack->size != sizeof(ServerGuildRefresh_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildRefresh_Struct)); + Log.Out(Logs::General, Logs::Error, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildRefresh_Struct)); return; } ServerGuildRefresh_Struct *s = (ServerGuildRefresh_Struct *) pack->pBuffer; - _log(GUILDS__REFRESH, "Received guild refresh from world for %d, changes: name=%d, motd=%d, rank=%d, relation=%d", s->guild_id, s->name_change, s->motd_change, s->rank_change, s->relation_change); + Log.Out(Logs::Detail, Logs::Guilds, "Received guild refresh from world for %d, changes: name=%d, motd=%d, rank=%d, relation=%d", s->guild_id, s->name_change, s->motd_change, s->rank_change, s->relation_change); //reload all the guild details from the database. RefreshGuild(s->guild_id); @@ -295,12 +295,12 @@ void ZoneGuildManager::ProcessWorldPacket(ServerPacket *pack) { case ServerOP_GuildCharRefresh: { if(pack->size != sizeof(ServerGuildCharRefresh_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildCharRefresh_Struct)); + Log.Out(Logs::General, Logs::Error, "Received ServerOP_RefreshGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildCharRefresh_Struct)); return; } ServerGuildCharRefresh_Struct *s = (ServerGuildCharRefresh_Struct *) pack->pBuffer; - _log(GUILDS__REFRESH, "Received guild member refresh from world for char %d from guild %d", s->char_id, s->guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Received guild member refresh from world for char %d from guild %d", s->char_id, s->guild_id); Client *c = entity_list.GetClientByCharID(s->char_id); @@ -338,7 +338,7 @@ void ZoneGuildManager::ProcessWorldPacket(ServerPacket *pack) { { if(pack->size != sizeof(ServerGuildRankUpdate_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_RankUpdate of incorrect size %d, expected %d", + Log.Out(Logs::General, Logs::Error, "Received ServerOP_RankUpdate of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildRankUpdate_Struct)); return; @@ -364,12 +364,12 @@ void ZoneGuildManager::ProcessWorldPacket(ServerPacket *pack) { case ServerOP_DeleteGuild: { if(pack->size != sizeof(ServerGuildID_Struct)) { - _log(GUILDS__ERROR, "Received ServerOP_DeleteGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildID_Struct)); + Log.Out(Logs::General, Logs::Error, "Received ServerOP_DeleteGuild of incorrect size %d, expected %d", pack->size, sizeof(ServerGuildID_Struct)); return; } ServerGuildID_Struct *s = (ServerGuildID_Struct *) pack->pBuffer; - _log(GUILDS__REFRESH, "Received guild delete from world for guild %d", s->guild_id); + Log.Out(Logs::Detail, Logs::Guilds, "Received guild delete from world for guild %d", s->guild_id); //clear all the guild tags. entity_list.RefreshAllGuildInfo(s->guild_id); @@ -417,10 +417,10 @@ void ZoneGuildManager::ProcessWorldPacket(ServerPacket *pack) { if (!c || !c->IsInAGuild()) { - _log(GUILDS__ERROR,"Invalid Client or not in guild. ID=%i", FromID); + Log.Out(Logs::Detail, Logs::Guilds,"Invalid Client or not in guild. ID=%i", FromID); break; } - _log(GUILDS__IN_PACKETS,"Processing ServerOP_OnlineGuildMembersResponse"); + Log.Out(Logs::Detail, Logs::Guilds,"Processing ServerOP_OnlineGuildMembersResponse"); EQApplicationPacket *outapp = new EQApplicationPacket(OP_GuildMemberUpdate, sizeof(GuildMemberUpdate_Struct)); GuildMemberUpdate_Struct *gmus = (GuildMemberUpdate_Struct*)outapp->pBuffer; char Name[64]; @@ -433,7 +433,7 @@ void ZoneGuildManager::ProcessWorldPacket(ServerPacket *pack) { VARSTRUCT_DECODE_STRING(Name, Buffer); strn0cpy(gmus->MemberName, Name, sizeof(gmus->MemberName)); gmus->ZoneID = VARSTRUCT_DECODE_TYPE(uint32, Buffer); - _log(GUILDS__OUT_PACKETS,"Sending OP_GuildMemberUpdate to %i. Name=%s ZoneID=%i",FromID,Name,gmus->ZoneID); + Log.Out(Logs::Detail, Logs::Guilds,"Sending OP_GuildMemberUpdate to %i. Name=%s ZoneID=%i",FromID,Name,gmus->ZoneID); c->QueuePacket(outapp); } safe_delete(outapp); @@ -603,7 +603,6 @@ bool GuildBankManager::Load(uint32 guildID) "FROM `guild_bank` WHERE `guildid` = %i", guildID); auto results = database.QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__BANK_ERROR, "Error Loading guild bank: %s, %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -684,7 +683,7 @@ void GuildBankManager::SendGuildBank(Client *c) if(Iterator == Banks.end()) { - _log(GUILDS__BANK_ERROR, "Unable to find guild bank for guild ID %i", c->GuildID()); + Log.Out(Logs::General, Logs::Error, "Unable to find guild bank for guild ID %i", c->GuildID()); return; } @@ -800,7 +799,7 @@ bool GuildBankManager::AddItem(uint32 GuildID, uint8 Area, uint32 ItemID, int32 if(Iterator == Banks.end()) { - _log(GUILDS__BANK_ERROR, "Unable to find guild bank for guild ID %i", GuildID); + Log.Out(Logs::General, Logs::Error, "Unable to find guild bank for guild ID %i", GuildID); return false; } @@ -846,7 +845,7 @@ bool GuildBankManager::AddItem(uint32 GuildID, uint8 Area, uint32 ItemID, int32 if(Slot < 0) { - _log(GUILDS__BANK_ERROR, "No space to add item to the guild bank."); + Log.Out(Logs::General, Logs::Error, "No space to add item to the guild bank."); return false; } @@ -857,7 +856,6 @@ bool GuildBankManager::AddItem(uint32 GuildID, uint8 Area, uint32 ItemID, int32 GuildID, Area, Slot, ItemID, QtyOrCharges, Donator, Permissions, WhoFor); auto results = database.QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__BANK_ERROR, "Insert Error: %s : %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -922,7 +920,6 @@ int GuildBankManager::Promote(uint32 guildID, int slotID) "LIMIT 1", mainSlot, guildID, slotID); auto results = database.QueryDatabase(query); if (!results.Success()) { - _log(GUILDS__BANK_ERROR, "error promoting item: %s : %s", query.c_str(), results.ErrorMessage().c_str()); return -1; } @@ -974,7 +971,6 @@ void GuildBankManager::SetPermissions(uint32 guildID, uint16 slotID, uint32 perm auto results = database.QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__BANK_ERROR, "error changing permissions: %s : %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1124,7 +1120,6 @@ bool GuildBankManager::DeleteItem(uint32 guildID, uint16 area, uint16 slotID, ui guildID, area, slotID); auto results = database.QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__BANK_ERROR, "Delete item failed. %s : %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1136,7 +1131,6 @@ bool GuildBankManager::DeleteItem(uint32 guildID, uint16 area, uint16 slotID, ui BankArea[slotID].Quantity - quantity, guildID, area, slotID); auto results = database.QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__BANK_ERROR, "Update item failed. %s : %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1299,7 +1293,6 @@ void GuildBankManager::UpdateItemQuantity(uint32 guildID, uint16 area, uint16 sl quantity, guildID, area, slotID); auto results = database.QueryDatabase(query); if(!results.Success()) { - _log(GUILDS__BANK_ERROR, "Update item quantity failed. %s : %s", query.c_str(), results.ErrorMessage().c_str()); return; } diff --git a/zone/horse.cpp b/zone/horse.cpp index 8c7bc23ba..e947b6231 100644 --- a/zone/horse.cpp +++ b/zone/horse.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/linked_list.h" #include "../common/string_util.h" @@ -72,12 +73,11 @@ const NPCType *Horse::BuildHorseType(uint16 spell_id) { std::string query = StringFormat("SELECT race, gender, texture, mountspeed FROM horses WHERE filename = '%s'", fileName); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Mount query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return nullptr; } if (results.RowCount() != 1) { - LogFile->write(EQEmuLog::Error, "No Database entry for mount: %s, check the horses table", fileName); + Log.Out(Logs::General, Logs::Error, "No Database entry for mount: %s, check the horses table", fileName); return nullptr; } @@ -120,7 +120,7 @@ void Client::SummonHorse(uint16 spell_id) { return; } if(!Horse::IsHorseSpell(spell_id)) { - LogFile->write(EQEmuLog::Error, "%s tried to summon an unknown horse, spell id %d", GetName(), spell_id); + Log.Out(Logs::General, Logs::Error, "%s tried to summon an unknown horse, spell id %d", GetName(), spell_id); return; } diff --git a/zone/inventory.cpp b/zone/inventory.cpp index ff64a53bd..858caa8dc 100644 --- a/zone/inventory.cpp +++ b/zone/inventory.cpp @@ -16,8 +16,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" -#include "../common/logsys.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" + #include "../common/string_util.h" #include "quest_parser_collection.h" #include "worldserver.h" @@ -199,7 +200,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // make sure the item exists if(item == nullptr) { Message(13, "Item %u does not exist.", item_id); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create an item with an invalid id.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create an item with an invalid id.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, item_id, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -214,7 +215,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // check to make sure we are augmenting an augmentable item else if (((item->ItemClass != ItemClassCommon) || (item->AugType > 0)) && (aug1 | aug2 | aug3 | aug4 | aug5 | aug6)) { Message(13, "You can not augment an augment or a non-common class item."); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to augment an augment or a non-common class item.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug5: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to augment an augment or a non-common class item.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug5: %u)\n", GetName(), account_name, item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -228,7 +229,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, /* else if(item->MinStatus && ((this->Admin() < item->MinStatus) || (this->Admin() < RuleI(GM, MinStatusToSummonItem)))) { Message(13, "You are not a GM or do not have the status to summon this item."); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create a GM-only item with a status of %i.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u, MinStatus: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create a GM-only item with a status of %i.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u, MinStatus: %u)\n", GetName(), account_name, this->Admin(), item->ID, aug1, aug2, aug3, aug4, aug5, aug6, item->MinStatus); return false; @@ -251,7 +252,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, if(augtest == nullptr) { if(augments[iter]) { Message(13, "Augment %u (Aug%i) does not exist.", augments[iter], iter + 1); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create an augment (Aug%i) with an invalid id.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create an augment (Aug%i) with an invalid id.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, (iter + 1), item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -268,7 +269,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // check that augment is an actual augment else if(augtest->AugType == 0) { Message(13, "%s (%u) (Aug%i) is not an actual augment.", augtest->Name, augtest->ID, iter + 1); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to use a non-augment item (Aug%i) as an augment.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to use a non-augment item (Aug%i) as an augment.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, item->ID, (iter + 1), aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -280,7 +281,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, /* else if(augtest->MinStatus && ((this->Admin() < augtest->MinStatus) || (this->Admin() < RuleI(GM, MinStatusToSummonItem)))) { Message(13, "You are not a GM or do not have the status to summon this augment."); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create a GM-only augment (Aug%i) with a status of %i.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, MinStatus: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create a GM-only augment (Aug%i) with a status of %i.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, MinStatus: %u)\n", GetName(), account_name, (iter + 1), this->Admin(), item->ID, aug1, aug2, aug3, aug4, aug5, aug6, item->MinStatus); return false; @@ -291,7 +292,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, if(enforcewear) { if((item->AugSlotType[iter] == AugTypeNone) || !(((uint32)1 << (item->AugSlotType[iter] - 1)) & augtest->AugType)) { Message(13, "Augment %u (Aug%i) is not acceptable wear on Item %u.", augments[iter], iter + 1, item->ID); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to augment an item with an unacceptable augment type (Aug%i).\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to augment an item with an unacceptable augment type (Aug%i).\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, (iter + 1), item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -299,7 +300,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, if(item->AugSlotVisible[iter] == 0) { Message(13, "Item %u has not evolved enough to accept Augment %u (Aug%i).", item->ID, augments[iter], iter + 1); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to augment an unevolved item with augment type (Aug%i).\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to augment an unevolved item with augment type (Aug%i).\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, (iter + 1), item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -476,7 +477,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, if(restrictfail) { Message(13, "Augment %u (Aug%i) is restricted from wear on Item %u.", augments[iter], (iter + 1), item->ID); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to augment an item with a restricted augment (Aug%i).\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to augment an item with a restricted augment (Aug%i).\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, (iter + 1), item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -487,7 +488,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // check for class usability if(item->Classes && !(classes &= augtest->Classes)) { Message(13, "Augment %u (Aug%i) will result in an item not usable by any class.", augments[iter], (iter + 1)); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create an item unusable by any class.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create an item unusable by any class.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -496,7 +497,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // check for race usability if(item->Races && !(races &= augtest->Races)) { Message(13, "Augment %u (Aug%i) will result in an item not usable by any race.", augments[iter], (iter + 1)); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create an item unusable by any race.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create an item unusable by any race.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -505,7 +506,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // check for slot usability if(item->Slots && !(slots &= augtest->Slots)) { Message(13, "Augment %u (Aug%i) will result in an item not usable in any slot.", augments[iter], (iter + 1)); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to create an item unusable in any slot.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to create an item unusable in any slot.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -532,7 +533,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, if(inst == nullptr) { Message(13, "An unknown server error has occurred and your item was not created."); // this goes to logfile since this is a major error - LogFile->write(EQEmuLog::Error, "Player %s on account %s encountered an unknown item creation error.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::General, Logs::Error, "Player %s on account %s encountered an unknown item creation error.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, item->ID, aug1, aug2, aug3, aug4, aug5, aug6); return false; @@ -558,7 +559,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, if(!(slots & ((uint32)1 << slottest))) { Message(0, "This item is not equipable at slot %u - moving to cursor.", to_slot); - mlog(INVENTORY__ERROR, "Player %s on account %s attempted to equip an item unusable in slot %u - moved to cursor.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", + Log.Out(Logs::Detail, Logs::Inventory, "Player %s on account %s attempted to equip an item unusable in slot %u - moved to cursor.\n(Item: %u, Aug1: %u, Aug2: %u, Aug3: %u, Aug4: %u, Aug5: %u, Aug6: %u)\n", GetName(), account_name, to_slot, item->ID, aug1, aug2, aug3, aug4, aug5, aug6); to_slot = MainCursor; @@ -698,9 +699,9 @@ void Client::SendCursorBuffer() { // Remove item from inventory void Client::DeleteItemInInventory(int16 slot_id, int8 quantity, bool client_update, bool update_db) { -#if (EQDEBUG >= 5) - LogFile->write(EQEmuLog::Debug, "DeleteItemInInventory(%i, %i, %s)", slot_id, quantity, (client_update) ? "true" : "false"); -#endif + #if (EQDEBUG >= 5) + Log.Out(Logs::General, Logs::None, "DeleteItemInInventory(%i, %i, %s)", slot_id, quantity, (client_update) ? "true":"false"); + #endif // Added 'IsSlotValid(slot_id)' check to both segments of client packet processing. // - cursor queue slots were slipping through and crashing client @@ -818,7 +819,7 @@ void Client::DeleteItemInInventory(int16 slot_id, int8 quantity, bool client_upd bool Client::PushItemOnCursor(const ItemInst& inst, bool client_update) { - mlog(INVENTORY__SLOTS, "Putting item %s (%d) on the cursor", inst.GetItem()->Name, inst.GetItem()->ID); + Log.Out(Logs::Detail, Logs::Inventory, "Putting item %s (%d) on the cursor", inst.GetItem()->Name, inst.GetItem()->ID); m_inv.PushCursor(inst); if (client_update) { @@ -834,7 +835,7 @@ bool Client::PushItemOnCursor(const ItemInst& inst, bool client_update) // (Also saves changes back to the database: this may be optimized in the future) // client_update: Sends packet to client bool Client::PutItemInInventory(int16 slot_id, const ItemInst& inst, bool client_update) { - mlog(INVENTORY__SLOTS, "Putting item %s (%d) into slot %d", inst.GetItem()->Name, inst.GetItem()->ID, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Putting item %s (%d) into slot %d", inst.GetItem()->Name, inst.GetItem()->ID, slot_id); if (slot_id == MainCursor) { // don't trust macros before conditional statements... return PushItemOnCursor(inst, client_update); @@ -863,7 +864,7 @@ bool Client::PutItemInInventory(int16 slot_id, const ItemInst& inst, bool client void Client::PutLootInInventory(int16 slot_id, const ItemInst &inst, ServerLootItem_Struct** bag_item_data) { - mlog(INVENTORY__SLOTS, "Putting loot item %s (%d) into slot %d", inst.GetItem()->Name, inst.GetItem()->ID, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Putting loot item %s (%d) into slot %d", inst.GetItem()->Name, inst.GetItem()->ID, slot_id); m_inv.PutItem(slot_id, inst); SendLootItemInPacket(&inst, slot_id); @@ -884,7 +885,7 @@ void Client::PutLootInInventory(int16 slot_id, const ItemInst &inst, ServerLootI continue; const ItemInst *bagitem = database.CreateItem(bag_item_data[i]->item_id, bag_item_data[i]->charges, bag_item_data[i]->aug_1, bag_item_data[i]->aug_2, bag_item_data[i]->aug_3, bag_item_data[i]->aug_4, bag_item_data[i]->aug_5, bag_item_data[i]->aug_6, bag_item_data[i]->attuned); interior_slot = Inventory::CalcSlotId(slot_id, i); - mlog(INVENTORY__SLOTS, "Putting bag loot item %s (%d) into slot %d (bag slot %d)", inst.GetItem()->Name, inst.GetItem()->ID, interior_slot, i); + Log.Out(Logs::Detail, Logs::Inventory, "Putting bag loot item %s (%d) into slot %d (bag slot %d)", inst.GetItem()->Name, inst.GetItem()->ID, interior_slot, i); PutLootInInventory(interior_slot, *bagitem); safe_delete(bagitem); } @@ -1307,7 +1308,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { // SoF+ sends a Unix timestamp (should be int32) for src and dst slots every 10 minutes for some reason. if(src_slot_check < 2147483647) Message(13, "Warning: Invalid slot move from slot %u to slot %u with %u charges!", src_slot_check, dst_slot_check, stack_count_check); - mlog(INVENTORY__SLOTS, "Invalid slot move from slot %u to slot %u with %u charges!", src_slot_check, dst_slot_check, stack_count_check); + Log.Out(Logs::Detail, Logs::Inventory, "Invalid slot move from slot %u to slot %u with %u charges!", src_slot_check, dst_slot_check, stack_count_check); return false; } @@ -1315,7 +1316,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { // SoF+ sends a Unix timestamp (should be int32) for src and dst slots every 10 minutes for some reason. if(src_slot_check < 2147483647) Message(13, "Warning: Invalid slot move from slot %u to slot %u with %u charges!", src_slot_check, dst_slot_check, stack_count_check); - mlog(INVENTORY__SLOTS, "Invalid slot move from slot %u to slot %u with %u charges!", src_slot_check, dst_slot_check, stack_count_check); + Log.Out(Logs::Detail, Logs::Inventory, "Invalid slot move from slot %u to slot %u with %u charges!", src_slot_check, dst_slot_check, stack_count_check); return false; } @@ -1328,7 +1329,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { if (move_in->to_slot == (uint32)INVALID_INDEX) { if (move_in->from_slot == (uint32)MainCursor) { - mlog(INVENTORY__SLOTS, "Client destroyed item from cursor slot %d", move_in->from_slot); + Log.Out(Logs::Detail, Logs::Inventory, "Client destroyed item from cursor slot %d", move_in->from_slot); if(RuleB(QueryServ, PlayerLogMoves)) { QSSwapItemAuditor(move_in); } // QS Audit ItemInst *inst = m_inv.GetItem(MainCursor); @@ -1342,7 +1343,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { return true; // Item destroyed by client } else { - mlog(INVENTORY__SLOTS, "Deleted item from slot %d as a result of an inventory container tradeskill combine.", move_in->from_slot); + Log.Out(Logs::Detail, Logs::Inventory, "Deleted item from slot %d as a result of an inventory container tradeskill combine.", move_in->from_slot); if(RuleB(QueryServ, PlayerLogMoves)) { QSSwapItemAuditor(move_in); } // QS Audit DeleteItemInInventory(move_in->from_slot); return true; // Item deletion @@ -1378,7 +1379,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { ItemInst* src_inst = m_inv.GetItem(src_slot_id); ItemInst* dst_inst = m_inv.GetItem(dst_slot_id); if (src_inst){ - mlog(INVENTORY__SLOTS, "Src slot %d has item %s (%d) with %d charges in it.", src_slot_id, src_inst->GetItem()->Name, src_inst->GetItem()->ID, src_inst->GetCharges()); + Log.Out(Logs::Detail, Logs::Inventory, "Src slot %d has item %s (%d) with %d charges in it.", src_slot_id, src_inst->GetItem()->Name, src_inst->GetItem()->ID, src_inst->GetCharges()); srcitemid = src_inst->GetItem()->ID; //SetTint(dst_slot_id,src_inst->GetColor()); if (src_inst->GetCharges() > 0 && (src_inst->GetCharges() < (int16)move_in->number_in_stack || move_in->number_in_stack > src_inst->GetItem()->StackSize)) @@ -1388,7 +1389,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { } } if (dst_inst) { - mlog(INVENTORY__SLOTS, "Dest slot %d has item %s (%d) with %d charges in it.", dst_slot_id, dst_inst->GetItem()->Name, dst_inst->GetItem()->ID, dst_inst->GetCharges()); + Log.Out(Logs::Detail, Logs::Inventory, "Dest slot %d has item %s (%d) with %d charges in it.", dst_slot_id, dst_inst->GetItem()->Name, dst_inst->GetItem()->ID, dst_inst->GetCharges()); dstitemid = dst_inst->GetItem()->ID; } if (Trader && srcitemid>0){ @@ -1425,7 +1426,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { move_in->from_slot = dst_slot_check; move_in->to_slot = src_slot_check; move_in->number_in_stack = dst_inst->GetCharges(); - if(!SwapItem(move_in)) { mlog(INVENTORY__ERROR, "Recursive SwapItem call failed due to non-existent destination item (charid: %i, fromslot: %i, toslot: %i)", CharacterID(), src_slot_id, dst_slot_id); } + if(!SwapItem(move_in)) { Log.Out(Logs::Detail, Logs::Inventory, "Recursive SwapItem call failed due to non-existent destination item (charid: %i, fromslot: %i, toslot: %i)", CharacterID(), src_slot_id, dst_slot_id); } } return false; @@ -1433,7 +1434,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { //verify shared bank transactions in the database if(src_inst && src_slot_id >= EmuConstants::SHARED_BANK_BEGIN && src_slot_id <= EmuConstants::SHARED_BANK_BAGS_END) { if(!database.VerifyInventory(account_id, src_slot_id, src_inst)) { - LogFile->write(EQEmuLog::Error, "Player %s on account %s was found exploiting the shared bank.\n", GetName(), account_name); + Log.Out(Logs::General, Logs::Error, "Player %s on account %s was found exploiting the shared bank.\n", GetName(), account_name); DeleteItemInInventory(dst_slot_id,0,true); return(false); } @@ -1448,7 +1449,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { } if(dst_inst && dst_slot_id >= EmuConstants::SHARED_BANK_BEGIN && dst_slot_id <= EmuConstants::SHARED_BANK_BAGS_END) { if(!database.VerifyInventory(account_id, dst_slot_id, dst_inst)) { - LogFile->write(EQEmuLog::Error, "Player %s on account %s was found exploting the shared bank.\n", GetName(), account_name); + Log.Out(Logs::General, Logs::Error, "Player %s on account %s was found exploting the shared bank.\n", GetName(), account_name); DeleteItemInInventory(src_slot_id,0,true); return(false); } @@ -1567,7 +1568,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { return false; } if (with) { - mlog(INVENTORY__SLOTS, "Trade item move from slot %d to slot %d (trade with %s)", src_slot_id, dst_slot_id, with->GetName()); + Log.Out(Logs::Detail, Logs::Inventory, "Trade item move from slot %d to slot %d (trade with %s)", src_slot_id, dst_slot_id, with->GetName()); // Fill Trade list with items from cursor if (!m_inv[MainCursor]) { Message(13, "Error: Cursor item not located on server!"); @@ -1600,18 +1601,18 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { if (move_in->number_in_stack > 0) { // Determine if charged items can stack if(src_inst && !src_inst->IsStackable()) { - mlog(INVENTORY__ERROR, "Move from %d to %d with stack size %d. %s is not a stackable item. (charname: %s)", src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetItem()->Name, GetName()); + Log.Out(Logs::Detail, Logs::Inventory, "Move from %d to %d with stack size %d. %s is not a stackable item. (charname: %s)", src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetItem()->Name, GetName()); return false; } if (dst_inst) { if(src_inst->GetID() != dst_inst->GetID()) { - mlog(INVENTORY__ERROR, "Move from %d to %d with stack size %d. Incompatible item types: %d != %d", src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetID(), dst_inst->GetID()); + Log.Out(Logs::Detail, Logs::Inventory, "Move from %d to %d with stack size %d. Incompatible item types: %d != %d", src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetID(), dst_inst->GetID()); return(false); } if(dst_inst->GetCharges() < dst_inst->GetItem()->StackSize) { //we have a chance of stacking. - mlog(INVENTORY__SLOTS, "Move from %d to %d with stack size %d. dest has %d/%d charges", src_slot_id, dst_slot_id, move_in->number_in_stack, dst_inst->GetCharges(), dst_inst->GetItem()->StackSize); + Log.Out(Logs::Detail, Logs::Inventory, "Move from %d to %d with stack size %d. dest has %d/%d charges", src_slot_id, dst_slot_id, move_in->number_in_stack, dst_inst->GetCharges(), dst_inst->GetItem()->StackSize); // Charges can be emptied into dst uint16 usedcharges = dst_inst->GetItem()->StackSize - dst_inst->GetCharges(); if (usedcharges > move_in->number_in_stack) @@ -1623,15 +1624,15 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { // Depleted all charges? if (src_inst->GetCharges() < 1) { - mlog(INVENTORY__SLOTS, "Dest (%d) now has %d charges, source (%d) was entirely consumed. (%d moved)", dst_slot_id, dst_inst->GetCharges(), src_slot_id, usedcharges); + Log.Out(Logs::Detail, Logs::Inventory, "Dest (%d) now has %d charges, source (%d) was entirely consumed. (%d moved)", dst_slot_id, dst_inst->GetCharges(), src_slot_id, usedcharges); database.SaveInventory(CharacterID(),nullptr,src_slot_id); m_inv.DeleteItem(src_slot_id); all_to_stack = true; } else { - mlog(INVENTORY__SLOTS, "Dest (%d) now has %d charges, source (%d) has %d (%d moved)", dst_slot_id, dst_inst->GetCharges(), src_slot_id, src_inst->GetCharges(), usedcharges); + Log.Out(Logs::Detail, Logs::Inventory, "Dest (%d) now has %d charges, source (%d) has %d (%d moved)", dst_slot_id, dst_inst->GetCharges(), src_slot_id, src_inst->GetCharges(), usedcharges); } } else { - mlog(INVENTORY__ERROR, "Move from %d to %d with stack size %d. Exceeds dest maximum stack size: %d/%d", src_slot_id, dst_slot_id, move_in->number_in_stack, (src_inst->GetCharges()+dst_inst->GetCharges()), dst_inst->GetItem()->StackSize); + Log.Out(Logs::Detail, Logs::Inventory, "Move from %d to %d with stack size %d. Exceeds dest maximum stack size: %d/%d", src_slot_id, dst_slot_id, move_in->number_in_stack, (src_inst->GetCharges()+dst_inst->GetCharges()), dst_inst->GetItem()->StackSize); return false; } } @@ -1640,12 +1641,12 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { if ((int16)move_in->number_in_stack >= src_inst->GetCharges()) { // Move entire stack if(!m_inv.SwapItem(src_slot_id, dst_slot_id)) { return false; } - mlog(INVENTORY__SLOTS, "Move entire stack from %d to %d with stack size %d. Dest empty.", src_slot_id, dst_slot_id, move_in->number_in_stack); + Log.Out(Logs::Detail, Logs::Inventory, "Move entire stack from %d to %d with stack size %d. Dest empty.", src_slot_id, dst_slot_id, move_in->number_in_stack); } else { // Split into two src_inst->SetCharges(src_inst->GetCharges() - move_in->number_in_stack); - mlog(INVENTORY__SLOTS, "Split stack of %s (%d) from slot %d to %d with stack size %d. Src keeps %d.", src_inst->GetItem()->Name, src_inst->GetItem()->ID, src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetCharges()); + Log.Out(Logs::Detail, Logs::Inventory, "Split stack of %s (%d) from slot %d to %d with stack size %d. Src keeps %d.", src_inst->GetItem()->Name, src_inst->GetItem()->ID, src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetCharges()); ItemInst* inst = database.CreateItem(src_inst->GetItem(), move_in->number_in_stack); m_inv.PutItem(dst_slot_id, *inst); safe_delete(inst); @@ -1670,7 +1671,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { SetMaterial(dst_slot_id,src_inst->GetItem()->ID); } if(!m_inv.SwapItem(src_slot_id, dst_slot_id)) { return false; } - mlog(INVENTORY__SLOTS, "Moving entire item from slot %d to slot %d", src_slot_id, dst_slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Moving entire item from slot %d to slot %d", src_slot_id, dst_slot_id); if(src_slot_id <= EmuConstants::EQUIPMENT_END || src_slot_id == MainPowerSource) { if(src_inst) { @@ -1733,7 +1734,7 @@ void Client::SwapItemResync(MoveItem_Struct* move_slots) { // resync the 'from' and 'to' slots on an as-needed basis // Not as effective as the full process, but less intrusive to gameplay -U - mlog(INVENTORY__ERROR, "Inventory desyncronization. (charname: %s, source: %i, destination: %i)", GetName(), move_slots->from_slot, move_slots->to_slot); + Log.Out(Logs::Detail, Logs::Inventory, "Inventory desyncronization. (charname: %s, source: %i, destination: %i)", GetName(), move_slots->from_slot, move_slots->to_slot); Message(15, "Inventory Desyncronization detected: Resending slot data..."); if((move_slots->from_slot >= EmuConstants::EQUIPMENT_BEGIN && move_slots->from_slot <= EmuConstants::CURSOR_BAG_END) || move_slots->from_slot == MainPowerSource) { @@ -2066,7 +2067,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::EQUIPMENT_BEGIN; slot_id <= EmuConstants::EQUIPMENT_END; ++slot_id) { auto inst = m_inv[slot_id]; if(inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, client_update); } } @@ -2074,7 +2075,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::GENERAL_BEGIN; slot_id <= EmuConstants::GENERAL_END; ++slot_id) { auto inst = m_inv[slot_id]; if (inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, client_update); } } @@ -2082,7 +2083,7 @@ void Client::RemoveNoRent(bool client_update) if (m_inv[MainPowerSource]) { auto inst = m_inv[MainPowerSource]; if (inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, MainPowerSource); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, MainPowerSource); DeleteItemInInventory(MainPowerSource, 0, (GetClientVersion() >= ClientVersion::SoF) ? client_update : false); // Ti slot non-existent } } @@ -2090,7 +2091,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::GENERAL_BAGS_BEGIN; slot_id <= EmuConstants::CURSOR_BAG_END; ++slot_id) { auto inst = m_inv[slot_id]; if(inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, client_update); } } @@ -2098,7 +2099,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::BANK_BEGIN; slot_id <= EmuConstants::BANK_END; ++slot_id) { auto inst = m_inv[slot_id]; if(inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, false); // Can't delete from client Bank slots } } @@ -2106,7 +2107,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::BANK_BAGS_BEGIN; slot_id <= EmuConstants::BANK_BAGS_END; ++slot_id) { auto inst = m_inv[slot_id]; if(inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, false); // Can't delete from client Bank Container slots } } @@ -2114,7 +2115,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::SHARED_BANK_BEGIN; slot_id <= EmuConstants::SHARED_BANK_END; ++slot_id) { auto inst = m_inv[slot_id]; if(inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, false); // Can't delete from client Shared Bank slots } } @@ -2122,7 +2123,7 @@ void Client::RemoveNoRent(bool client_update) for (auto slot_id = EmuConstants::SHARED_BANK_BAGS_BEGIN; slot_id <= EmuConstants::SHARED_BANK_BAGS_END; ++slot_id) { auto inst = m_inv[slot_id]; if(inst && !inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); DeleteItemInInventory(slot_id, 0, false); // Can't delete from client Shared Bank Container slots } } @@ -2140,7 +2141,7 @@ void Client::RemoveNoRent(bool client_update) auto inst = *iter; if (inst == nullptr) { continue; } if (!inst->GetItem()->NoRent) { - mlog(INVENTORY__SLOTS, "NoRent Timer Lapse: Deleting %s from `Limbo`", inst->GetItem()->Name); + Log.Out(Logs::Detail, Logs::Inventory, "NoRent Timer Lapse: Deleting %s from `Limbo`", inst->GetItem()->Name); } else { m_inv.PushCursor(*inst); @@ -2161,7 +2162,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = m_inv.PopItem(slot_id); if (inst == nullptr) { continue; } if(CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); database.SaveInventory(character_id, nullptr, slot_id); } else { @@ -2174,7 +2175,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = m_inv.PopItem(slot_id); if (inst == nullptr) { continue; } if (CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); database.SaveInventory(character_id, nullptr, slot_id); } else { @@ -2187,7 +2188,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = m_inv.PopItem(MainPowerSource); if (inst) { if (CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, MainPowerSource); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, MainPowerSource); database.SaveInventory(character_id, nullptr, MainPowerSource); } else { @@ -2201,7 +2202,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = m_inv.PopItem(slot_id); if (inst == nullptr) { continue; } if(CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); database.SaveInventory(character_id, nullptr, slot_id); } else { @@ -2214,7 +2215,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = m_inv.PopItem(slot_id); if (inst == nullptr) { continue; } if(CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); database.SaveInventory(character_id, nullptr, slot_id); } else { @@ -2227,7 +2228,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = m_inv.PopItem(slot_id); if (inst == nullptr) { continue; } if(CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from slot %i", inst->GetItem()->Name, slot_id); database.SaveInventory(character_id, nullptr, slot_id); } else { @@ -2252,7 +2253,7 @@ void Client::RemoveDuplicateLore(bool client_update) auto inst = *iter; if (inst == nullptr) { continue; } if (CheckLoreConflict(inst->GetItem())) { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from `Limbo`", inst->GetItem()->Name); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from `Limbo`", inst->GetItem()->Name); safe_delete(inst); } else { @@ -2271,7 +2272,7 @@ void Client::RemoveDuplicateLore(bool client_update) m_inv.PushCursor(*inst); } else { - mlog(INVENTORY__ERROR, "Lore Duplication Error: Deleting %s from `Limbo`", inst->GetItem()->Name); + Log.Out(Logs::Detail, Logs::Inventory, "Lore Duplication Error: Deleting %s from `Limbo`", inst->GetItem()->Name); } safe_delete(inst); } @@ -2289,7 +2290,7 @@ void Client::MoveSlotNotAllowed(bool client_update) auto inst = m_inv.PopItem(slot_id); bool is_arrow = (inst->GetItem()->ItemType == ItemTypeArrow) ? true : false; int16 free_slot_id = m_inv.FindFreeSlot(inst->IsType(ItemClassContainer), true, inst->GetItem()->Size, is_arrow); - mlog(INVENTORY__ERROR, "Slot Assignment Error: Moving %s from slot %i to %i", inst->GetItem()->Name, slot_id, free_slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Slot Assignment Error: Moving %s from slot %i to %i", inst->GetItem()->Name, slot_id, free_slot_id); PutItemInInventory(free_slot_id, *inst, client_update); database.SaveInventory(character_id, nullptr, slot_id); safe_delete(inst); @@ -2300,7 +2301,7 @@ void Client::MoveSlotNotAllowed(bool client_update) auto inst = m_inv.PopItem(MainPowerSource); bool is_arrow = (inst->GetItem()->ItemType == ItemTypeArrow) ? true : false; int16 free_slot_id = m_inv.FindFreeSlot(inst->IsType(ItemClassContainer), true, inst->GetItem()->Size, is_arrow); - mlog(INVENTORY__ERROR, "Slot Assignment Error: Moving %s from slot %i to %i", inst->GetItem()->Name, MainPowerSource, free_slot_id); + Log.Out(Logs::Detail, Logs::Inventory, "Slot Assignment Error: Moving %s from slot %i to %i", inst->GetItem()->Name, MainPowerSource, free_slot_id); PutItemInInventory(free_slot_id, *inst, (GetClientVersion() >= ClientVersion::SoF) ? client_update : false); database.SaveInventory(character_id, nullptr, MainPowerSource); safe_delete(inst); @@ -2436,7 +2437,7 @@ void Client::CreateBandolier(const EQApplicationPacket *app) { BandolierCreate_Struct *bs = (BandolierCreate_Struct*)app->pBuffer; - _log(INVENTORY__BANDOLIER, "Char: %s Creating Bandolier Set %i, Set Name: %s", GetName(), bs->number, bs->name); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s Creating Bandolier Set %i, Set Name: %s", GetName(), bs->number, bs->name); strcpy(m_pp.bandoliers[bs->number].name, bs->name); const ItemInst* InvItem = nullptr; @@ -2448,13 +2449,13 @@ void Client::CreateBandolier(const EQApplicationPacket *app) { InvItem = GetInv()[WeaponSlot]; if(InvItem) { BaseItem = InvItem->GetItem(); - _log(INVENTORY__BANDOLIER, "Char: %s adding item %s to slot %i", GetName(),BaseItem->Name, WeaponSlot); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s adding item %s to slot %i", GetName(),BaseItem->Name, WeaponSlot); m_pp.bandoliers[bs->number].items[BandolierSlot].item_id = BaseItem->ID; m_pp.bandoliers[bs->number].items[BandolierSlot].icon = BaseItem->Icon; database.SaveCharacterBandolier(this->CharacterID(), bs->number, BandolierSlot, m_pp.bandoliers[bs->number].items[BandolierSlot].item_id, m_pp.bandoliers[bs->number].items[BandolierSlot].icon, bs->name); } else { - _log(INVENTORY__BANDOLIER, "Char: %s no item in slot %i", GetName(), WeaponSlot); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s no item in slot %i", GetName(), WeaponSlot); m_pp.bandoliers[bs->number].items[BandolierSlot].item_id = 0; m_pp.bandoliers[bs->number].items[BandolierSlot].icon = 0; } @@ -2463,7 +2464,7 @@ void Client::CreateBandolier(const EQApplicationPacket *app) { void Client::RemoveBandolier(const EQApplicationPacket *app) { BandolierDelete_Struct *bds = (BandolierDelete_Struct*)app->pBuffer; - _log(INVENTORY__BANDOLIER, "Char: %s removing set", GetName(), bds->number); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s removing set", GetName(), bds->number); memset(m_pp.bandoliers[bds->number].name, 0, 32); for(int i = bandolierMainHand; i <= bandolierAmmo; i++) { m_pp.bandoliers[bds->number].items[i].item_id = 0; @@ -2478,7 +2479,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) { // any items currently in the weapon slots to inventory. BandolierSet_Struct *bss = (BandolierSet_Struct*)app->pBuffer; - _log(INVENTORY__BANDOLIER, "Char: %s activating set %i", GetName(), bss->number); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s activating set %i", GetName(), bss->number); int16 slot; int16 WeaponSlot; ItemInst *BandolierItems[4]; // Temporary holding area for the weapons we pull out of their inventory @@ -2545,16 +2546,19 @@ void Client::SetBandolier(const EQApplicationPacket *app) { else { // The player doesn't have the required weapon with them. BandolierItems[BandolierSlot] = 0; if (slot == INVALID_INDEX) { - _log(INVENTORY__BANDOLIER, "Character does not have required bandolier item for slot %i", WeaponSlot); + Log.Out(Logs::Detail, Logs::Inventory, "Character does not have required bandolier item for slot %i", WeaponSlot); ItemInst *InvItem = m_inv.PopItem(WeaponSlot); if(InvItem) { // If there was an item in that weapon slot, put it in the inventory - _log(INVENTORY__BANDOLIER, "returning item %s in weapon slot %i to inventory", InvItem->GetItem()->Name, WeaponSlot); + Log.Out(Logs::Detail, Logs::Inventory, "returning item %s in weapon slot %i to inventory", + InvItem->GetItem()->Name, WeaponSlot); + Log.Out(Logs::Detail, Logs::Inventory, "returning item %s in weapon slot %i to inventory", InvItem->GetItem()->Name, WeaponSlot); if (MoveItemToInventory(InvItem)) { database.SaveInventory(character_id, 0, WeaponSlot); + Log.Out(Logs::General, Logs::Error, "returning item %s in weapon slot %i to inventory", InvItem->GetItem()->Name, WeaponSlot); } else { - _log(INVENTORY__BANDOLIER, "Char: %s, ERROR returning %s to inventory", GetName(), InvItem->GetItem()->Name); + Log.Out(Logs::General, Logs::Error, "Char: %s, ERROR returning %s to inventory", GetName(), InvItem->GetItem()->Name); } safe_delete(InvItem); } @@ -2588,7 +2592,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) { if(InvItem) { // If there was already an item in that weapon slot that we replaced, find a place to put it if (!MoveItemToInventory(InvItem)) { - _log(INVENTORY__BANDOLIER, "Char: %s, ERROR returning %s to inventory", GetName(), InvItem->GetItem()->Name); + Log.Out(Logs::General, Logs::Error, "Char: %s, ERROR returning %s to inventory", GetName(), InvItem->GetItem()->Name); } safe_delete(InvItem); } @@ -2599,13 +2603,13 @@ void Client::SetBandolier(const EQApplicationPacket *app) { // put it in the player's inventory. ItemInst *InvItem = m_inv.PopItem(WeaponSlot); if(InvItem) { - _log(INVENTORY__BANDOLIER, "Bandolier has no item for slot %i, returning item %s to inventory", WeaponSlot, InvItem->GetItem()->Name); + Log.Out(Logs::Detail, Logs::Inventory, "Bandolier has no item for slot %i, returning item %s to inventory", WeaponSlot, InvItem->GetItem()->Name); // If there was an item in that weapon slot, put it in the inventory if (MoveItemToInventory(InvItem)) { database.SaveInventory(character_id, 0, WeaponSlot); } else { - _log(INVENTORY__BANDOLIER, "Char: %s, ERROR returning %s to inventory", GetName(), InvItem->GetItem()->Name); + Log.Out(Logs::General, Logs::Error, "Char: %s, ERROR returning %s to inventory", GetName(), InvItem->GetItem()->Name); } safe_delete(InvItem); } @@ -2638,7 +2642,7 @@ bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { return false; } - _log(INVENTORY__SLOTS,"Char: %s Returning %s to inventory", GetName(), ItemToReturn->GetItem()->Name); + Log.Out(Logs::Detail, Logs::Inventory,"Char: %s Returning %s to inventory", GetName(), ItemToReturn->GetItem()->Name); uint32 ItemID = ItemToReturn->GetItem()->ID; @@ -2718,7 +2722,7 @@ bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { database.SaveInventory(character_id, m_inv.GetItem(i), i); - _log(INVENTORY__SLOTS, "Char: %s Storing in main inventory slot %i", GetName(), i); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s Storing in main inventory slot %i", GetName(), i); return true; } @@ -2741,7 +2745,7 @@ bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { database.SaveInventory(character_id, m_inv.GetItem(BaseSlotID + BagSlot), BaseSlotID + BagSlot); - _log(INVENTORY__SLOTS, "Char: %s Storing in bag slot %i", GetName(), BaseSlotID + BagSlot); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s Storing in bag slot %i", GetName(), BaseSlotID + BagSlot); return true; } @@ -2751,7 +2755,7 @@ bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { // Store on the cursor // - _log(INVENTORY__SLOTS, "Char: %s No space, putting on the cursor", GetName()); + Log.Out(Logs::Detail, Logs::Inventory, "Char: %s No space, putting on the cursor", GetName()); PushItemOnCursor(*ItemToReturn, UpdateClient); @@ -2822,7 +2826,7 @@ bool Client::InterrogateInventory(Client* requester, bool log, bool silent, bool log = true; if (log) { - _log(INVENTORY__ERROR, "Client::InterrogateInventory() called for %s by %s with an error state of %s", GetName(), requester->GetName(), (error ? "TRUE" : "FALSE")); + Log.Out(Logs::General, Logs::Error, "Client::InterrogateInventory() called for %s by %s with an error state of %s", GetName(), requester->GetName(), (error ? "TRUE" : "FALSE")); } if (!silent) { requester->Message(1, "--- Inventory Interrogation Report for %s (requested by: %s, error state: %s) ---", GetName(), requester->GetName(), (error ? "TRUE" : "FALSE")); @@ -2843,8 +2847,8 @@ bool Client::InterrogateInventory(Client* requester, bool log, bool silent, bool } if (log) { - _log(INVENTORY__ERROR, "Target interrogate inventory flag: %s", (GetInterrogateInvState() ? "TRUE" : "FALSE")); - _log(INVENTORY__ERROR, "Client::InterrogateInventory() -- End"); + Log.Out(Logs::General, Logs::Error, "Target interrogate inventory flag: %s", (GetInterrogateInvState() ? "TRUE" : "FALSE")); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Client::InterrogateInventory() -- End"); } if (!silent) { requester->Message(1, "Target interrogation flag: %s", (GetInterrogateInvState() ? "TRUE" : "FALSE")); @@ -2859,7 +2863,7 @@ bool Client::InterrogateInventory(Client* requester, bool log, bool silent, bool void Client::InterrogateInventory_(bool errorcheck, Client* requester, int16 head, int16 index, const ItemInst* inst, const ItemInst* parent, bool log, bool silent, bool &error, int depth) { if (depth >= 10) { - _log(INVENTORY__ERROR, "Client::InterrogateInventory_() - Recursion count has exceeded the maximum allowable (You have a REALLY BIG PROBLEM!!)"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Client::InterrogateInventory_() - Recursion count has exceeded the maximum allowable (You have a REALLY BIG PROBLEM!!)"); return; } @@ -2890,7 +2894,7 @@ void Client::InterrogateInventory_(bool errorcheck, Client* requester, int16 hea else { e = ""; } if (log) { - _log(INVENTORY__ERROR, "Head: %i, Depth: %i, Instance: %s, Parent: %s%s", + Log.Out(Logs::General, Logs::Error, "Head: %i, Depth: %i, Instance: %s, Parent: %s%s", head, depth, i.c_str(), p.c_str(), e.c_str()); } if (!silent) { diff --git a/zone/loottables.cpp b/zone/loottables.cpp index f652cdbe0..39caafcea 100644 --- a/zone/loottables.cpp +++ b/zone/loottables.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/loottable.h" #include "../common/misc_functions.h" @@ -145,7 +145,7 @@ void ZoneDatabase::AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* iteml drop_chance = zone->random.Real(0.0, 100.0); #if EQDEBUG>=11 - LogFile->write(EQEmuLog::Debug, "Drop chance for npc: %s, this chance:%f, drop roll:%f", npc->GetName(), thischance, drop_chance); + Log.Out(Logs::General, Logs::None, "Drop chance for npc: %s, this chance:%f, drop roll:%f", npc->GetName(), thischance, drop_chance); #endif if (thischance == 100.0 || drop_chance < thischance) { @@ -187,7 +187,7 @@ void NPC::AddLootDrop(const Item_Struct *item2, ItemList* itemlist, int16 charge ServerLootItem_Struct* item = new ServerLootItem_Struct; #if EQDEBUG>=11 - LogFile->write(EQEmuLog::Debug, "Adding drop to npc: %s, Item: %i", GetName(), item2->ID); + Log.Out(Logs::General, Logs::None, "Adding drop to npc: %s, Item: %i", GetName(), item2->ID); #endif EQApplicationPacket* outapp = nullptr; diff --git a/zone/map.cpp b/zone/map.cpp index 5c917b955..941292acd 100644 --- a/zone/map.cpp +++ b/zone/map.cpp @@ -1,4 +1,4 @@ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/misc_functions.h" #include "map.h" diff --git a/zone/merc.cpp b/zone/merc.cpp index 187a23370..ef8d0ed22 100644 --- a/zone/merc.cpp +++ b/zone/merc.cpp @@ -6,6 +6,7 @@ #include "groups.h" #include "mob.h" +#include "../common/eqemu_logsys.h" #include "../common/eq_packet_structs.h" #include "../common/eq_constants.h" #include "../common/skills.h" @@ -884,7 +885,7 @@ int32 Merc::CalcMaxMana() break; } default: { - LogFile->write(EQEmuLog::Debug, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); + Log.Out(Logs::General, Logs::None, "Invalid Class '%c' in CalcMaxMana", GetCasterClass()); max_mana = 0; break; } @@ -905,7 +906,7 @@ int32 Merc::CalcMaxMana() } #if EQDEBUG >= 11 - LogFile->write(EQEmuLog::Debug, "Merc::CalcMaxMana() called for %s - returning %d", GetName(), max_mana); + Log.Out(Logs::General, Logs::None, "Merc::CalcMaxMana() called for %s - returning %d", GetName(), max_mana); #endif return max_mana; } @@ -1646,7 +1647,7 @@ void Merc::AI_Process() { if (AImovement_timer->Check()) { if(!IsRooted()) { - mlog(AI__WAYPOINTS, "Pursuing %s while engaged.", GetTarget()->GetCleanName()); + Log.Out(Logs::Detail, Logs::AI, "Pursuing %s while engaged.", GetTarget()->GetCleanName()); CalculateNewPosition2(GetTarget()->GetX(), GetTarget()->GetY(), GetTarget()->GetZ(), GetRunspeed()); return; } @@ -1765,7 +1766,7 @@ bool Merc::AI_EngagedCastCheck() { { AIautocastspell_timer->Disable(); //prevent the timer from going off AGAIN while we are casting. - mlog(AI__SPELLS, "Engaged autocast check triggered (MERCS)."); + Log.Out(Logs::Detail, Logs::AI, "Engaged autocast check triggered (MERCS)."); int8 mercClass = GetClass(); @@ -1872,7 +1873,7 @@ bool EntityList::Merc_AICheckCloseBeneficialSpells(Merc* caster, uint8 iChance, // according to Rogean, Live NPCs will just cast through walls/floors, no problem.. // // This check was put in to address an idle-mob CPU issue - _log(AI__ERROR, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); + Log.Out(Logs::General, Logs::Error, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); return(false); } @@ -4450,7 +4451,7 @@ bool Merc::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, boo { if (!other) { SetTarget(nullptr); - LogFile->write(EQEmuLog::Error, "A null Mob object was passed to Merc::Attack() for evaluation!"); + Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Merc::Attack() for evaluation!"); return false; } @@ -4925,7 +4926,6 @@ bool Merc::Spawn(Client *owner) { //UpdateMercAppearance(); - //printf("Spawned Merc with ID %i\n", npc->GetID()); fflush(stdout); return true; } @@ -5985,7 +5985,7 @@ void NPC::LoadMercTypes() { auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in NPC::LoadMercTypes()"); + Log.Out(Logs::General, Logs::Error, "Error in NPC::LoadMercTypes()"); return; } @@ -6018,7 +6018,7 @@ void NPC::LoadMercs() { if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in NPC::LoadMercTypes()"); + Log.Out(Logs::General, Logs::Error, "Error in NPC::LoadMercTypes()"); return; } diff --git a/zone/mob.cpp b/zone/mob.cpp index b6644a4aa..2c3b6383b 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -1545,7 +1545,7 @@ void Mob::SendIllusionPacket(uint16 in_race, uint8 in_gender, uint8 in_texture, entity_list.QueueClients(this, outapp); safe_delete(outapp); - mlog(CLIENT__SPELLS, "Illusion: Race = %i, Gender = %i, Texture = %i, HelmTexture = %i, HairColor = %i, BeardColor = %i, EyeColor1 = %i, EyeColor2 = %i, HairStyle = %i, Face = %i, DrakkinHeritage = %i, DrakkinTattoo = %i, DrakkinDetails = %i, Size = %f", + Log.Out(Logs::Detail, Logs::Spells, "Illusion: Race = %i, Gender = %i, Texture = %i, HelmTexture = %i, HairColor = %i, BeardColor = %i, EyeColor1 = %i, EyeColor2 = %i, HairStyle = %i, Face = %i, DrakkinHeritage = %i, DrakkinTattoo = %i, DrakkinDetails = %i, Size = %f", race, gender, texture, helmtexture, haircolor, beardcolor, eyecolor1, eyecolor2, hairstyle, luclinface, drakkin_heritage, drakkin_tattoo, drakkin_details, size); } @@ -1764,7 +1764,6 @@ bool Mob::IsPlayerRace(uint16 in_race) { uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) { -//std::cout << "Gender in: " << (int)in_gender << std::endl; // undefined cout [CODEBUG] if (Mob::IsPlayerRace(in_race) || in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98 || in_race == 118) { if (in_gender >= 2) { // Male default for PC Races @@ -2880,7 +2879,6 @@ int16 Mob::GetResist(uint8 type) const uint32 Mob::GetLevelHP(uint8 tlevel) { - //std::cout<<"Tlevel: "<<(int)tlevel<GetName(), spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Player %s, Weapon Procced invalid spell %u", this->GetName(), spell_id); } return; } @@ -4436,7 +4434,7 @@ void Mob::MeleeLifeTap(int32 damage) { if(lifetap_amt && damage > 0){ lifetap_amt = damage * lifetap_amt / 100; - mlog(COMBAT__DAMAGE, "Melee lifetap healing for %d damage.", damage); + Log.Out(Logs::Detail, Logs::Combat, "Melee lifetap healing for %d damage.", damage); if (lifetap_amt > 0) HealDamage(lifetap_amt); //Heal self for modified damage amount. diff --git a/zone/mob.h b/zone/mob.h index 09c9bf56f..6cf8cdb14 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -528,12 +528,6 @@ public: bool HasProcs() const; bool IsCombatProc(uint16 spell_id); - //Logging - bool IsLoggingEnabled() const { return(logging_enabled); } - void EnableLogging() { logging_enabled = true; } - void DisableLogging() { logging_enabled = false; } - - //More stuff to sort: virtual bool IsRaidTarget() const { return false; }; virtual bool IsAttackAllowed(Mob *target, bool isSpellAttack = false); diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 3902ee072..85ac74518 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/features.h" #include "../common/rulesys.h" #include "../common/string_util.h" @@ -355,7 +355,7 @@ bool EntityList::AICheckCloseBeneficialSpells(NPC* caster, uint8 iChance, float // according to Rogean, Live NPCs will just cast through walls/floors, no problem.. // // This check was put in to address an idle-mob CPU issue - _log(AI__ERROR, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); + Log.Out(Logs::General, Logs::Error, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); return(false); } @@ -1403,7 +1403,7 @@ void Mob::AI_Process() { else if (AImovement_timer->Check()) { if(!IsRooted()) { - mlog(AI__WAYPOINTS, "Pursuing %s while engaged.", target->GetName()); + Log.Out(Logs::Detail, Logs::AI, "Pursuing %s while engaged.", target->GetName()); if(!RuleB(Pathing, Aggro) || !zone->pathing) CalculateNewPosition2(target->GetX(), target->GetY(), target->GetZ(), GetRunspeed()); else @@ -1638,7 +1638,7 @@ void NPC::AI_DoMovement() { roambox_movingto_y = zone->random.Real(roambox_min_y+1,roambox_max_y-1); } - mlog(AI__WAYPOINTS, "Roam Box: d=%.3f (%.3f->%.3f,%.3f->%.3f): Go To (%.3f,%.3f)", + Log.Out(Logs::Detail, Logs::AI, "Roam Box: d=%.3f (%.3f->%.3f,%.3f->%.3f): Go To (%.3f,%.3f)", roambox_distance, roambox_min_x, roambox_max_x, roambox_min_y, roambox_max_y, roambox_movingto_x, roambox_movingto_y); if (!CalculateNewPosition2(roambox_movingto_x, roambox_movingto_y, GetZ(), walksp, true)) { @@ -1691,11 +1691,11 @@ void NPC::AI_DoMovement() { else { movetimercompleted=false; - mlog(QUESTS__PATHING, "We are departing waypoint %d.", cur_wp); + Log.Out(Logs::Detail, Logs::Pathing, "We are departing waypoint %d.", cur_wp); //if we were under quest control (with no grid), we are done now.. if(cur_wp == -2) { - mlog(QUESTS__PATHING, "Non-grid quest mob has reached its quest ordered waypoint. Leaving pathing mode."); + Log.Out(Logs::Detail, Logs::Pathing, "Non-grid quest mob has reached its quest ordered waypoint. Leaving pathing mode."); roamer = false; cur_wp = 0; } @@ -1726,7 +1726,7 @@ void NPC::AI_DoMovement() { { // currently moving if (m_CurrentWayPoint.m_X == GetX() && m_CurrentWayPoint.m_Y == GetY()) { // are we there yet? then stop - mlog(AI__WAYPOINTS, "We have reached waypoint %d (%.3f,%.3f,%.3f) on grid %d", cur_wp, GetX(), GetY(), GetZ(), GetGrid()); + Log.Out(Logs::Detail, Logs::AI, "We have reached waypoint %d (%.3f,%.3f,%.3f) on grid %d", cur_wp, GetX(), GetY(), GetZ(), GetGrid()); SetWaypointPause(); if(GetAppearance() != eaStanding) SetAppearance(eaStanding, false); @@ -1772,7 +1772,7 @@ void NPC::AI_DoMovement() { if (movetimercompleted==true) { // time to pause has ended SetGrid( 0 - GetGrid()); // revert to AI control - mlog(QUESTS__PATHING, "Quest pathing is finished. Resuming on grid %d", GetGrid()); + Log.Out(Logs::Detail, Logs::Pathing, "Quest pathing is finished. Resuming on grid %d", GetGrid()); if(GetAppearance() != eaStanding) SetAppearance(eaStanding, false); @@ -1808,7 +1808,7 @@ void NPC::AI_DoMovement() { if (!CP2Moved) { if(moved) { - mlog(AI__WAYPOINTS, "Reached guard point (%.3f,%.3f,%.3f)", m_GuardPoint.m_X, m_GuardPoint.m_Y, m_GuardPoint.m_Z); + Log.Out(Logs::Detail, Logs::AI, "Reached guard point (%.3f,%.3f,%.3f)", m_GuardPoint.m_X, m_GuardPoint.m_Y, m_GuardPoint.m_Z); ClearFeignMemory(); moved=false; SetMoving(false); @@ -1933,7 +1933,7 @@ bool NPC::AI_EngagedCastCheck() { if (AIautocastspell_timer->Check(false)) { AIautocastspell_timer->Disable(); //prevent the timer from going off AGAIN while we are casting. - mlog(AI__SPELLS, "Engaged autocast check triggered. Trying to cast healing spells then maybe offensive spells."); + Log.Out(Logs::Detail, Logs::AI, "Engaged autocast check triggered. Trying to cast healing spells then maybe offensive spells."); // try casting a heal or gate if (!AICastSpell(this, AISpellVar.engaged_beneficial_self_chance, SpellType_Heal | SpellType_Escape | SpellType_InCombatBuff)) { @@ -1956,7 +1956,7 @@ bool NPC::AI_PursueCastCheck() { if (AIautocastspell_timer->Check(false)) { AIautocastspell_timer->Disable(); //prevent the timer from going off AGAIN while we are casting. - mlog(AI__SPELLS, "Engaged (pursuing) autocast check triggered. Trying to cast offensive spells."); + Log.Out(Logs::Detail, Logs::AI, "Engaged (pursuing) autocast check triggered. Trying to cast offensive spells."); if(!AICastSpell(GetTarget(), AISpellVar.pursue_detrimental_chance, SpellType_Root | SpellType_Nuke | SpellType_Lifetap | SpellType_Snare | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Slow | SpellType_Debuff)) { //no spell cast, try again soon. AIautocastspell_timer->Start(RandomTimer(AISpellVar.pursue_no_sp_recast_min, AISpellVar.pursue_no_sp_recast_max), false); @@ -2679,7 +2679,6 @@ DBnpcspells_Struct* ZoneDatabase::GetNPCSpells(uint32 iDBSpellsID) { "idle_b_chance FROM npc_spells WHERE id=%d", iDBSpellsID); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in AddNPCSpells query1 '" << query << "' " << results.ErrorMessage() << std::endl; return nullptr; } @@ -2715,7 +2714,6 @@ DBnpcspells_Struct* ZoneDatabase::GetNPCSpells(uint32 iDBSpellsID) { if (!results.Success()) { - std::cerr << "Error in AddNPCSpells query1 '" << query << "' " << results.ErrorMessage() << std::endl; return nullptr; } @@ -2772,7 +2770,6 @@ uint32 ZoneDatabase::GetMaxNPCSpellsID() { std::string query = "SELECT max(id) from npc_spells"; auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetMaxNPCSpellsID query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2815,7 +2812,6 @@ DBnpcspellseffects_Struct* ZoneDatabase::GetNPCSpellsEffects(uint32 iDBSpellsEff std::string query = StringFormat("SELECT id, parent_list FROM npc_spells_effects WHERE id=%d", iDBSpellsEffectsID); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in AddNPCSpells query1 '" << query << "' " << results.ErrorMessage() << std::endl; return nullptr; } @@ -2859,7 +2855,6 @@ uint32 ZoneDatabase::GetMaxNPCSpellsEffectsID() { std::string query = "SELECT max(id) FROM npc_spells_effects"; auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetMaxNPCSpellsEffectsID query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } diff --git a/zone/net.cpp b/zone/net.cpp index 25c770f14..dd96f0e17 100644 --- a/zone/net.cpp +++ b/zone/net.cpp @@ -17,8 +17,9 @@ */ #define DONT_SHARED_OPCODES +#define PLATFORM_ZONE 1 -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/features.h" #include "../common/queue.h" #include "../common/timer.h" @@ -27,7 +28,7 @@ #include "../common/eq_packet_structs.h" #include "../common/mutex.h" #include "../common/version.h" -#include "../common/eqemu_error.h" + #include "../common/packet_dump_file.h" #include "../common/opcodemgr.h" #include "../common/guilds.h" @@ -42,6 +43,8 @@ #include "../common/memory_mapped_file.h" #include "../common/eqemu_exception.h" #include "../common/spdat.h" +#include "../common/eqemu_logsys.h" + #include "zone_config.h" #include "masterentity.h" @@ -58,7 +61,7 @@ #include "quest_parser_collection.h" #include "embparser.h" #include "lua_parser.h" -#include "client_logs.h" + #include "questmgr.h" #include @@ -69,6 +72,7 @@ #include #include #include +#include #ifdef _CRTDBG_MAP_ALLOC #undef new @@ -100,6 +104,7 @@ TitleManager title_manager; QueryServ *QServ = 0; TaskManager *taskmanager = 0; QuestParserCollection *parse = 0; +EQEmuLogSys Log; const SPDat_Spell_Struct* spells; void LoadSpells(EQEmu::MemoryMappedFile **mmf); @@ -109,11 +114,10 @@ void Shutdown(); extern void MapOpcodes(); int main(int argc, char** argv) { - RegisterExecutablePlatform(ExePlatformZone); - set_exception_handler(); - - const char *zone_name; - + RegisterExecutablePlatform(ExePlatformZone); + Log.LoadLogSettingsDefaults(); + set_exception_handler(); + const char *zone_name; QServ = new QueryServ; if(argc == 3) { @@ -142,144 +146,144 @@ int main(int argc, char** argv) { worldserver.SetLauncherName("NONE"); } - _log(ZONE__INIT, "Loading server configuration.."); + Log.Out(Logs::General, Logs::Zone_Server, "Loading server configuration.."); if (!ZoneConfig::LoadConfig()) { - _log(ZONE__INIT_ERR, "Loading server configuration failed."); + Log.Out(Logs::General, Logs::Error, "Loading server configuration failed."); return 1; } const ZoneConfig *Config=ZoneConfig::get(); - if(!load_log_settings(Config->LogSettingsFile.c_str())) - _log(ZONE__INIT, "Warning: Unable to read %s", Config->LogSettingsFile.c_str()); - else - _log(ZONE__INIT, "Log settings loaded from %s", Config->LogSettingsFile.c_str()); - worldserver.SetPassword(Config->SharedKey.c_str()); - _log(ZONE__INIT, "Connecting to MySQL..."); + Log.Out(Logs::General, Logs::Zone_Server, "Connecting to MySQL..."); if (!database.Connect( Config->DatabaseHost.c_str(), Config->DatabaseUsername.c_str(), Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) { - _log(ZONE__INIT_ERR, "Cannot continue without a database connection."); + Log.Out(Logs::General, Logs::Error, "Cannot continue without a database connection."); return 1; } - guild_mgr.SetDatabase(&database); + /* Register Log System and Settings */ + Log.OnLogHookCallBackZone(&Zone::GMSayHookCallBackProcess); + database.LoadLogSettings(Log.log_settings); + Log.StartFileLogs(); + + /* Guilds */ + guild_mgr.SetDatabase(&database); GuildBanks = nullptr; #ifdef _EQDEBUG _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); #endif - _log(ZONE__INIT, "CURRENT_VERSION: %s", CURRENT_VERSION); + Log.Out(Logs::General, Logs::Zone_Server, "CURRENT_VERSION: %s", CURRENT_VERSION); /* * Setup nice signal handlers */ if (signal(SIGINT, CatchSignal) == SIG_ERR) { - _log(ZONE__INIT_ERR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::Error, "Could not set signal handler"); return 1; } if (signal(SIGTERM, CatchSignal) == SIG_ERR) { - _log(ZONE__INIT_ERR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::Error, "Could not set signal handler"); return 1; } #ifndef WIN32 if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { - _log(ZONE__INIT_ERR, "Could not set signal handler"); + Log.Out(Logs::General, Logs::Error, "Could not set signal handler"); return 1; } #endif - const char *log_ini_file = "./log.ini"; - if(!load_log_settings(log_ini_file)) - _log(ZONE__INIT, "Warning: Unable to read %s", log_ini_file); - else - _log(ZONE__INIT, "Log settings loaded from %s", log_ini_file); - - _log(ZONE__INIT, "Mapping Incoming Opcodes"); + Log.Out(Logs::General, Logs::Zone_Server, "Mapping Incoming Opcodes"); MapOpcodes(); - _log(ZONE__INIT, "Loading Variables"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading Variables"); database.LoadVariables(); - _log(ZONE__INIT, "Loading zone names"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading zone names"); database.LoadZoneNames(); - _log(ZONE__INIT, "Loading items"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading items"); if (!database.LoadItems()) { - _log(ZONE__INIT_ERR, "Loading items FAILED!"); - _log(ZONE__INIT, "Failed. But ignoring error and going on..."); + Log.Out(Logs::General, Logs::Error, "Loading items FAILED!"); + Log.Out(Logs::General, Logs::Error, "Failed. But ignoring error and going on..."); } - _log(ZONE__INIT, "Loading npc faction lists"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading npc faction lists"); if (!database.LoadNPCFactionLists()) { - _log(ZONE__INIT_ERR, "Loading npcs faction lists FAILED!"); - CheckEQEMuErrorAndPause(); + Log.Out(Logs::General, Logs::Error, "Loading npcs faction lists FAILED!"); return 1; } - _log(ZONE__INIT, "Loading loot tables"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading loot tables"); if (!database.LoadLoot()) { - _log(ZONE__INIT_ERR, "Loading loot FAILED!"); - CheckEQEMuErrorAndPause(); + Log.Out(Logs::General, Logs::Error, "Loading loot FAILED!"); return 1; } - _log(ZONE__INIT, "Loading skill caps"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading skill caps"); if (!database.LoadSkillCaps()) { - _log(ZONE__INIT_ERR, "Loading skill caps FAILED!"); - CheckEQEMuErrorAndPause(); + Log.Out(Logs::General, Logs::Error, "Loading skill caps FAILED!"); return 1; } - _log(ZONE__INIT, "Loading spells"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading spells"); EQEmu::MemoryMappedFile *mmf = nullptr; LoadSpells(&mmf); - _log(ZONE__INIT, "Loading base data"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading base data"); if (!database.LoadBaseData()) { - _log(ZONE__INIT_ERR, "Loading base data FAILED!"); - CheckEQEMuErrorAndPause(); + Log.Out(Logs::General, Logs::Error, "Loading base data FAILED!"); return 1; } - _log(ZONE__INIT, "Loading guilds"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading guilds"); guild_mgr.LoadGuilds(); - _log(ZONE__INIT, "Loading factions"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading factions"); database.LoadFactionData(); - _log(ZONE__INIT, "Loading titles"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading titles"); title_manager.LoadTitles(); - _log(ZONE__INIT, "Loading AA effects"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading AA effects"); database.LoadAAEffects(); - _log(ZONE__INIT, "Loading tributes"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading tributes"); database.LoadTributes(); - _log(ZONE__INIT, "Loading corpse timers"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading corpse timers"); database.GetDecayTimes(npcCorpseDecayTimes); - _log(ZONE__INIT, "Loading commands"); + + Log.Out(Logs::General, Logs::Zone_Server, "Loading commands"); int retval=command_init(); if(retval<0) - _log(ZONE__INIT_ERR, "Command loading FAILED"); + Log.Out(Logs::General, Logs::Error, "Command loading FAILED"); else - _log(ZONE__INIT, "%d commands loaded", retval); + Log.Out(Logs::General, Logs::Zone_Server, "%d commands loaded", retval); //rules: { char tmp[64]; if (database.GetVariable("RuleSet", tmp, sizeof(tmp)-1)) { - _log(ZONE__INIT, "Loading rule set '%s'", tmp); + Log.Out(Logs::General, Logs::Zone_Server, "Loading rule set '%s'", tmp); if(!RuleManager::Instance()->LoadRules(&database, tmp)) { - _log(ZONE__INIT_ERR, "Failed to load ruleset '%s', falling back to defaults.", tmp); + Log.Out(Logs::General, Logs::Error, "Failed to load ruleset '%s', falling back to defaults.", tmp); } } else { if(!RuleManager::Instance()->LoadRules(&database, "default")) { - _log(ZONE__INIT, "No rule set configured, using default rules"); + Log.Out(Logs::General, Logs::Zone_Server, "No rule set configured, using default rules"); } else { - _log(ZONE__INIT, "Loaded default rule set 'default'", tmp); + Log.Out(Logs::General, Logs::Zone_Server, "Loaded default rule set 'default'", tmp); } } } if(RuleB(TaskSystem, EnableTaskSystem)) { - _log(ZONE__INIT, "Loading Tasks"); + Log.Out(Logs::General, Logs::Tasks, "[INIT] Loading Tasks"); taskmanager = new TaskManager; taskmanager->LoadTasks(); } @@ -296,17 +300,11 @@ int main(int argc, char** argv) { #endif //now we have our parser, load the quests - _log(ZONE__INIT, "Loading quests"); + Log.Out(Logs::General, Logs::Zone_Server, "Loading quests"); parse->ReloadQuests(); - -#ifdef CLIENT_LOGS - LogFile->SetAllCallbacks(ClientLogs::EQEmuIO_buf); - LogFile->SetAllCallbacks(ClientLogs::EQEmuIO_fmt); - LogFile->SetAllCallbacks(ClientLogs::EQEmuIO_pva); -#endif if (!worldserver.Connect()) { - _log(ZONE__INIT_ERR, "worldserver.Connect() FAILED!"); + Log.Out(Logs::General, Logs::Error, "Worldserver Connection Failed :: worldserver.Connect()"); } Timer InterserverTimer(INTERSERVER_TIMER); // does MySQL pings and auto-reconnect @@ -317,9 +315,9 @@ int main(int argc, char** argv) { #endif #endif if (!strlen(zone_name) || !strcmp(zone_name,".")) { - _log(ZONE__INIT, "Entering sleep mode"); + Log.Out(Logs::General, Logs::Zone_Server, "Entering sleep mode"); } else if (!Zone::Bootup(database.GetZoneID(zone_name), 0, true)) { //todo: go above and fix this to allow cmd line instance - _log(ZONE__INIT_ERR, "Zone bootup FAILED!"); + Log.Out(Logs::General, Logs::Error, "Zone Bootup failed :: Zone::Bootup"); zone = 0; } @@ -328,7 +326,7 @@ int main(int argc, char** argv) { RegisterAllPatches(stream_identifier); #ifndef WIN32 - _log(COMMON__THREADS, "Main thread running with thread id %d", pthread_self()); + Log.Out(Logs::Detail, Logs::None, "Main thread running with thread id %d", pthread_self()); #endif Timer quest_timers(100); @@ -346,13 +344,12 @@ int main(int argc, char** argv) { //Advance the timer to our current point in time Timer::SetCurrentTime(); - //process stuff from world worldserver.Process(); if (!eqsf.IsOpen() && Config->ZonePort!=0) { - _log(ZONE__INIT, "Starting EQ Network server on port %d",Config->ZonePort); + Log.Out(Logs::General, Logs::Zone_Server, "Starting EQ Network server on port %d",Config->ZonePort); if (!eqsf.Open(Config->ZonePort)) { - _log(ZONE__INIT_ERR, "Failed to open port %d",Config->ZonePort); + Log.Out(Logs::General, Logs::Error, "Failed to open port %d",Config->ZonePort); ZoneConfig::SetZonePort(0); worldserver.Disconnect(); worldwasconnected = false; @@ -366,7 +363,7 @@ int main(int argc, char** argv) { //structures and opcodes for that patch. struct in_addr in; in.s_addr = eqss->GetRemoteIP(); - _log(WORLD__CLIENT, "New connection from %s:%d", inet_ntoa(in),ntohs(eqss->GetRemotePort())); + Log.Out(Logs::Detail, Logs::World_Server, "New connection from %s:%d", inet_ntoa(in),ntohs(eqss->GetRemotePort())); stream_identifier.AddStream(eqss); //takes the stream } @@ -378,7 +375,7 @@ int main(int argc, char** argv) { //now that we know what patch they are running, start up their client object struct in_addr in; in.s_addr = eqsi->GetRemoteIP(); - _log(WORLD__CLIENT, "New client from %s:%d", inet_ntoa(in), ntohs(eqsi->GetRemotePort())); + Log.Out(Logs::Detail, Logs::World_Server, "New client from %s:%d", inet_ntoa(in), ntohs(eqsi->GetRemotePort())); Client* client = new Client(eqsi); entity_list.AddClient(client); } @@ -423,10 +420,8 @@ int main(int argc, char** argv) { if(net.raid_timer.Enabled() && net.raid_timer.Check()) entity_list.RaidProcess(); - entity_list.Process(); - - entity_list.MobProcess(); - + entity_list.Process(); + entity_list.MobProcess(); entity_list.BeaconProcess(); if (zone) { @@ -449,25 +444,6 @@ int main(int argc, char** argv) { worldserver.AsyncConnect(); } -#if defined(_EQDEBUG) && defined(DEBUG_PC) - QueryPerformanceCounter(&tmp3); - mainloop_time += tmp3.QuadPart - tmp2.QuadPart; - if (!--tmp0) { - tmp0 = 200; - printf("Elapsed Tics : %9.0f (%1.4f sec)\n", (double)mainloop_time, ((double)mainloop_time/tmp.QuadPart)); - printf("NPCAI Tics : %9.0f (%1.2f%%)\n", (double)npcai_time, ((double)npcai_time/mainloop_time)*100); - printf("FindSpell Tics: %9.0f (%1.2f%%)\n", (double)findspell_time, ((double)findspell_time/mainloop_time)*100); - printf("AtkAllowd Tics: %9.0f (%1.2f%%)\n", (double)IsAttackAllowed_time, ((double)IsAttackAllowed_time/mainloop_time)*100); - printf("ClientPro Tics: %9.0f (%1.2f%%)\n", (double)clientprocess_time, ((double)clientprocess_time/mainloop_time)*100); - printf("ClientAtk Tics: %9.0f (%1.2f%%)\n", (double)clientattack_time, ((double)clientattack_time/mainloop_time)*100); - mainloop_time = 0; - npcai_time = 0; - findspell_time = 0; - IsAttackAllowed_time = 0; - clientprocess_time = 0; - clientattack_time = 0; - } -#endif #ifdef EQPROFILE #ifdef PROFILE_DUMP_TIME if(profile_dump_timer.Check()) { @@ -475,7 +451,7 @@ int main(int argc, char** argv) { } #endif #endif - } //end extra profiler block + } //end extra profiler block Sleep(ZoneTimerResolution); } @@ -502,14 +478,14 @@ int main(int argc, char** argv) { safe_delete(taskmanager); command_deinit(); safe_delete(parse); - CheckEQEMuErrorAndPause(); - _log(ZONE__INIT, "Proper zone shutdown complete."); + Log.Out(Logs::General, Logs::Zone_Server, "Proper zone shutdown complete."); + Log.CloseFileLogs(); return 0; } void CatchSignal(int sig_num) { #ifdef _WINDOWS - _log(ZONE__INIT, "Recieved signal: %i", sig_num); + Log.Out(Logs::General, Logs::Zone_Server, "Recieved signal: %i", sig_num); #endif RunLoops = false; } @@ -518,9 +494,9 @@ void Shutdown() { Zone::Shutdown(true); RunLoops = false; - worldserver.Disconnect(); - // safe_delete(worldserver); - _log(ZONE__INIT, "Shutting down..."); + worldserver.Disconnect(); + Log.Out(Logs::General, Logs::Zone_Server, "Shutting down..."); + Log.CloseFileLogs(); } uint32 NetConnection::GetIP() @@ -609,7 +585,7 @@ void LoadSpells(EQEmu::MemoryMappedFile **mmf) { spells = reinterpret_cast((*mmf)->Get()); mutex.Unlock(); } catch(std::exception &ex) { - LogFile->write(EQEmuLog::Error, "Error loading spells: %s", ex.what()); + Log.Out(Logs::General, Logs::Error, "Error loading spells: %s", ex.what()); return; } diff --git a/zone/npc.cpp b/zone/npc.cpp index c48254768..1b5632a7c 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -18,7 +18,7 @@ #include "../common/bodytypes.h" #include "../common/classes.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/misc_functions.h" #include "../common/rulesys.h" #include "../common/seperator.h" @@ -439,7 +439,6 @@ void NPC::RemoveItem(uint32 item_id, uint16 quantity, uint16 slot) { return; } else if (item->item_id == item_id && item->equip_slot == slot && quantity >= 1) { - //std::cout<<"NPC::RemoveItem"<<" equipSlot:"<equipSlot<<" quantity:"<< quantity<charges <= quantity) itemlist.erase(cur); else @@ -496,7 +495,7 @@ void NPC::QueryLoot(Client* to) for(ItemList::iterator cur = itemlist.begin(); cur != itemlist.end(); ++cur, ++x) { const Item_Struct* item = database.GetItem((*cur)->item_id); if (item == nullptr) { - LogFile->write(EQEmuLog::Error, "Database error, invalid item"); + Log.Out(Logs::General, Logs::Error, "Database error, invalid item"); continue; } @@ -992,7 +991,6 @@ uint32 ZoneDatabase::CreateNewNPCCommand(const char* zone, uint32 zone_version,C spawn->MerchantType, 0, spawn->GetRunspeed(), 28, 28); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "NPCSpawnDB Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } npc_type_id = results.LastInsertedID(); @@ -1009,7 +1007,6 @@ uint32 ZoneDatabase::CreateNewNPCCommand(const char* zone, uint32 zone_version,C spawn->MerchantType, 0, spawn->GetRunspeed(), 28, 28); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "NPCSpawnDB Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } npc_type_id = results.LastInsertedID(); @@ -1021,7 +1018,6 @@ uint32 ZoneDatabase::CreateNewNPCCommand(const char* zone, uint32 zone_version,C query = StringFormat("INSERT INTO spawngroup (id, name) VALUES(%i, '%s-%s')", 0, zone, spawn->GetName()); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "NPCSpawnDB Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } uint32 spawngroupid = results.LastInsertedID(); @@ -1035,7 +1031,6 @@ uint32 ZoneDatabase::CreateNewNPCCommand(const char* zone, uint32 zone_version,C spawn->GetHeading(), spawngroupid); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "NPCSpawnDB Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1046,7 +1041,6 @@ uint32 ZoneDatabase::CreateNewNPCCommand(const char* zone, uint32 zone_version,C spawngroupid, npc_type_id, 100); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "NPCSpawnDB Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1063,7 +1057,6 @@ uint32 ZoneDatabase::AddNewNPCSpawnGroupCommand(const char* zone, uint32 zone_ve zone, spawn->GetName(), Timer::GetCurrentTime()); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "CreateNewNPCSpawnGroupCommand Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } last_insert_id = results.LastInsertedID(); @@ -1086,7 +1079,6 @@ uint32 ZoneDatabase::AddNewNPCSpawnGroupCommand(const char* zone, uint32 zone_ve spawn->GetHeading(), last_insert_id); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "CreateNewNPCSpawnGroupCommand Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } spawnid = results.LastInsertedID(); @@ -1098,7 +1090,6 @@ uint32 ZoneDatabase::AddNewNPCSpawnGroupCommand(const char* zone, uint32 zone_ve last_insert_id, spawn->GetNPCTypeID(), 100); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "CreateNewNPCSpawnGroupCommand Error: %s %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1660,7 +1651,7 @@ void Mob::NPCSpecialAttacks(const char* parse, int permtag, bool reset, bool rem { if(database.SetSpecialAttkFlag(this->GetNPCTypeID(), orig_parse)) { - LogFile->write(EQEmuLog::Normal, "NPCTypeID: %i flagged to '%s' for Special Attacks.\n",this->GetNPCTypeID(),orig_parse); + Log.Out(Logs::General, Logs::Normal, "NPCTypeID: %i flagged to '%s' for Special Attacks.\n",this->GetNPCTypeID(),orig_parse); } } } diff --git a/zone/object.cpp b/zone/object.cpp index 215707037..38f4c67c4 100644 --- a/zone/object.cpp +++ b/zone/object.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/string_util.h" #include "client.h" @@ -86,7 +86,6 @@ Object::Object(const ItemInst* inst, char* name,float max_x,float min_x,float ma // Set as much struct data as we can memset(&m_data, 0, sizeof(Object_Struct)); m_data.heading = heading; - //printf("Spawning object %s at %f,%f,%f\n",name,m_data.x,m_data.y,m_data.z); m_data.z = z; m_data.zone_id = zone->GetZoneID(); respawn_timer.Disable(); @@ -336,7 +335,7 @@ const ItemInst* Object::GetItem(uint8 index) { void Object::PutItem(uint8 index, const ItemInst* inst) { if (index > 9) { - LogFile->write(EQEmuLog::Error, "Object::PutItem: Invalid index specified (%i)", index); + Log.Out(Logs::General, Logs::Error, "Object::PutItem: Invalid index specified (%i)", index); return; } @@ -598,7 +597,7 @@ uint32 ZoneDatabase::AddObject(uint32 type, uint32 icon, const Object_Struct& ob safe_delete_array(object_name); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Unable to insert object: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to insert object: %s", results.ErrorMessage().c_str()); return 0; } @@ -635,7 +634,7 @@ void ZoneDatabase::UpdateObject(uint32 id, uint32 type, uint32 icon, const Objec safe_delete_array(object_name); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Unable to update object: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to update object: %s", results.ErrorMessage().c_str()); return; } @@ -654,7 +653,6 @@ Ground_Spawns* ZoneDatabase::LoadGroundSpawns(uint32 zone_id, int16 version, Gro "LIMIT 50", zone_id, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in LoadGroundSpawns query '" << query << "' " << results.ErrorMessage() << std::endl; return gs; } @@ -680,7 +678,7 @@ void ZoneDatabase::DeleteObject(uint32 id) std::string query = StringFormat("DELETE FROM object WHERE id = %i", id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Unable to delete object: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to delete object: %s", results.ErrorMessage().c_str()); } } diff --git a/zone/oldcode.cpp b/zone/oldcode.cpp index 30adb7f2f..075923360 100644 --- a/zone/oldcode.cpp +++ b/zone/oldcode.cpp @@ -1589,22 +1589,18 @@ Message(0, "Disc packet id=%d, %x,%x,%x", disc_in->disc_id, disc_in->unknown3[0] #endif // Npc if (caster->IsAttackAllowed(mob) && spells[spell_id].targettype != ST_AEBard) { - //printf("NPC Spell casted on %s\n", mob->GetName()); caster->SpellOnTarget(spell_id, mob); } else if (mob->IsAIControlled() && spells[spell_id].targettype == ST_AEBard) { - //printf("NPC mgb/aebard spell casted on %s\n", mob->GetName()); caster->SpellOnTarget(spell_id, mob); } else { - //printf("NPC AE, fall thru. spell_id:%i, Target type:%x\n", spell_id, spells[spell_id].targettype); } } #ifdef IPC else if(caster->IsNPC() && caster->CastToNPC()->IsInteractive()) { // Interactive npc if (caster->IsAttackAllowed(mob) && spells[spell_id].targettype != ST_AEBard && spells[spell_id].targettype != ST_GroupTeleport) { - //printf("IPC Spell casted on %s\n", mob->GetName()); caster->SpellOnTarget(spell_id, mob); } else if (!mob->IsAIControlled() && (spells[spell_id].targettype == ST_AEBard||group) && mob->CastToClient()->GetPVP() == caster->CastToClient()->GetPVP()) { @@ -1612,18 +1608,15 @@ Message(0, "Disc packet id=%d, %x,%x,%x", disc_in->disc_id, disc_in->unknown3[0] iterator.Advance(); continue; } - //printf("IPC mgb/aebard spell casted on %s\n", mob->GetName()); caster->SpellOnTarget(spell_id, mob); } else { - //printf("NPC AE, fall thru. spell_id:%i, Target type:%x\n", spell_id, spells[spell_id].targettype); } } #endif else if (caster->IsClient() && !(caster->CastToClient()->IsBecomeNPC())) { // Client if (caster->IsAttackAllowed(mob) && spells[spell_id].targettype != ST_AEBard){ - //printf("Client Spell casted on %s\n", mob->GetName()); caster->SpellOnTarget(spell_id, mob); } else if(spells[spell_id].targettype == ST_GroupTeleport && mob->IsClient() && mob->isgrouped && caster->isgrouped && entity_list.GetGroupByMob(caster)) @@ -1805,7 +1798,6 @@ void ZoneDatabase::AddLootDropToNPC(uint32 lootdrop_id, ItemList* itemlist) { } else { - //printf("Adding item2: %i",item->item_id); //cout << "Adding item to Mob" << endl; ServerLootItem_Struct* item = new ServerLootItem_Struct; item->item_id = dbitem->ItemNumber; diff --git a/zone/pathing.cpp b/zone/pathing.cpp index aba968f0b..61abe1b49 100644 --- a/zone/pathing.cpp +++ b/zone/pathing.cpp @@ -1,4 +1,4 @@ -#include "../common/debug.h" +#include "../common/global_define.h" #include "client.h" #include "doors.h" @@ -61,19 +61,19 @@ PathManager* PathManager::LoadPathFile(const char* ZoneName) if(Ret->loadPaths(PathFile)) { - LogFile->write(EQEmuLog::Status, "Path File %s loaded.", ZonePathFileName); + Log.Out(Logs::General, Logs::Status, "Path File %s loaded.", ZonePathFileName); } else { - LogFile->write(EQEmuLog::Error, "Path File %s failed to load.", ZonePathFileName); + Log.Out(Logs::General, Logs::Error, "Path File %s failed to load.", ZonePathFileName); safe_delete(Ret); } fclose(PathFile); } else { - LogFile->write(EQEmuLog::Error, "Path File %s not found.", ZonePathFileName); + Log.Out(Logs::General, Logs::Error, "Path File %s not found.", ZonePathFileName); } return Ret; @@ -103,18 +103,18 @@ bool PathManager::loadPaths(FILE *PathFile) if(strncmp(Magic, "EQEMUPATH", 9)) { - LogFile->write(EQEmuLog::Error, "Bad Magic String in .path file."); + Log.Out(Logs::General, Logs::Error, "Bad Magic String in .path file."); return false; } fread(&Head, sizeof(Head), 1, PathFile); - LogFile->write(EQEmuLog::Status, "Path File Header: Version %ld, PathNodes %ld", + Log.Out(Logs::General, Logs::Status, "Path File Header: Version %ld, PathNodes %ld", (long)Head.version, (long)Head.PathNodeCount); if(Head.version != 2) { - LogFile->write(EQEmuLog::Error, "Unsupported path file version."); + Log.Out(Logs::General, Logs::Error, "Unsupported path file version."); return false; } @@ -138,7 +138,7 @@ bool PathManager::loadPaths(FILE *PathFile) { if(PathNodes[i].Neighbours[j].id > MaxNodeID) { - LogFile->write(EQEmuLog::Error, "Path Node %i, Neighbour %i (%i) out of range.", i, j, PathNodes[i].Neighbours[j].id); + Log.Out(Logs::General, Logs::Error, "Path Node %i, Neighbour %i (%i) out of range.", i, j, PathNodes[i].Neighbours[j].id); PathFileValid = false; } @@ -206,10 +206,10 @@ Map::Vertex PathManager::GetPathNodeCoordinates(int NodeNumber, bool BestZ) } std::deque PathManager::FindRoute(int startID, int endID) -{ - _log(PATHING__DEBUG, "FindRoute from node %i to %i", startID, endID); +{ + Log.Out(Logs::Detail, Logs::None, "FindRoute from node %i to %i", startID, endID); - memset(ClosedListFlag, 0, sizeof(int) * Head.PathNodeCount); + memset(ClosedListFlag, 0, sizeof(int) * Head.PathNodeCount); std::deque OpenList, ClosedList; @@ -330,7 +330,7 @@ std::deque PathManager::FindRoute(int startID, int endID) } } - _log(PATHING__DEBUG, "Unable to find a route."); + Log.Out(Logs::Detail, Logs::None, "Unable to find a route."); return Route; } @@ -352,7 +352,7 @@ auto path_compare = [](const PathNodeSortStruct& a, const PathNodeSortStruct& b) std::deque PathManager::FindRoute(Map::Vertex Start, Map::Vertex End) { - _log(PATHING__DEBUG, "FindRoute(%8.3f, %8.3f, %8.3f, %8.3f, %8.3f, %8.3f)", Start.x, Start.y, Start.z, End.x, End.y, End.z); + Log.Out(Logs::Detail, Logs::None, "FindRoute(%8.3f, %8.3f, %8.3f, %8.3f, %8.3f, %8.3f)", Start.x, Start.y, Start.z, End.x, End.y, End.z); std::deque noderoute; @@ -386,7 +386,7 @@ std::deque PathManager::FindRoute(Map::Vertex Start, Map::Vertex End) for(auto Iterator = SortedByDistance.begin(); Iterator != SortedByDistance.end(); ++Iterator) { - _log(PATHING__DEBUG, "Checking Reachability of Node %i from Start Position.", PathNodes[(*Iterator).id].id); + Log.Out(Logs::Detail, Logs::None, "Checking Reachability of Node %i from Start Position.", PathNodes[(*Iterator).id].id); if(!zone->zonemap->LineIntersectsZone(Start, PathNodes[(*Iterator).id].v, 1.0f, nullptr)) { @@ -396,11 +396,11 @@ std::deque PathManager::FindRoute(Map::Vertex Start, Map::Vertex End) } if(ClosestPathNodeToStart <0 ) { - _log(PATHING__DEBUG, "No LOS to any starting Path Node within range."); + Log.Out(Logs::Detail, Logs::None, "No LOS to any starting Path Node within range."); return noderoute; } - _log(PATHING__DEBUG, "Closest Path Node To Start: %2d", ClosestPathNodeToStart); + Log.Out(Logs::Detail, Logs::None, "Closest Path Node To Start: %2d", ClosestPathNodeToStart); // Find the nearest PathNode the end point has LOS to @@ -424,8 +424,8 @@ std::deque PathManager::FindRoute(Map::Vertex Start, Map::Vertex End) for(auto Iterator = SortedByDistance.begin(); Iterator != SortedByDistance.end(); ++Iterator) { - _log(PATHING__DEBUG, "Checking Reachability of Node %i from End Position.", PathNodes[(*Iterator).id].id); - _log(PATHING__DEBUG, " (%8.3f, %8.3f, %8.3f) to (%8.3f, %8.3f, %8.3f)", + Log.Out(Logs::Detail, Logs::None, "Checking Reachability of Node %i from End Position.", PathNodes[(*Iterator).id].id); + Log.Out(Logs::Detail, Logs::None, " (%8.3f, %8.3f, %8.3f) to (%8.3f, %8.3f, %8.3f)", End.x, End.y, End.z, PathNodes[(*Iterator).id].v.x, PathNodes[(*Iterator).id].v.y, PathNodes[(*Iterator).id].v.z); @@ -437,11 +437,11 @@ std::deque PathManager::FindRoute(Map::Vertex Start, Map::Vertex End) } if(ClosestPathNodeToEnd < 0) { - _log(PATHING__DEBUG, "No LOS to any end Path Node within range."); + Log.Out(Logs::Detail, Logs::None, "No LOS to any end Path Node within range."); return noderoute; } - _log(PATHING__DEBUG, "Closest Path Node To End: %2d", ClosestPathNodeToEnd); + Log.Out(Logs::Detail, Logs::None, "Closest Path Node To End: %2d", ClosestPathNodeToEnd); if(ClosestPathNodeToStart == ClosestPathNodeToEnd) { @@ -673,7 +673,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if(To == From) return To; - mlog(PATHING__DEBUG, "UpdatePath. From(%8.3f, %8.3f, %8.3f) To(%8.3f, %8.3f, %8.3f)", From.x, From.y, From.z, To.x, To.y, To.z); + Log.Out(Logs::Detail, Logs::None, "UpdatePath. From(%8.3f, %8.3f, %8.3f) To(%8.3f, %8.3f, %8.3f)", From.x, From.y, From.z, To.x, To.y, To.z); if(From == PathingLastPosition) { @@ -681,7 +681,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if((PathingLoopCount > 5) && !IsRooted()) { - mlog(PATHING__DEBUG, "appears to be stuck. Teleporting them to next position.", GetName()); + Log.Out(Logs::Detail, Logs::None, "appears to be stuck. Teleporting them to next position.", GetName()); if(Route.size() == 0) { @@ -721,7 +721,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & // If we are already pathing, and the destination is the same as before ... if(SameDestination) { - mlog(PATHING__DEBUG, " Still pathing to the same destination."); + Log.Out(Logs::Detail, Logs::None, " Still pathing to the same destination."); // Get the coordinates of the first path node we are going to. NextNode = Route.front(); @@ -732,7 +732,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & // We have reached the path node. if(NodeLoc == From) { - mlog(PATHING__DEBUG, " Arrived at node %i", NextNode); + Log.Out(Logs::Detail, Logs::None, " Arrived at node %i", NextNode); NodeReached = true; @@ -746,17 +746,17 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & // target, and we may run past the target if we don't check LOS at this point. int RouteSize = Route.size(); - mlog(PATHING__DEBUG, "Route size is %i", RouteSize); + Log.Out(Logs::Detail, Logs::None, "Route size is %i", RouteSize); if((RouteSize == 2) || ((PathingTraversedNodes >= RuleI(Pathing, MinNodesTraversedForLOSCheck)) && (RouteSize <= RuleI(Pathing, MinNodesLeftForLOSCheck)) && PathingLOSCheckTimer->Check())) { - mlog(PATHING__DEBUG, " Checking distance to target."); + Log.Out(Logs::Detail, Logs::None, " Checking distance to target."); float Distance = VertexDistanceNoRoot(From, To); - mlog(PATHING__DEBUG, " Distance between From and To (NoRoot) is %8.3f", Distance); + Log.Out(Logs::Detail, Logs::None, " Distance between From and To (NoRoot) is %8.3f", Distance); if((Distance <= RuleR(Pathing, MinDistanceForLOSCheckShort)) && (ABS(From.z - To.z) <= RuleR(Pathing, ZDiffThreshold))) @@ -765,18 +765,18 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & PathingLOSState = HaveLOS; else PathingLOSState = NoLOS; - mlog(PATHING__DEBUG, " LOS stats is %s", (PathingLOSState == HaveLOS) ? "HaveLOS" : "NoLOS"); + Log.Out(Logs::Detail, Logs::None, "NoLOS"); if((PathingLOSState == HaveLOS) && zone->pathing->NoHazards(From, To)) { - mlog(PATHING__DEBUG, " No hazards. Running directly to target."); + Log.Out(Logs::Detail, Logs::None, " No hazards. Running directly to target."); Route.clear(); return To; } else { - mlog(PATHING__DEBUG, " Continuing on node path."); + Log.Out(Logs::Detail, Logs::None, " Continuing on node path."); } } else @@ -802,7 +802,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if(Route.size() == 0) { - mlog(PATHING__DEBUG, "Missing node after teleport."); + Log.Out(Logs::Detail, Logs::None, "Missing node after teleport."); return To; } @@ -812,7 +812,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & Teleport(NodeLoc); - mlog(PATHING__DEBUG, " TELEPORTED to %8.3f, %8.3f, %8.3f\n", NodeLoc.x, NodeLoc.y, NodeLoc.z); + Log.Out(Logs::Detail, Logs::None, " TELEPORTED to %8.3f, %8.3f, %8.3f\n", NodeLoc.x, NodeLoc.y, NodeLoc.z); Route.pop_front(); @@ -823,7 +823,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & } zone->pathing->OpenDoors(PathingLastNodeVisited, NextNode, this); - mlog(PATHING__DEBUG, " Now moving to node %i", NextNode); + Log.Out(Logs::Detail, Logs::None, " Now moving to node %i", NextNode); return zone->pathing->GetPathNodeCoordinates(NextNode); } @@ -831,7 +831,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & { // we have run all the nodes, all that is left is the direct path from the last node // to the destination - mlog(PATHING__DEBUG, " Reached end of node path, running direct to target."); + Log.Out(Logs::Detail, Logs::None, " Reached end of node path, running direct to target."); return To; } @@ -845,11 +845,11 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & && (RouteSize <= RuleI(Pathing, MinNodesLeftForLOSCheck)) && PathingLOSCheckTimer->Check()) { - mlog(PATHING__DEBUG, " Checking distance to target."); + Log.Out(Logs::Detail, Logs::None, " Checking distance to target."); float Distance = VertexDistanceNoRoot(From, To); - mlog(PATHING__DEBUG, " Distance between From and To (NoRoot) is %8.3f", Distance); + Log.Out(Logs::Detail, Logs::None, " Distance between From and To (NoRoot) is %8.3f", Distance); if((Distance <= RuleR(Pathing, MinDistanceForLOSCheckShort)) && (ABS(From.z - To.z) <= RuleR(Pathing, ZDiffThreshold))) @@ -858,18 +858,18 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & PathingLOSState = HaveLOS; else PathingLOSState = NoLOS; - mlog(PATHING__DEBUG, " LOS stats is %s", (PathingLOSState == HaveLOS) ? "HaveLOS" : "NoLOS"); + Log.Out(Logs::Detail, Logs::None, "NoLOS"); if((PathingLOSState == HaveLOS) && zone->pathing->NoHazards(From, To)) { - mlog(PATHING__DEBUG, " No hazards. Running directly to target."); + Log.Out(Logs::Detail, Logs::None, " No hazards. Running directly to target."); Route.clear(); return To; } else { - mlog(PATHING__DEBUG, " Continuing on node path."); + Log.Out(Logs::Detail, Logs::None, " Continuing on node path."); } } else @@ -881,7 +881,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & { // We get here if we were already pathing, but our destination has now changed. // - mlog(PATHING__DEBUG, " Target has changed position."); + Log.Out(Logs::Detail, Logs::None, " Target has changed position."); // Update our record of where we are going to. PathingDestination = To; // Check if we now have LOS etc to the new destination. @@ -892,23 +892,23 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if((Distance <= RuleR(Pathing, MinDistanceForLOSCheckShort)) && (ABS(From.z - To.z) <= RuleR(Pathing, ZDiffThreshold))) { - mlog(PATHING__DEBUG, " Checking for short LOS at distance %8.3f.", Distance); + Log.Out(Logs::Detail, Logs::None, " Checking for short LOS at distance %8.3f.", Distance); if(!zone->zonemap->LineIntersectsZone(HeadPosition, To, 1.0f, nullptr)) PathingLOSState = HaveLOS; else PathingLOSState = NoLOS; - mlog(PATHING__DEBUG, " LOS stats is %s", (PathingLOSState == HaveLOS) ? "HaveLOS" : "NoLOS"); + Log.Out(Logs::Detail, Logs::None, "NoLOS"); if((PathingLOSState == HaveLOS) && zone->pathing->NoHazards(From, To)) { - mlog(PATHING__DEBUG, " No hazards. Running directly to target."); + Log.Out(Logs::Detail, Logs::None, " No hazards. Running directly to target."); Route.clear(); return To; } else { - mlog(PATHING__DEBUG, " Continuing on node path."); + Log.Out(Logs::Detail, Logs::None, " Continuing on node path."); } } } @@ -919,19 +919,19 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & { if(!PathingRouteUpdateTimerShort->Check()) { - mlog(PATHING__DEBUG, "Short route update timer not yet expired."); + Log.Out(Logs::Detail, Logs::None, "Short route update timer not yet expired."); return zone->pathing->GetPathNodeCoordinates(Route.front()); } - mlog(PATHING__DEBUG, "Short route update timer expired."); + Log.Out(Logs::Detail, Logs::None, "Short route update timer expired."); } else { if(!PathingRouteUpdateTimerLong->Check()) { - mlog(PATHING__DEBUG, "Long route update timer not yet expired."); + Log.Out(Logs::Detail, Logs::None, "Long route update timer not yet expired."); return zone->pathing->GetPathNodeCoordinates(Route.front()); } - mlog(PATHING__DEBUG, "Long route update timer expired."); + Log.Out(Logs::Detail, Logs::None, "Long route update timer expired."); } // We are already pathing, destination changed, no LOS. Find the nearest node to our destination. @@ -940,7 +940,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & // Destination unreachable via pathing, return direct route. if(DestinationPathNode == -1) { - mlog(PATHING__DEBUG, " Unable to find path node for new destination. Running straight to target."); + Log.Out(Logs::Detail, Logs::None, " Unable to find path node for new destination. Running straight to target."); Route.clear(); return To; } @@ -948,7 +948,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & // one, we will carry on on our path. if(DestinationPathNode == Route.back()) { - mlog(PATHING__DEBUG, " Same destination Node (%i). Continue with current path.", DestinationPathNode); + Log.Out(Logs::Detail, Logs::None, " Same destination Node (%i). Continue with current path.", DestinationPathNode); NodeLoc = zone->pathing->GetPathNodeCoordinates(Route.front()); @@ -956,7 +956,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & // Check if we have reached a path node. if(NodeLoc == From) { - mlog(PATHING__DEBUG, " Arrived at node %i, moving to next one.\n", Route.front()); + Log.Out(Logs::Detail, Logs::None, " Arrived at node %i, moving to next one.\n", Route.front()); NodeReached = true; @@ -979,7 +979,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if(Route.size() == 0) { - mlog(PATHING__DEBUG, "Missing node after teleport."); + Log.Out(Logs::Detail, Logs::None, "Missing node after teleport."); return To; } @@ -989,7 +989,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & Teleport(NodeLoc); - mlog(PATHING__DEBUG, " TELEPORTED to %8.3f, %8.3f, %8.3f\n", NodeLoc.x, NodeLoc.y, NodeLoc.z); + Log.Out(Logs::Detail, Logs::None, " TELEPORTED to %8.3f, %8.3f, %8.3f\n", NodeLoc.x, NodeLoc.y, NodeLoc.z); Route.pop_front(); @@ -999,7 +999,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & NextNode = Route.front(); } // Return the coords of our next path node on the route. - mlog(PATHING__DEBUG, " Now moving to node %i", NextNode); + Log.Out(Logs::Detail, Logs::None, " Now moving to node %i", NextNode); zone->pathing->OpenDoors(PathingLastNodeVisited, NextNode, this); @@ -1007,7 +1007,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & } else { - mlog(PATHING__DEBUG, " Reached end of path grid. Running direct to target."); + Log.Out(Logs::Detail, Logs::None, " Reached end of path grid. Running direct to target."); return To; } } @@ -1015,7 +1015,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & } else { - mlog(PATHING__DEBUG, " Target moved. End node is different. Clearing route."); + Log.Out(Logs::Detail, Logs::None, " Target moved. End node is different. Clearing route."); Route.clear(); // We will now fall through to get a new route. @@ -1025,11 +1025,11 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & } - mlog(PATHING__DEBUG, " Our route list is empty."); + Log.Out(Logs::Detail, Logs::None, " Our route list is empty."); if((SameDestination) && !PathingLOSCheckTimer->Check()) { - mlog(PATHING__DEBUG, " Destination same as before, LOS check timer not reached. Returning To."); + Log.Out(Logs::Detail, Logs::None, " Destination same as before, LOS check timer not reached. Returning To."); return To; } @@ -1044,22 +1044,22 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if((Distance <= RuleR(Pathing, MinDistanceForLOSCheckLong)) && (ABS(From.z - To.z) <= RuleR(Pathing, ZDiffThreshold))) { - mlog(PATHING__DEBUG, " Checking for long LOS at distance %8.3f.", Distance); + Log.Out(Logs::Detail, Logs::None, " Checking for long LOS at distance %8.3f.", Distance); if(!zone->zonemap->LineIntersectsZone(HeadPosition, To, 1.0f, nullptr)) PathingLOSState = HaveLOS; else PathingLOSState = NoLOS; - mlog(PATHING__DEBUG, " LOS stats is %s", (PathingLOSState == HaveLOS) ? "HaveLOS" : "NoLOS"); + Log.Out(Logs::Detail, Logs::None, "NoLOS"); if((PathingLOSState == HaveLOS) && zone->pathing->NoHazards(From, To)) { - mlog(PATHING__DEBUG, "Target is reachable. Running directly there."); + Log.Out(Logs::Detail, Logs::None, "Target is reachable. Running directly there."); return To; } } - mlog(PATHING__DEBUG, " Calculating new route to target."); + Log.Out(Logs::Detail, Logs::None, " Calculating new route to target."); Route = zone->pathing->FindRoute(From, To); @@ -1067,14 +1067,14 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & if(Route.size() == 0) { - mlog(PATHING__DEBUG, " No route available, running direct."); + Log.Out(Logs::Detail, Logs::None, " No route available, running direct."); return To; } if(SameDestination && (Route.front() == PathingLastNodeVisited)) { - mlog(PATHING__DEBUG, " Probable loop detected. Same destination and Route.front() == PathingLastNodeVisited."); + Log.Out(Logs::Detail, Logs::None, " Probable loop detected. Same destination and Route.front() == PathingLastNodeVisited."); Route.clear(); @@ -1082,7 +1082,7 @@ Map::Vertex Mob::UpdatePath(float ToX, float ToY, float ToZ, float Speed, bool & } NodeLoc = zone->pathing->GetPathNodeCoordinates(Route.front()); - mlog(PATHING__DEBUG, " New route determined, heading for node %i", Route.front()); + Log.Out(Logs::Detail, Logs::None, " New route determined, heading for node %i", Route.front()); PathingLoopCount = 0; @@ -1124,7 +1124,7 @@ int PathManager::FindNearestPathNode(Map::Vertex Position) for(auto Iterator = SortedByDistance.begin(); Iterator != SortedByDistance.end(); ++Iterator) { - _log(PATHING__DEBUG, "Checking Reachability of Node %i from Start Position.", PathNodes[(*Iterator).id].id); + Log.Out(Logs::Detail, Logs::None, "Checking Reachability of Node %i from Start Position.", PathNodes[(*Iterator).id].id); if(!zone->zonemap->LineIntersectsZone(Position, PathNodes[(*Iterator).id].v, 1.0f, nullptr)) { @@ -1134,7 +1134,7 @@ int PathManager::FindNearestPathNode(Map::Vertex Position) } if(ClosestPathNodeToStart <0 ) { - _log(PATHING__DEBUG, "No LOS to any starting Path Node within range."); + Log.Out(Logs::Detail, Logs::None, "No LOS to any starting Path Node within range."); return -1; } return ClosestPathNodeToStart; @@ -1150,14 +1150,14 @@ bool PathManager::NoHazards(Map::Vertex From, Map::Vertex To) if(ABS(NewZ - From.z) > RuleR(Pathing, ZDiffThreshold)) { - _log(PATHING__DEBUG, " HAZARD DETECTED moving from %8.3f, %8.3f, %8.3f to %8.3f, %8.3f, %8.3f. Z Change is %8.3f", + Log.Out(Logs::Detail, Logs::None, " HAZARD DETECTED moving from %8.3f, %8.3f, %8.3f to %8.3f, %8.3f, %8.3f. Z Change is %8.3f", From.x, From.y, From.z, MidPoint.x, MidPoint.y, MidPoint.z, NewZ - From.z); return false; } else { - _log(PATHING__DEBUG, "No HAZARD DETECTED moving from %8.3f, %8.3f, %8.3f to %8.3f, %8.3f, %8.3f. Z Change is %8.3f", + Log.Out(Logs::Detail, Logs::None, "No HAZARD DETECTED moving from %8.3f, %8.3f, %8.3f to %8.3f, %8.3f, %8.3f. Z Change is %8.3f", From.x, From.y, From.z, MidPoint.x, MidPoint.y, MidPoint.z, NewZ - From.z); } @@ -1189,7 +1189,7 @@ bool PathManager::NoHazardsAccurate(Map::Vertex From, Map::Vertex To) float NewZ = zone->zonemap->FindBestZ(TestPoint, nullptr); if (ABS(NewZ - last_z) > 5.0f) { - _log(PATHING__DEBUG, " HAZARD DETECTED moving from %8.3f, %8.3f, %8.3f to %8.3f, %8.3f, %8.3f. Best Z %8.3f, Z Change is %8.3f", + Log.Out(Logs::Detail, Logs::None, " HAZARD DETECTED moving from %8.3f, %8.3f, %8.3f to %8.3f, %8.3f, %8.3f. Best Z %8.3f, Z Change is %8.3f", From.x, From.y, From.z, TestPoint.x, TestPoint.y, TestPoint.z, NewZ, NewZ - From.z); return false; } @@ -1217,30 +1217,30 @@ bool PathManager::NoHazardsAccurate(Map::Vertex From, Map::Vertex To) } if (best_z2 == -999990) { - _log(PATHING__DEBUG, " HAZARD DETECTED, really deep water/lava!"); + Log.Out(Logs::Detail, Logs::None, " HAZARD DETECTED, really deep water/lava!"); return false; } else { if (ABS(NewZ - best_z2) > RuleR(Pathing, ZDiffThreshold)) { - _log(PATHING__DEBUG, " HAZARD DETECTED, water is fairly deep at %8.3f units deep", ABS(NewZ - best_z2)); + Log.Out(Logs::Detail, Logs::None, " HAZARD DETECTED, water is fairly deep at %8.3f units deep", ABS(NewZ - best_z2)); return false; } else { - _log(PATHING__DEBUG, " HAZARD NOT DETECTED, water is shallow at %8.3f units deep", ABS(NewZ - best_z2)); + Log.Out(Logs::Detail, Logs::None, " HAZARD NOT DETECTED, water is shallow at %8.3f units deep", ABS(NewZ - best_z2)); } } } else { - _log(PATHING__DEBUG, "Hazard point not in water or lava!"); + Log.Out(Logs::Detail, Logs::None, "Hazard point not in water or lava!"); } } else { - _log(PATHING__DEBUG, "No water map loaded for hazards!"); + Log.Out(Logs::Detail, Logs::None, "No water map loaded for hazards!"); } curx += stepx; @@ -1292,7 +1292,7 @@ void PathManager::OpenDoors(int Node1, int Node2, Mob *ForWho) if(d && !d->IsDoorOpen() ) { - _log(PATHING__DEBUG, "Opening door %i for %s", PathNodes[Node1].Neighbours[i].DoorID, ForWho->GetName()); + Log.Out(Logs::Detail, Logs::None, "Opening door %i for %s", PathNodes[Node1].Neighbours[i].DoorID, ForWho->GetName()); d->ForceOpen(ForWho); } diff --git a/zone/perl_client.cpp b/zone/perl_client.cpp index 537c62399..295d46771 100644 --- a/zone/perl_client.cpp +++ b/zone/perl_client.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed @@ -1271,15 +1271,15 @@ XS(XS_Client_MovePC) } else { if (THIS->IsMerc()) - _log(CLIENT__ERROR, "Perl(XS_Client_MovePC) attempted to process a type Merc reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePC) attempted to process a type Merc reference"); else if (THIS->IsNPC()) - _log(CLIENT__ERROR, "Perl(XS_Client_MovePC) attempted to process a type NPC reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePC) attempted to process a type NPC reference"); #ifdef BOTS else if (THIS->IsBot()) - _log(CLIENT__ERROR, "Perl(XS_Client_MovePC) attempted to process a type Bot reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePC) attempted to process a type Bot reference"); #endif else - _log(CLIENT__ERROR, "Perl(XS_Client_MovePC) attempted to process an Unknown type reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePC) attempted to process an Unknown type reference"); Perl_croak(aTHX_ "THIS is not of type Client"); } @@ -1317,15 +1317,15 @@ XS(XS_Client_MovePCInstance) } else { if (THIS->IsMerc()) - _log(CLIENT__ERROR, "Perl(XS_Client_MovePCInstance) attempted to process a type Merc reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePCInstance) attempted to process a type Merc reference"); else if (THIS->IsNPC()) - _log(CLIENT__ERROR, "Perl(XS_Client_MovePCInstance) attempted to process a type NPC reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePCInstance) attempted to process a type NPC reference"); #ifdef BOTS else if (THIS->IsBot()) - _log(CLIENT__ERROR, "Perl(XS_Client_MovePCInstance) attempted to process a type Bot reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePCInstance) attempted to process a type Bot reference"); #endif else - _log(CLIENT__ERROR, "Perl(XS_Client_MovePCInstance) attempted to process an Unknown type reference"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Perl(XS_Client_MovePCInstance) attempted to process an Unknown type reference"); Perl_croak(aTHX_ "THIS is not of type Client"); diff --git a/zone/perl_doors.cpp b/zone/perl_doors.cpp index 615cce6e9..dd9f0d6ff 100644 --- a/zone/perl_doors.cpp +++ b/zone/perl_doors.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_entity.cpp b/zone/perl_entity.cpp index a5ad00827..8d55f4aae 100644 --- a/zone/perl_entity.cpp +++ b/zone/perl_entity.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include #include "embperl.h" diff --git a/zone/perl_groups.cpp b/zone/perl_groups.cpp index 9db01353b..6960d14df 100644 --- a/zone/perl_groups.cpp +++ b/zone/perl_groups.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_hateentry.cpp b/zone/perl_hateentry.cpp index 6e8b2de9e..7c346a748 100644 --- a/zone/perl_hateentry.cpp +++ b/zone/perl_hateentry.cpp @@ -19,7 +19,7 @@ #include "../common/features.h" #include "client.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_mob.cpp b/zone/perl_mob.cpp index 790651459..f7541b2bb 100644 --- a/zone/perl_mob.cpp +++ b/zone/perl_mob.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_npc.cpp b/zone/perl_npc.cpp index 6fa2e256d..f4510972d 100644 --- a/zone/perl_npc.cpp +++ b/zone/perl_npc.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_object.cpp b/zone/perl_object.cpp index 036d555a1..be52fef1d 100644 --- a/zone/perl_object.cpp +++ b/zone/perl_object.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_perlpacket.cpp b/zone/perl_perlpacket.cpp index 05bbf01f6..f23cf36d7 100644 --- a/zone/perl_perlpacket.cpp +++ b/zone/perl_perlpacket.cpp @@ -27,7 +27,8 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/types.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_player_corpse.cpp b/zone/perl_player_corpse.cpp index 675ee9697..a417284c8 100644 --- a/zone/perl_player_corpse.cpp +++ b/zone/perl_player_corpse.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_questitem.cpp b/zone/perl_questitem.cpp index 4c93d8839..158ee64a4 100644 --- a/zone/perl_questitem.cpp +++ b/zone/perl_questitem.cpp @@ -19,7 +19,7 @@ #include "../common/features.h" #include "client.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perl_raids.cpp b/zone/perl_raids.cpp index be3aea356..60d94600a 100644 --- a/zone/perl_raids.cpp +++ b/zone/perl_raids.cpp @@ -27,7 +27,7 @@ #include "../common/features.h" #ifdef EMBPERL_XS_CLASSES -#include "../common/debug.h" +#include "../common/global_define.h" #include "embperl.h" #ifdef seed diff --git a/zone/perlpacket.cpp b/zone/perlpacket.cpp index 1475ff448..ed0dd9cd3 100644 --- a/zone/perlpacket.cpp +++ b/zone/perlpacket.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include "perlpacket.h" #include "client.h" diff --git a/zone/perlpacket.h b/zone/perlpacket.h index a81e84ad0..4f8e39f0e 100644 --- a/zone/perlpacket.h +++ b/zone/perlpacket.h @@ -21,6 +21,7 @@ #include #include +#include "../common/types.h" #include "../common/emu_opcodes.h" class Client; diff --git a/zone/petitions.cpp b/zone/petitions.cpp index 0329675d7..3e8a836e2 100644 --- a/zone/petitions.cpp +++ b/zone/petitions.cpp @@ -15,7 +15,8 @@ Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org) along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include #ifdef _WINDOWS #include @@ -211,9 +212,6 @@ void ZoneDatabase::DeletePetitionFromDB(Petition* wpet) { std::string query = StringFormat("DELETE FROM petitions WHERE petid = %i", wpet->GetID()); auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in DeletePetitionFromDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - } void ZoneDatabase::UpdatePetitionToDB(Petition* wpet) { @@ -225,9 +223,6 @@ void ZoneDatabase::UpdatePetitionToDB(Petition* wpet) { wpet->GetCheckouts(), wpet->GetUnavails(), wpet->CheckedOut() ? 1: 0, wpet->GetID()); auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in UpdatePetitionToDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - } void ZoneDatabase::InsertPetitionToDB(Petition* wpet) @@ -253,12 +248,11 @@ void ZoneDatabase::InsertPetitionToDB(Petition* wpet) safe_delete_array(petitiontext); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in InsertPetitionToDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } #if EQDEBUG >= 5 - LogFile->write(EQEmuLog::Debug, "New petition created"); + Log.Out(Logs::General, Logs::None, "New petition created"); #endif } @@ -272,7 +266,6 @@ void ZoneDatabase::RefreshPetitionsFromDB() "FROM petitions ORDER BY petid"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in RefreshPetitionsFromDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } diff --git a/zone/pets.cpp b/zone/pets.cpp index 051eb3253..f68f98616 100644 --- a/zone/pets.cpp +++ b/zone/pets.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/spdat.h" #include "../common/string_util.h" #include "../common/types.h" @@ -243,7 +243,7 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower, PetRecord record; if(!database.GetPoweredPetEntry(pettype, act_power, &record)) { Message(13, "Unable to find data for pet %s", pettype); - LogFile->write(EQEmuLog::Error, "Unable to find data for pet %s, check pets table.", pettype); + Log.Out(Logs::General, Logs::Error, "Unable to find data for pet %s, check pets table.", pettype); return; } @@ -251,7 +251,7 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower, const NPCType *base = database.GetNPCType(record.npc_type); if(base == nullptr) { Message(13, "Unable to load NPC data for pet %s", pettype); - LogFile->write(EQEmuLog::Error, "Unable to load NPC data for pet %s (NPC ID %d), check pets and npc_types tables.", pettype, record.npc_type); + Log.Out(Logs::General, Logs::Error, "Unable to load NPC data for pet %s (NPC ID %d), check pets and npc_types tables.", pettype, record.npc_type); return; } @@ -372,7 +372,6 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower, auto results = database.QueryDatabase(query); if (!results.Success()) { // if the database query failed - LogFile->write(EQEmuLog::Error, "Error querying database for monster summoning pet in zone %s (%s)", zone->GetShortName(), results.ErrorMessage().c_str()); } if (results.RowCount() != 0) { @@ -395,7 +394,7 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower, npc_type->helmtexture = monster->helmtexture; npc_type->herosforgemodel = monster->herosforgemodel; } else - LogFile->write(EQEmuLog::Error, "Error loading NPC data for monster summoning pet (NPC ID %d)", monsterid); + Log.Out(Logs::General, Logs::Error, "Error loading NPC data for monster summoning pet (NPC ID %d)", monsterid); } @@ -456,7 +455,6 @@ bool ZoneDatabase::GetPoweredPetEntry(const char *pet_type, int16 petpower, PetR pet_type, petpower); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetPoweredPetEntry query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -656,13 +654,12 @@ bool ZoneDatabase::GetBasePetItems(int32 equipmentset, uint32 *items) { std::string query = StringFormat("SELECT nested_set FROM pets_equipmentset WHERE set_id = '%s'", curset); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetBasePetItems query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } if (results.RowCount() != 1) { // invalid set reference, it doesn't exist - LogFile->write(EQEmuLog::Error, "Error in GetBasePetItems equipment set '%d' does not exist", curset); + Log.Out(Logs::General, Logs::Error, "Error in GetBasePetItems equipment set '%d' does not exist", curset); return false; } @@ -671,9 +668,7 @@ bool ZoneDatabase::GetBasePetItems(int32 equipmentset, uint32 *items) { query = StringFormat("SELECT slot, item_id FROM pets_equipmentset_entries WHERE set_id='%s'", curset); results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in GetBasePetItems query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - else { + if (results.Success()){ for (row = results.begin(); row != results.end(); ++row) { slot = atoi(row[0]); diff --git a/zone/queryserv.cpp b/zone/queryserv.cpp index 1186aa241..d67ca46c7 100644 --- a/zone/queryserv.cpp +++ b/zone/queryserv.cpp @@ -16,7 +16,7 @@ Copyright (C) 2001-2014 EQEMu Development Team (http://eqemulator.net) Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/servertalk.h" #include "../common/string_util.h" #include "queryserv.h" diff --git a/zone/quest_parser_collection.cpp b/zone/quest_parser_collection.cpp index 42af5efe0..3351e6cc4 100644 --- a/zone/quest_parser_collection.cpp +++ b/zone/quest_parser_collection.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/misc_functions.h" #include "../common/features.h" diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index dd15c925d..7f7261875 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -17,7 +17,7 @@ */ #include "../common/classes.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/rulesys.h" #include "../common/skills.h" #include "../common/spdat.h" @@ -154,7 +154,7 @@ void QuestManager::echo(int colour, const char *str) { void QuestManager::say(const char *str) { QuestManagerCurrentQuestVars(); if (!owner) { - LogFile->write(EQEmuLog::Quest, "QuestManager::say called with nullptr owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::say called with nullptr owner. Probably syntax error in quest file."); return; } else { @@ -170,7 +170,7 @@ void QuestManager::say(const char *str) { void QuestManager::say(const char *str, uint8 language) { QuestManagerCurrentQuestVars(); if (!owner) { - LogFile->write(EQEmuLog::Quest, "QuestManager::say called with nullptr owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::say called with nullptr owner. Probably syntax error in quest file."); return; } else { @@ -548,7 +548,7 @@ void QuestManager::stopalltimers(Mob *mob) { void QuestManager::emote(const char *str) { QuestManagerCurrentQuestVars(); if (!owner) { - LogFile->write(EQEmuLog::Quest, "QuestManager::emote called with nullptr owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::emote called with nullptr owner. Probably syntax error in quest file."); return; } else { @@ -559,7 +559,7 @@ void QuestManager::emote(const char *str) { void QuestManager::shout(const char *str) { QuestManagerCurrentQuestVars(); if (!owner) { - LogFile->write(EQEmuLog::Quest, "QuestManager::shout called with nullptr owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::shout called with nullptr owner. Probably syntax error in quest file."); return; } else { @@ -570,7 +570,7 @@ void QuestManager::shout(const char *str) { void QuestManager::shout2(const char *str) { QuestManagerCurrentQuestVars(); if (!owner) { - LogFile->write(EQEmuLog::Quest, "QuestManager::shout2 called with nullptr owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::shout2 called with nullptr owner. Probably syntax error in quest file."); return; } else { @@ -589,7 +589,7 @@ void QuestManager::gmsay(const char *str, uint32 color, bool send_to_world, uint void QuestManager::depop(int npc_type) { QuestManagerCurrentQuestVars(); if (!owner || !owner->IsNPC()) { - LogFile->write(EQEmuLog::Quest, "QuestManager::depop called with nullptr owner or non-NPC owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::depop called with nullptr owner or non-NPC owner. Probably syntax error in quest file."); return; } else { @@ -619,7 +619,7 @@ void QuestManager::depop(int npc_type) { void QuestManager::depop_withtimer(int npc_type) { QuestManagerCurrentQuestVars(); if (!owner || !owner->IsNPC()) { - LogFile->write(EQEmuLog::Quest, "QuestManager::depop_withtimer called with nullptr owner or non-NPC owner. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::depop_withtimer called with nullptr owner or non-NPC owner. Probably syntax error in quest file."); return; } else { @@ -646,7 +646,7 @@ void QuestManager::depopall(int npc_type) { entity_list.DepopAll(npc_type); } else { - LogFile->write(EQEmuLog::Quest, "QuestManager::depopall called with nullptr owner, non-NPC owner, or invalid NPC Type ID. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::depopall called with nullptr owner, non-NPC owner, or invalid NPC Type ID. Probably syntax error in quest file."); } } @@ -655,7 +655,7 @@ void QuestManager::depopzone(bool StartSpawnTimer) { zone->Depop(StartSpawnTimer); } else { - LogFile->write(EQEmuLog::Quest, "QuestManager::depopzone called with nullptr zone. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::depopzone called with nullptr zone. Probably syntax error in quest file."); } } @@ -664,7 +664,7 @@ void QuestManager::repopzone() { zone->Repop(); } else { - LogFile->write(EQEmuLog::Quest, "QuestManager::repopzone called with nullptr zone. Probably syntax error in quest file."); + Log.Out(Logs::General, Logs::Quests, "QuestManager::repopzone called with nullptr zone. Probably syntax error in quest file."); } } @@ -1646,7 +1646,7 @@ void QuestManager::showgrid(int grid) { "ORDER BY `number`", grid, zone->GetZoneID()); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Quest, "Error loading grid %d for showgrid(): %s", grid, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Quests, "Error loading grid %d for showgrid(): %s", grid, results.ErrorMessage().c_str()); return; } @@ -2069,7 +2069,7 @@ bool QuestManager::istaskenabled(int taskid) { void QuestManager::tasksetselector(int tasksetid) { QuestManagerCurrentQuestVars(); - _log(TASKS__UPDATE, "TaskSetSelector called for task set %i", tasksetid); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskSetSelector called for task set %i", tasksetid); if(RuleB(TaskSystem, EnableTaskSystem) && initiator && owner && taskmanager) initiator->TaskSetSelector(owner, tasksetid); } @@ -2636,7 +2636,7 @@ const char* QuestManager::saylink(char* Phrase, bool silent, const char* LinkNam std::string insert_query = StringFormat("INSERT INTO `saylink` (`phrase`) VALUES ('%s')", escaped_string); results = database.QueryDatabase(insert_query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in saylink phrase queries", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in saylink phrase queries", results.ErrorMessage().c_str()); } else { results = database.QueryDatabase(query); if (results.Success()) { @@ -2644,7 +2644,7 @@ const char* QuestManager::saylink(char* Phrase, bool silent, const char* LinkNam for(auto row = results.begin(); row != results.end(); ++row) sayid = atoi(row[0]); } else { - LogFile->write(EQEmuLog::Error, "Error in saylink phrase queries", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in saylink phrase queries", results.ErrorMessage().c_str()); } } } @@ -2804,7 +2804,7 @@ void QuestManager::voicetell(const char *str, int macronum, int racenum, int gen safe_delete(outapp); } else - LogFile->write(EQEmuLog::Quest, "QuestManager::voicetell from %s. Client %s not found.", owner->GetName(), str); + Log.Out(Logs::General, Logs::Quests, "QuestManager::voicetell from %s. Client %s not found.", owner->GetName(), str); } } diff --git a/zone/raids.cpp b/zone/raids.cpp index 2a5c94bdd..4410a89ea 100644 --- a/zone/raids.cpp +++ b/zone/raids.cpp @@ -99,7 +99,7 @@ void Raid::AddMember(Client *c, uint32 group, bool rleader, bool groupleader, bo auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error inserting into raid members: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error inserting into raid members: %s", results.ErrorMessage().c_str()); } LearnMembers(); @@ -233,12 +233,12 @@ void Raid::SetRaidLeader(const char *wasLead, const char *name) std::string query = StringFormat("UPDATE raid_members SET israidleader = 0 WHERE name = '%s'", wasLead); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Set Raid Leader error: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Set Raid Leader error: %s\n", results.ErrorMessage().c_str()); query = StringFormat("UPDATE raid_members SET israidleader = 1 WHERE name = '%s'", name); results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Set Raid Leader error: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Set Raid Leader error: %s\n", results.ErrorMessage().c_str()); strn0cpy(leadername, name, 64); @@ -271,7 +271,7 @@ void Raid::SaveGroupLeaderAA(uint32 gid) safe_delete_array(queryBuffer); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to store LeadershipAA: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to store LeadershipAA: %s\n", results.ErrorMessage().c_str()); } void Raid::SaveRaidLeaderAA() @@ -285,7 +285,7 @@ void Raid::SaveRaidLeaderAA() safe_delete_array(queryBuffer); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to store LeadershipAA: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to store LeadershipAA: %s\n", results.ErrorMessage().c_str()); } void Raid::UpdateGroupAAs(uint32 gid) @@ -498,7 +498,7 @@ void Raid::CastGroupSpell(Mob* caster, uint16 spellid, uint32 gid) #endif } else{ - _log(SPELLS__CASTING, "Raid spell: %s is out of range %f at distance %f from %s", members[x].member->GetName(), range, distance, caster->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Raid spell: %s is out of range %f at distance %f from %s", members[x].member->GetName(), range, distance, caster->GetName()); } } } @@ -799,7 +799,7 @@ void Raid::GroupBardPulse(Mob* caster, uint16 spellid, uint32 gid){ members[z].member->GetPet()->BardPulse(spellid, caster); #endif } else - _log(SPELLS__BARDS, "Group bard pulse: %s is out of range %f at distance %f from %s", members[z].member->GetName(), range, distance, caster->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Group bard pulse: %s is out of range %f at distance %f from %s", members[z].member->GetName(), range, distance, caster->GetName()); } } } @@ -1407,7 +1407,7 @@ void Raid::GetRaidDetails() return; if (results.RowCount() == 0) { - LogFile->write(EQEmuLog::Error, "Error getting raid details for raid %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error getting raid details for raid %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); return; } @@ -1439,7 +1439,7 @@ bool Raid::LearnMembers() return false; if(results.RowCount() == 0) { - LogFile->write(EQEmuLog::Error, "Error getting raid members for raid %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error getting raid members for raid %lu: %s", (unsigned long)GetID(), results.ErrorMessage().c_str()); disbandCheck = true; return false; } @@ -1643,7 +1643,7 @@ void Raid::SetGroupMentor(uint32 group_id, int percent, char *name) name, percent, group_id, GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to set raid group mentor: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to set raid group mentor: %s\n", results.ErrorMessage().c_str()); } void Raid::ClearGroupMentor(uint32 group_id) @@ -1658,7 +1658,7 @@ void Raid::ClearGroupMentor(uint32 group_id) group_id, GetID()); auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to clear raid group mentor: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Unable to clear raid group mentor: %s\n", results.ErrorMessage().c_str()); } // there isn't a nice place to add this in another function, unlike groups diff --git a/zone/spawn2.cpp b/zone/spawn2.cpp index 6be939e35..6a51fc490 100644 --- a/zone/spawn2.cpp +++ b/zone/spawn2.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/string_util.h" #include "client.h" @@ -153,13 +153,13 @@ bool Spawn2::Process() { if (timer.Check()) { timer.Disable(); - _log(SPAWNS__MAIN, "Spawn2 %d: Timer has triggered", spawn2_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Timer has triggered", spawn2_id); //first check our spawn condition, if this isnt active //then we reset the timer and try again next time. if(condition_id != SC_AlwaysEnabled && !zone->spawn_conditions.Check(condition_id, condition_min_value)) { - _log(SPAWNS__CONDITIONS, "Spawn2 %d: spawning prevented by spawn condition %d", spawn2_id, condition_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: spawning prevented by spawn condition %d", spawn2_id, condition_id); Reset(); return(true); } @@ -170,14 +170,14 @@ bool Spawn2::Process() { } if (sg == nullptr) { - _log(SPAWNS__MAIN, "Spawn2 %d: Unable to locate spawn group %d. Disabling.", spawn2_id, spawngroup_id_); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Unable to locate spawn group %d. Disabling.", spawn2_id, spawngroup_id_); return false; } //have the spawn group pick an NPC for us uint32 npcid = sg->GetNPCType(); if (npcid == 0) { - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn group %d did not yeild an NPC! not spawning.", spawn2_id, spawngroup_id_); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn group %d did not yeild an NPC! not spawning.", spawn2_id, spawngroup_id_); Reset(); //try again later (why?) return(true); } @@ -185,7 +185,7 @@ bool Spawn2::Process() { //try to find our NPC type. const NPCType* tmp = database.GetNPCType(npcid); if (tmp == nullptr) { - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn group %d yeilded an invalid NPC type %d", spawn2_id, spawngroup_id_, npcid); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn group %d yeilded an invalid NPC type %d", spawn2_id, spawngroup_id_, npcid); Reset(); //try again later return(true); } @@ -194,7 +194,7 @@ bool Spawn2::Process() { { if(!entity_list.LimitCheckName(tmp->name)) { - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn group %d yeilded NPC type %d, which is unique and one already exists.", spawn2_id, spawngroup_id_, npcid); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn group %d yeilded NPC type %d, which is unique and one already exists.", spawn2_id, spawngroup_id_, npcid); timer.Start(5000); //try again in five seconds. return(true); } @@ -202,7 +202,7 @@ bool Spawn2::Process() { if(tmp->spawn_limit > 0) { if(!entity_list.LimitCheckType(npcid, tmp->spawn_limit)) { - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn group %d yeilded NPC type %d, which is over its spawn limit (%d)", spawn2_id, spawngroup_id_, npcid, tmp->spawn_limit); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn group %d yeilded NPC type %d, which is over its spawn limit (%d)", spawn2_id, spawngroup_id_, npcid, tmp->spawn_limit); timer.Start(5000); //try again in five seconds. return(true); } @@ -233,10 +233,10 @@ bool Spawn2::Process() { if(sg->roamdist && sg->roambox[0] && sg->roambox[1] && sg->roambox[2] && sg->roambox[3] && sg->delay && sg->min_delay) npc->AI_SetRoambox(sg->roamdist,sg->roambox[0],sg->roambox[1],sg->roambox[2],sg->roambox[3],sg->delay,sg->min_delay); if(zone->InstantGrids()) { - _log(SPAWNS__MAIN, "Spawn2 %d: Group %d spawned %s (%d) at (%.3f, %.3f, %.3f).", spawn2_id, spawngroup_id_, npc->GetName(), npcid, x, y, z); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Group %d spawned %s (%d) at (%.3f, %.3f, %.3f).", spawn2_id, spawngroup_id_, npc->GetName(), npcid, x, y, z); LoadGrid(); } else { - _log(SPAWNS__MAIN, "Spawn2 %d: Group %d spawned %s (%d) at (%.3f, %.3f, %.3f). Grid loading delayed.", spawn2_id, spawngroup_id_, tmp->name, npcid, x, y, z); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Group %d spawned %s (%d) at (%.3f, %.3f, %.3f). Grid loading delayed.", spawn2_id, spawngroup_id_, tmp->name, npcid, x, y, z); } } return true; @@ -261,7 +261,7 @@ void Spawn2::LoadGrid() { //dont set an NPC's grid until its loaded for them. npcthis->SetGrid(grid_); npcthis->AssignWaypoints(grid_); - _log(SPAWNS__MAIN, "Spawn2 %d: Loading grid %d for %s", spawn2_id, grid_, npcthis->GetName()); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Loading grid %d for %s", spawn2_id, grid_, npcthis->GetName()); } @@ -272,21 +272,21 @@ void Spawn2::LoadGrid() { void Spawn2::Reset() { timer.Start(resetTimer()); npcthis = nullptr; - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn reset, repop in %d ms", spawn2_id, timer.GetRemainingTime()); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn reset, repop in %d ms", spawn2_id, timer.GetRemainingTime()); } void Spawn2::Depop() { timer.Disable(); - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn reset, repop disabled", spawn2_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn reset, repop disabled", spawn2_id); npcthis = nullptr; } void Spawn2::Repop(uint32 delay) { if (delay == 0) { timer.Trigger(); - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn reset, repop immediately.", spawn2_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn reset, repop immediately.", spawn2_id); } else { - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn reset for repop, repop in %d ms", spawn2_id, delay); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn reset for repop, repop in %d ms", spawn2_id, delay); timer.Start(delay); } npcthis = nullptr; @@ -328,7 +328,7 @@ void Spawn2::ForceDespawn() cur = despawnTimer(dtimer); } - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn group %d set despawn timer to %d ms.", spawn2_id, spawngroup_id_, cur); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn group %d set despawn timer to %d ms.", spawn2_id, spawngroup_id_, cur); timer.Start(cur); } @@ -349,7 +349,7 @@ void Spawn2::DeathReset(bool realdeath) if(spawn2_id) { database.UpdateSpawn2Timeleft(spawn2_id, zone->GetInstanceID(), (cur/1000)); - _log(SPAWNS__MAIN, "Spawn2 %d: Spawn reset by death, repop in %d ms", spawn2_id, timer.GetRemainingTime()); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Spawn reset by death, repop in %d ms", spawn2_id, timer.GetRemainingTime()); //store it to database too } } @@ -364,7 +364,6 @@ bool ZoneDatabase::PopulateZoneSpawnList(uint32 zoneid, LinkedList &spa zone_name, version); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in PopulateZoneLists query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -392,12 +391,10 @@ Spawn2* ZoneDatabase::LoadSpawn2(LinkedList &spawn2_list, uint32 spawn2 "WHERE id = %i", spawn2id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadSpawn2 query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return nullptr; } if (results.RowCount() != 1) { - LogFile->write(EQEmuLog::Error, "Error in LoadSpawn2 query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return nullptr; } @@ -424,7 +421,6 @@ bool ZoneDatabase::CreateSpawn2(Client *client, uint32 spawngroup, const char* z respawn, variance, condition, cond_value); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in CreateSpawn2 query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -466,12 +462,12 @@ void Spawn2::SpawnConditionChanged(const SpawnCondition &c, int16 old_value) { if(GetSpawnCondition() != c.condition_id) return; - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Notified that our spawn condition %d has changed from %d to %d. Our min value is %d.", spawn2_id, c.condition_id, old_value, c.value, condition_min_value); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Notified that our spawn condition %d has changed from %d to %d. Our min value is %d.", spawn2_id, c.condition_id, old_value, c.value, condition_min_value); bool old_state = (old_value >= condition_min_value); bool new_state = (c.value >= condition_min_value); if(old_state == new_state) { - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our threshold for this condition was not crossed. Doing nothing.", spawn2_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our threshold for this condition was not crossed. Doing nothing.", spawn2_id); return; //no change } @@ -479,50 +475,50 @@ void Spawn2::SpawnConditionChanged(const SpawnCondition &c, int16 old_value) { switch(c.on_change) { case SpawnCondition::DoNothing: //that was easy. - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our condition is now %s. Taking no action on existing spawn.", spawn2_id, new_state?"enabled":"disabled"); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our condition is now %s. Taking no action on existing spawn.", spawn2_id, new_state?"enabled":"disabled"); break; case SpawnCondition::DoDepop: - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our condition is now %s. Depoping our mob.", spawn2_id, new_state?"enabled":"disabled"); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our condition is now %s. Depoping our mob.", spawn2_id, new_state?"enabled":"disabled"); if(npcthis != nullptr) npcthis->Depop(false); //remove the current mob Reset(); //reset our spawn timer break; case SpawnCondition::DoRepop: - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our condition is now %s. Forcing a repop.", spawn2_id, new_state?"enabled":"disabled"); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our condition is now %s. Forcing a repop.", spawn2_id, new_state?"enabled":"disabled"); if(npcthis != nullptr) npcthis->Depop(false); //remove the current mob Repop(); //repop break; case SpawnCondition::DoRepopIfReady: - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our condition is now %s. Forcing a repop if repsawn timer is expired.", spawn2_id, new_state?"enabled":"disabled"); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our condition is now %s. Forcing a repop if repsawn timer is expired.", spawn2_id, new_state?"enabled":"disabled"); if(npcthis != nullptr) { - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our npcthis is currently not null. The zone thinks it is %s. Forcing a depop.", spawn2_id, npcthis->GetName()); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our npcthis is currently not null. The zone thinks it is %s. Forcing a depop.", spawn2_id, npcthis->GetName()); npcthis->Depop(false); //remove the current mob npcthis = nullptr; } if(new_state) { // only get repawn timer remaining when the SpawnCondition is enabled. timer_remaining = database.GetSpawnTimeLeft(spawn2_id,zone->GetInstanceID()); - _log(SPAWNS__CONDITIONS,"Spawn2 %d: Our condition is now %s. The respawn timer_remaining is %d. Forcing a repop if it is <= 0.", spawn2_id, new_state?"enabled":"disabled", timer_remaining); + Log.Out(Logs::Detail, Logs::Spawns,"Spawn2 %d: Our condition is now %s. The respawn timer_remaining is %d. Forcing a repop if it is <= 0.", spawn2_id, new_state?"enabled":"disabled", timer_remaining); if(timer_remaining <= 0) Repop(); } else { - _log(SPAWNS__CONDITIONS,"Spawn2 %d: Our condition is now %s. Not checking respawn timer.", spawn2_id, new_state?"enabled":"disabled"); + Log.Out(Logs::Detail, Logs::Spawns,"Spawn2 %d: Our condition is now %s. Not checking respawn timer.", spawn2_id, new_state?"enabled":"disabled"); } break; default: if(c.on_change < SpawnCondition::DoSignalMin) { - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our condition is now %s. Invalid on-change action %d.", spawn2_id, new_state?"enabled":"disabled", c.on_change); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our condition is now %s. Invalid on-change action %d.", spawn2_id, new_state?"enabled":"disabled", c.on_change); return; //unknown onchange action } int signal_id = c.on_change - SpawnCondition::DoSignalMin; - _log(SPAWNS__CONDITIONS, "Spawn2 %d: Our condition is now %s. Signaling our mob with %d.", spawn2_id, new_state?"enabled":"disabled", signal_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn2 %d: Our condition is now %s. Signaling our mob with %d.", spawn2_id, new_state?"enabled":"disabled", signal_id); if(npcthis != nullptr) npcthis->SignalNPC(signal_id); } } void Zone::SpawnConditionChanged(const SpawnCondition &c, int16 old_value) { - _log(SPAWNS__CONDITIONS, "Zone notified that spawn condition %d has changed from %d to %d. Notifying all spawn points.", c.condition_id, old_value, c.value); + Log.Out(Logs::Detail, Logs::Spawns, "Zone notified that spawn condition %d has changed from %d to %d. Notifying all spawn points.", c.condition_id, old_value, c.value); LinkedListIterator iterator(spawn2_list); @@ -592,7 +588,7 @@ void SpawnConditionManager::Process() { EQTime::AddMinutes(cevent.period, &cevent.next); std::string t; EQTime::ToString(&cevent.next, t); - _log(SPAWNS__CONDITIONS, "Event %d: Will trigger again in %d EQ minutes at %s.", cevent.id, cevent.period, t.c_str()); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Will trigger again in %d EQ minutes at %s.", cevent.id, cevent.period, t.c_str()); //save the next event time in the DB UpdateDBEvent(cevent); //find the next closest event timer. @@ -611,7 +607,7 @@ void SpawnConditionManager::ExecEvent(SpawnEvent &event, bool send_update) { std::map::iterator condi; condi = spawn_conditions.find(event.condition_id); if(condi == spawn_conditions.end()) { - _log(SPAWNS__CONDITIONS, "Event %d: Unable to find condition %d to execute on.", event.id, event.condition_id); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Unable to find condition %d to execute on.", event.id, event.condition_id); return; //unable to find the spawn condition to operate on } @@ -619,7 +615,7 @@ void SpawnConditionManager::ExecEvent(SpawnEvent &event, bool send_update) { zone->zone_time.getEQTimeOfDay(&tod); if(event.strict && (event.next.hour != tod.hour || event.next.day != tod.day || event.next.month != tod.month || event.next.year != tod.year)) { - _log(SPAWNS__CONDITIONS, "Event %d: Unable to execute. Condition is strict, and event time has already passed.", event.id); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Unable to execute. Condition is strict, and event time has already passed.", event.id); return; } @@ -631,26 +627,26 @@ void SpawnConditionManager::ExecEvent(SpawnEvent &event, bool send_update) { switch(event.action) { case SpawnEvent::ActionSet: new_value = event.argument; - _log(SPAWNS__CONDITIONS, "Event %d: Executing. Setting condition %d to %d.", event.id, event.condition_id, event.argument); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Executing. Setting condition %d to %d.", event.id, event.condition_id, event.argument); break; case SpawnEvent::ActionAdd: new_value += event.argument; - _log(SPAWNS__CONDITIONS, "Event %d: Executing. Adding %d to condition %d, yeilding %d.", event.id, event.argument, event.condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Executing. Adding %d to condition %d, yeilding %d.", event.id, event.argument, event.condition_id, new_value); break; case SpawnEvent::ActionSubtract: new_value -= event.argument; - _log(SPAWNS__CONDITIONS, "Event %d: Executing. Subtracting %d from condition %d, yeilding %d.", event.id, event.argument, event.condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Executing. Subtracting %d from condition %d, yeilding %d.", event.id, event.argument, event.condition_id, new_value); break; case SpawnEvent::ActionMultiply: new_value *= event.argument; - _log(SPAWNS__CONDITIONS, "Event %d: Executing. Multiplying condition %d by %d, yeilding %d.", event.id, event.condition_id, event.argument, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Executing. Multiplying condition %d by %d, yeilding %d.", event.id, event.condition_id, event.argument, new_value); break; case SpawnEvent::ActionDivide: new_value /= event.argument; - _log(SPAWNS__CONDITIONS, "Event %d: Executing. Dividing condition %d by %d, yeilding %d.", event.id, event.condition_id, event.argument, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Executing. Dividing condition %d by %d, yeilding %d.", event.id, event.condition_id, event.argument, new_value); break; default: - _log(SPAWNS__CONDITIONS, "Event %d: Invalid event action type %d", event.id, event.action); + Log.Out(Logs::Detail, Logs::Spawns, "Event %d: Invalid event action type %d", event.id, event.action); return; } @@ -672,10 +668,7 @@ void SpawnConditionManager::UpdateDBEvent(SpawnEvent &event) { event.next.day, event.next.month, event.next.year, event.enabled? 1: 0, event.strict? 1: 0, event.id); - auto results = database.QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to update spawn event '%s': %s\n", query.c_str(), results.ErrorMessage().c_str()); - + database.QueryDatabase(query); } void SpawnConditionManager::UpdateDBCondition(const char* zone_name, uint32 instance_id, uint16 cond_id, int16 value) { @@ -684,10 +677,7 @@ void SpawnConditionManager::UpdateDBCondition(const char* zone_name, uint32 inst "(id, value, zone, instance_id) " "VALUES( %u, %u, '%s', %u)", cond_id, value, zone_name, instance_id); - auto results = database.QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Unable to update spawn condition '%s': %s\n", query.c_str(), results.ErrorMessage().c_str()); - + database.QueryDatabase(query); } bool SpawnConditionManager::LoadDBEvent(uint32 event_id, SpawnEvent &event, std::string &zone_name) { @@ -699,7 +689,6 @@ bool SpawnConditionManager::LoadDBEvent(uint32 event_id, SpawnEvent &event, std: "FROM spawn_events WHERE id = %d", event_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadDBEvent query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -727,7 +716,7 @@ bool SpawnConditionManager::LoadDBEvent(uint32 event_id, SpawnEvent &event, std: std::string timeAsString; EQTime::ToString(&event.next, timeAsString); - _log(SPAWNS__CONDITIONS, "(LoadDBEvent) Loaded %s spawn event %d on condition %d with period %d, action %d, argument %d, strict %d. Will trigger at %s", event.enabled? "enabled": "disabled", event.id, event.condition_id, event.period, event.action, event.argument, event.strict, timeAsString.c_str()); + Log.Out(Logs::Detail, Logs::Spawns, "(LoadDBEvent) Loaded %s spawn event %d on condition %d with period %d, action %d, argument %d, strict %d. Will trigger at %s", event.enabled? "enabled": "disabled", event.id, event.condition_id, event.period, event.action, event.argument, event.strict, timeAsString.c_str()); return true; } @@ -742,7 +731,6 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in "WHERE zone = '%s'", zone_name); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadSpawnConditions query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -755,7 +743,7 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in cond.on_change = (SpawnCondition::OnChange) atoi(row[1]); spawn_conditions[cond.condition_id] = cond; - _log(SPAWNS__CONDITIONS, "Loaded spawn condition %d with value %d and on_change %d", cond.condition_id, cond.value, cond.on_change); + Log.Out(Logs::Detail, Logs::Spawns, "Loaded spawn condition %d with value %d and on_change %d", cond.condition_id, cond.value, cond.on_change); } //load values @@ -764,7 +752,6 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in zone_name, instance_id); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadSpawnConditions query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); spawn_conditions.clear(); return false; } @@ -782,7 +769,6 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in "FROM spawn_events WHERE zone = '%s'", zone_name); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadSpawnConditions events query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -794,7 +780,7 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in event.period = atoi(row[2]); if(event.period == 0) { - LogFile->write(EQEmuLog::Error, "Refusing to load spawn event #%d because it has a period of 0\n", event.id); + Log.Out(Logs::General, Logs::Error, "Refusing to load spawn event #%d because it has a period of 0\n", event.id); continue; } @@ -811,7 +797,7 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in spawn_events.push_back(event); - _log(SPAWNS__CONDITIONS, "(LoadSpawnConditions) Loaded %s spawn event %d on condition %d with period %d, action %d, argument %d, strict %d", event.enabled? "enabled": "disabled", event.id, event.condition_id, event.period, event.action, event.argument, event.strict); + Log.Out(Logs::Detail, Logs::Spawns, "(LoadSpawnConditions) Loaded %s spawn event %d on condition %d with period %d, action %d, argument %d, strict %d", event.enabled? "enabled": "disabled", event.id, event.condition_id, event.period, event.action, event.argument, event.strict); } //now we need to catch up on events that happened while we were away @@ -846,7 +832,7 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in //watch for special case of all 0s, which means to reset next to now if(cevent.next.year == 0 && cevent.next.month == 0 && cevent.next.day == 0 && cevent.next.hour == 0 && cevent.next.minute == 0) { - _log(SPAWNS__CONDITIONS, "Initial next trigger time set for spawn event %d", cevent.id); + Log.Out(Logs::Detail, Logs::Spawns, "Initial next trigger time set for spawn event %d", cevent.id); memcpy(&cevent.next, &tod, sizeof(cevent.next)); //add one period EQTime::AddMinutes(cevent.period, &cevent.next); @@ -857,7 +843,7 @@ bool SpawnConditionManager::LoadSpawnConditions(const char* zone_name, uint32 in bool ran = false; while(EQTime::IsTimeBefore(&tod, &cevent.next)) { - _log(SPAWNS__CONDITIONS, "Catch up triggering on event %d", cevent.id); + Log.Out(Logs::Detail, Logs::Spawns, "Catch up triggering on event %d", cevent.id); //this event has been triggered. //execute the event if(!cevent.strict || StrictCheck) @@ -900,9 +886,9 @@ void SpawnConditionManager::FindNearestEvent() { } } if(next_id == -1) - _log(SPAWNS__CONDITIONS, "No spawn events enabled. Disabling next event."); + Log.Out(Logs::Detail, Logs::Spawns, "No spawn events enabled. Disabling next event."); else - _log(SPAWNS__CONDITIONS, "Next event determined to be event %d", next_id); + Log.Out(Logs::Detail, Logs::Spawns, "Next event determined to be event %d", next_id); } void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance_id, uint16 condition_id, int16 new_value, bool world_update) @@ -914,14 +900,14 @@ void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance std::map::iterator condi; condi = spawn_conditions.find(condition_id); if(condi == spawn_conditions.end()) { - _log(SPAWNS__CONDITIONS, "Condition update received from world for %d, but we do not have that conditon.", condition_id); + Log.Out(Logs::Detail, Logs::Spawns, "Condition update received from world for %d, but we do not have that conditon.", condition_id); return; //unable to find the spawn condition } SpawnCondition &cond = condi->second; if(cond.value == new_value) { - _log(SPAWNS__CONDITIONS, "Condition update received from world for %d with value %d, which is what we already have.", condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Condition update received from world for %d with value %d, which is what we already have.", condition_id, new_value); return; } @@ -930,7 +916,7 @@ void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance //set our local value cond.value = new_value; - _log(SPAWNS__CONDITIONS, "Condition update received from world for %d with value %d", condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Condition update received from world for %d with value %d", condition_id, new_value); //now we have to test each spawn point to see if it changed. zone->SpawnConditionChanged(cond, old_value); @@ -941,14 +927,14 @@ void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance std::map::iterator condi; condi = spawn_conditions.find(condition_id); if(condi == spawn_conditions.end()) { - _log(SPAWNS__CONDITIONS, "Local Condition update requested for %d, but we do not have that conditon.", condition_id); + Log.Out(Logs::Detail, Logs::Spawns, "Local Condition update requested for %d, but we do not have that conditon.", condition_id); return; //unable to find the spawn condition } SpawnCondition &cond = condi->second; if(cond.value == new_value) { - _log(SPAWNS__CONDITIONS, "Local Condition update requested for %d with value %d, which is what we already have.", condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Local Condition update requested for %d with value %d, which is what we already have.", condition_id, new_value); return; } @@ -959,7 +945,7 @@ void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance //save it in the DB too UpdateDBCondition(zone_short, instance_id, condition_id, new_value); - _log(SPAWNS__CONDITIONS, "Local Condition update requested for %d with value %d", condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Local Condition update requested for %d with value %d", condition_id, new_value); //now we have to test each spawn point to see if it changed. zone->SpawnConditionChanged(cond, old_value); @@ -969,7 +955,7 @@ void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance //this is a remote spawn condition, update the DB and send //an update packet to the zone if its up - _log(SPAWNS__CONDITIONS, "Remote spawn condition %d set to %d. Updating DB and notifying world.", condition_id, new_value); + Log.Out(Logs::Detail, Logs::Spawns, "Remote spawn condition %d set to %d. Updating DB and notifying world.", condition_id, new_value); UpdateDBCondition(zone_short, instance_id, condition_id, new_value); @@ -989,7 +975,7 @@ void SpawnConditionManager::SetCondition(const char *zone_short, uint32 instance void SpawnConditionManager::ReloadEvent(uint32 event_id) { std::string zone_short_name; - _log(SPAWNS__CONDITIONS, "Requested to reload event %d from the database.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Requested to reload event %d from the database.", event_id); //first look for the event in our local event list std::vector::iterator cur,end; @@ -1002,7 +988,7 @@ void SpawnConditionManager::ReloadEvent(uint32 event_id) { //load the event into the old event slot if(!LoadDBEvent(event_id, cevent, zone_short_name)) { //unable to find the event in the database... - _log(SPAWNS__CONDITIONS, "Failed to reload event %d from the database.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Failed to reload event %d from the database.", event_id); return; } //sync up our nearest event @@ -1015,7 +1001,7 @@ void SpawnConditionManager::ReloadEvent(uint32 event_id) { SpawnEvent e; if(!LoadDBEvent(event_id, e, zone_short_name)) { //unable to find the event in the database... - _log(SPAWNS__CONDITIONS, "Failed to reload event %d from the database.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Failed to reload event %d from the database.", event_id); return; } @@ -1032,7 +1018,7 @@ void SpawnConditionManager::ReloadEvent(uint32 event_id) { void SpawnConditionManager::ToggleEvent(uint32 event_id, bool enabled, bool strict, bool reset_base) { - _log(SPAWNS__CONDITIONS, "Request to %s spawn event %d %sresetting trigger time", enabled?"enable":"disable", event_id, reset_base?"":"without "); + Log.Out(Logs::Detail, Logs::Spawns, "Request to %s spawn event %d %sresetting trigger time", enabled?"enable":"disable", event_id, reset_base?"":"without "); //first look for the event in our local event list std::vector::iterator cur,end; @@ -1047,13 +1033,13 @@ void SpawnConditionManager::ToggleEvent(uint32 event_id, bool enabled, bool stri cevent.enabled = enabled; cevent.strict = strict; if(reset_base) { - _log(SPAWNS__CONDITIONS, "Spawn event %d located in this zone. State set. Trigger time reset (period %d).", event_id, cevent.period); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn event %d located in this zone. State set. Trigger time reset (period %d).", event_id, cevent.period); //start with the time now zone->zone_time.getEQTimeOfDay(&cevent.next); //advance the next time by our period EQTime::AddMinutes(cevent.period, &cevent.next); } else { - _log(SPAWNS__CONDITIONS, "Spawn event %d located in this zone. State changed.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn event %d located in this zone. State changed.", event_id); } //save the event in the DB @@ -1062,7 +1048,7 @@ void SpawnConditionManager::ToggleEvent(uint32 event_id, bool enabled, bool stri //sync up our nearest event FindNearestEvent(); } else { - _log(SPAWNS__CONDITIONS, "Spawn event %d located in this zone but no change was needed.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn event %d located in this zone but no change was needed.", event_id); } //even if we dont change anything, we still found it return; @@ -1081,24 +1067,24 @@ void SpawnConditionManager::ToggleEvent(uint32 event_id, bool enabled, bool stri SpawnEvent e; std::string zone_short_name; if(!LoadDBEvent(event_id, e, zone_short_name)) { - _log(SPAWNS__CONDITIONS, "Unable to find spawn event %d in the database.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Unable to find spawn event %d in the database.", event_id); //unable to find the event in the database... return; } if(e.enabled == enabled && !reset_base) { - _log(SPAWNS__CONDITIONS, "Spawn event %d is not located in this zone but no change was needed.", event_id); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn event %d is not located in this zone but no change was needed.", event_id); return; //no changes. } e.enabled = enabled; if(reset_base) { - _log(SPAWNS__CONDITIONS, "Spawn event %d is in zone %s. State set. Trigger time reset (period %d). Notifying world.", event_id, zone_short_name.c_str(), e.period); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn event %d is in zone %s. State set. Trigger time reset (period %d). Notifying world.", event_id, zone_short_name.c_str(), e.period); //start with the time now zone->zone_time.getEQTimeOfDay(&e.next); //advance the next time by our period EQTime::AddMinutes(e.period, &e.next); } else { - _log(SPAWNS__CONDITIONS, "Spawn event %d is in zone %s. State changed. Notifying world.", event_id, zone_short_name.c_str(), e.period); + Log.Out(Logs::Detail, Logs::Spawns, "Spawn event %d is in zone %s. State changed. Notifying world.", event_id, zone_short_name.c_str(), e.period); } //save the event in the DB UpdateDBEvent(e); @@ -1123,7 +1109,7 @@ int16 SpawnConditionManager::GetCondition(const char *zone_short, uint32 instanc condi = spawn_conditions.find(condition_id); if(condi == spawn_conditions.end()) { - _log(SPAWNS__CONDITIONS, "Unable to find local condition %d in Get request.", condition_id); + Log.Out(Logs::Detail, Logs::Spawns, "Unable to find local condition %d in Get request.", condition_id); return(0); //unable to find the spawn condition } @@ -1138,12 +1124,12 @@ int16 SpawnConditionManager::GetCondition(const char *zone_short, uint32 instanc zone_short, instance_id, condition_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - _log(SPAWNS__CONDITIONS, "Unable to query remote condition %d from zone %s in Get request.", condition_id, zone_short); + Log.Out(Logs::Detail, Logs::Spawns, "Unable to query remote condition %d from zone %s in Get request.", condition_id, zone_short); return 0; //dunno a better thing to do... } if (results.RowCount() == 0) { - _log(SPAWNS__CONDITIONS, "Unable to load remote condition %d from zone %s in Get request.", condition_id, zone_short); + Log.Out(Logs::Detail, Logs::Spawns, "Unable to load remote condition %d from zone %s in Get request.", condition_id, zone_short); return 0; //dunno a better thing to do... } diff --git a/zone/spawngroup.cpp b/zone/spawngroup.cpp index bb9cb8abf..1661e0fe8 100644 --- a/zone/spawngroup.cpp +++ b/zone/spawngroup.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/string_util.h" #include "../common/types.h" @@ -51,7 +51,7 @@ SpawnGroup::SpawnGroup( uint32 in_id, char* name, int in_group_spawn_limit, floa uint32 SpawnGroup::GetNPCType() { #if EQDEBUG >= 10 - LogFile->write(EQEmuLog::Debug, "SpawnGroup[%08x]::GetNPCType()", (uint32) this); + Log.Out(Logs::General, Logs::None, "SpawnGroup[%08x]::GetNPCType()", (uint32) this); #endif int npcType = 0; int totalchance = 0; @@ -149,7 +149,6 @@ bool ZoneDatabase::LoadSpawnGroups(const char* zone_name, uint16 version, SpawnG "AND spawn2.version = %u and zone = '%s'", version, zone_name); auto results = QueryDatabase(query); if (!results.Success()) { - _log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query '%s' ", query.c_str()); return false; } @@ -168,7 +167,7 @@ bool ZoneDatabase::LoadSpawnGroups(const char* zone_name, uint16 version, SpawnG "AND zone = '%s'", zone_name); results = QueryDatabase(query); if (!results.Success()) { - _log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query '%'", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error2 in PopulateZoneLists query '%'", query.c_str()); return false; } @@ -177,7 +176,6 @@ bool ZoneDatabase::LoadSpawnGroups(const char* zone_name, uint16 version, SpawnG SpawnGroup *sg = spawn_group_list->GetSpawnGroup(atoi(row[0])); if (!sg) { - _log(ZONE__SPAWNS, "Error in LoadSpawnGroups %s ", query.c_str()); continue; } @@ -197,7 +195,7 @@ bool ZoneDatabase::LoadSpawnGroupsByID(int spawngroupid, SpawnGroupList* spawn_g "FROM spawngroup WHERE spawngroup.ID = '%i'", spawngroupid); auto results = QueryDatabase(query); if (!results.Success()) { - _log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query %s", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error2 in PopulateZoneLists query %s", query.c_str()); return false; } @@ -212,7 +210,7 @@ bool ZoneDatabase::LoadSpawnGroupsByID(int spawngroupid, SpawnGroupList* spawn_g "ORDER BY chance", spawngroupid); results = QueryDatabase(query); if (!results.Success()) { - _log(ZONE__SPAWNS, "Error3 in PopulateZoneLists query '%s'", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error3 in PopulateZoneLists query '%s'", query.c_str()); return false; } @@ -220,7 +218,6 @@ bool ZoneDatabase::LoadSpawnGroupsByID(int spawngroupid, SpawnGroupList* spawn_g SpawnEntry* newSpawnEntry = new SpawnEntry( atoi(row[1]), atoi(row[2]), row[3]?atoi(row[3]):0); SpawnGroup *sg = spawn_group_list->GetSpawnGroup(atoi(row[0])); if (!sg) { - _log(ZONE__SPAWNS, "Error in SpawngroupID: %s ", row[0]); continue; } diff --git a/zone/special_attacks.cpp b/zone/special_attacks.cpp index b3014c7d9..622b60b6d 100644 --- a/zone/special_attacks.cpp +++ b/zone/special_attacks.cpp @@ -464,7 +464,7 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type) break; } default: - mlog(CLIENT__ERROR, "Invalid special attack type %d attempted", unchecked_type); + Log.Out(Logs::Detail, Logs::Attack, "Invalid special attack type %d attempted", unchecked_type); return(1000); /* nice long delay for them, the caller depends on this! */ } @@ -683,7 +683,7 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { //make sure the attack and ranged timers are up //if the ranged timer is disabled, then they have no ranged weapon and shouldent be attacking anyhow if(!CanDoubleAttack && ((attack_timer.Enabled() && !attack_timer.Check(false)) || (ranged_timer.Enabled() && !ranged_timer.Check()))) { - mlog(COMBAT__RANGED, "Throwing attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); + Log.Out(Logs::Detail, Logs::Combat, "Throwing attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); // The server and client timers are not exact matches currently, so this would spam too often if enabled //Message(0, "Error: Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); return; @@ -695,12 +695,12 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { const ItemInst* Ammo = m_inv[MainAmmo]; if (!RangeWeapon || !RangeWeapon->IsType(ItemClassCommon)) { - mlog(COMBAT__RANGED, "Ranged attack canceled. Missing or invalid ranged weapon (%d) in slot %d", GetItemIDAt(MainRange), MainRange); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Missing or invalid ranged weapon (%d) in slot %d", GetItemIDAt(MainRange), MainRange); Message(0, "Error: Rangeweapon: GetItem(%i)==0, you have no bow!", GetItemIDAt(MainRange)); return; } if (!Ammo || !Ammo->IsType(ItemClassCommon)) { - mlog(COMBAT__RANGED, "Ranged attack canceled. Missing or invalid ammo item (%d) in slot %d", GetItemIDAt(MainAmmo), MainAmmo); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Missing or invalid ammo item (%d) in slot %d", GetItemIDAt(MainAmmo), MainAmmo); Message(0, "Error: Ammo: GetItem(%i)==0, you have no ammo!", GetItemIDAt(MainAmmo)); return; } @@ -709,17 +709,17 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { const Item_Struct* AmmoItem = Ammo->GetItem(); if(RangeItem->ItemType != ItemTypeBow) { - mlog(COMBAT__RANGED, "Ranged attack canceled. Ranged item is not a bow. type %d.", RangeItem->ItemType); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Ranged item is not a bow. type %d.", RangeItem->ItemType); Message(0, "Error: Rangeweapon: Item %d is not a bow.", RangeWeapon->GetID()); return; } if(AmmoItem->ItemType != ItemTypeArrow) { - mlog(COMBAT__RANGED, "Ranged attack canceled. Ammo item is not an arrow. type %d.", AmmoItem->ItemType); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Ammo item is not an arrow. type %d.", AmmoItem->ItemType); Message(0, "Error: Ammo: type %d != %d, you have the wrong type of ammo!", AmmoItem->ItemType, ItemTypeArrow); return; } - mlog(COMBAT__RANGED, "Shooting %s with bow %s (%d) and arrow %s (%d)", other->GetName(), RangeItem->Name, RangeItem->ID, AmmoItem->Name, AmmoItem->ID); + Log.Out(Logs::Detail, Logs::Combat, "Shooting %s with bow %s (%d) and arrow %s (%d)", other->GetName(), RangeItem->Name, RangeItem->ID, AmmoItem->Name, AmmoItem->ID); //look for ammo in inventory if we only have 1 left... if(Ammo->GetCharges() == 1) { @@ -746,7 +746,7 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { Ammo = baginst; ammo_slot = m_inv.CalcSlotId(r, i); found = true; - mlog(COMBAT__RANGED, "Using ammo from quiver stack at slot %d. %d in stack.", ammo_slot, Ammo->GetCharges()); + Log.Out(Logs::Detail, Logs::Combat, "Using ammo from quiver stack at slot %d. %d in stack.", ammo_slot, Ammo->GetCharges()); break; } } @@ -761,17 +761,17 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { if (aslot != INVALID_INDEX) { ammo_slot = aslot; Ammo = m_inv[aslot]; - mlog(COMBAT__RANGED, "Using ammo from inventory stack at slot %d. %d in stack.", ammo_slot, Ammo->GetCharges()); + Log.Out(Logs::Detail, Logs::Combat, "Using ammo from inventory stack at slot %d. %d in stack.", ammo_slot, Ammo->GetCharges()); } } } float range = RangeItem->Range + AmmoItem->Range + GetRangeDistTargetSizeMod(GetTarget()); - mlog(COMBAT__RANGED, "Calculated bow range to be %.1f", range); + Log.Out(Logs::Detail, Logs::Combat, "Calculated bow range to be %.1f", range); range *= range; float dist = ComparativeDistance(m_Position, other->GetPosition()); if(dist > range) { - mlog(COMBAT__RANGED, "Ranged attack out of range... client should catch this. (%f > %f).\n", dist, range); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack out of range... client should catch this. (%f > %f).\n", dist, range); Message_StringID(13,TARGET_OUT_OF_RANGE);//Client enforces range and sends the message, this is a backup just incase. return; } @@ -799,9 +799,9 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { if (!ChanceAvoidConsume || (ChanceAvoidConsume < 100 && zone->random.Int(0,99) > ChanceAvoidConsume)){ DeleteItemInInventory(ammo_slot, 1, true); - mlog(COMBAT__RANGED, "Consumed one arrow from slot %d", ammo_slot); + Log.Out(Logs::Detail, Logs::Combat, "Consumed one arrow from slot %d", ammo_slot); } else { - mlog(COMBAT__RANGED, "Endless Quiver prevented ammo consumption."); + Log.Out(Logs::Detail, Logs::Combat, "Endless Quiver prevented ammo consumption."); } CheckIncreaseSkill(SkillArchery, GetTarget(), -15); @@ -873,7 +873,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite SendItemAnimation(other, AmmoItem, SkillArchery); if (ProjectileMiss || (!ProjectileImpact && !other->CheckHitChance(this, SkillArchery, MainPrimary, chance_mod))) { - mlog(COMBAT__RANGED, "Ranged attack missed %s.", other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack missed %s.", other->GetName()); if (LaunchProjectile){ TryProjectileAttack(other, AmmoItem, SkillArchery, 0, RangeWeapon, Ammo, AmmoSlot, speed); @@ -882,7 +882,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite else other->Damage(this, 0, SPELL_UNKNOWN, SkillArchery); } else { - mlog(COMBAT__RANGED, "Ranged attack hit %s.", other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack hit %s.", other->GetName()); bool HeadShot = false; uint32 HeadShot_Dmg = TryHeadShot(other, SkillArchery); @@ -923,7 +923,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite MaxDmg += MaxDmg*bonusArcheryDamageModifier / 100; - mlog(COMBAT__RANGED, "Bow DMG %d, Arrow DMG %d, Max Damage %d.", WDmg, ADmg, MaxDmg); + Log.Out(Logs::Detail, Logs::Combat, "Bow DMG %d, Arrow DMG %d, Max Damage %d.", WDmg, ADmg, MaxDmg); bool dobonus = false; if(GetClass() == RANGER && GetLevel() > 50){ @@ -944,7 +944,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite hate *= 2; MaxDmg = mod_archery_bonus_damage(MaxDmg, RangeWeapon); - mlog(COMBAT__RANGED, "Ranger. Double damage success roll, doubling damage to %d", MaxDmg); + Log.Out(Logs::Detail, Logs::Combat, "Ranger. Double damage success roll, doubling damage to %d", MaxDmg); Message_StringID(MT_CritMelee, BOW_DOUBLE_DAMAGE); } } @@ -1192,7 +1192,7 @@ void NPC::RangedAttack(Mob* other) //make sure the attack and ranged timers are up //if the ranged timer is disabled, then they have no ranged weapon and shouldent be attacking anyhow if((attack_timer.Enabled() && !attack_timer.Check(false)) || (ranged_timer.Enabled() && !ranged_timer.Check())){ - mlog(COMBAT__RANGED, "Archery canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); + Log.Out(Logs::Detail, Logs::Combat, "Archery canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); return; } @@ -1361,7 +1361,7 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 //make sure the attack and ranged timers are up //if the ranged timer is disabled, then they have no ranged weapon and shouldent be attacking anyhow if((!CanDoubleAttack && (attack_timer.Enabled() && !attack_timer.Check(false)) || (ranged_timer.Enabled() && !ranged_timer.Check()))) { - mlog(COMBAT__RANGED, "Throwing attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); + Log.Out(Logs::Detail, Logs::Combat, "Throwing attack canceled. Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); // The server and client timers are not exact matches currently, so this would spam too often if enabled //Message(0, "Error: Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); return; @@ -1371,19 +1371,19 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 const ItemInst* RangeWeapon = m_inv[MainRange]; if (!RangeWeapon || !RangeWeapon->IsType(ItemClassCommon)) { - mlog(COMBAT__RANGED, "Ranged attack canceled. Missing or invalid ranged weapon (%d) in slot %d", GetItemIDAt(MainRange), MainRange); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Missing or invalid ranged weapon (%d) in slot %d", GetItemIDAt(MainRange), MainRange); Message(0, "Error: Rangeweapon: GetItem(%i)==0, you have nothing to throw!", GetItemIDAt(MainRange)); return; } const Item_Struct* item = RangeWeapon->GetItem(); if(item->ItemType != ItemTypeLargeThrowing && item->ItemType != ItemTypeSmallThrowing) { - mlog(COMBAT__RANGED, "Ranged attack canceled. Ranged item %d is not a throwing weapon. type %d.", item->ItemType); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Ranged item %d is not a throwing weapon. type %d.", item->ItemType); Message(0, "Error: Rangeweapon: GetItem(%i)==0, you have nothing useful to throw!", GetItemIDAt(MainRange)); return; } - mlog(COMBAT__RANGED, "Throwing %s (%d) at %s", item->Name, item->ID, other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Throwing %s (%d) at %s", item->Name, item->ID, other->GetName()); if(RangeWeapon->GetCharges() == 1) { //first check ammo @@ -1392,7 +1392,7 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 //more in the ammo slot, use it RangeWeapon = AmmoItem; ammo_slot = MainAmmo; - mlog(COMBAT__RANGED, "Using ammo from ammo slot, stack at slot %d. %d in stack.", ammo_slot, RangeWeapon->GetCharges()); + Log.Out(Logs::Detail, Logs::Combat, "Using ammo from ammo slot, stack at slot %d. %d in stack.", ammo_slot, RangeWeapon->GetCharges()); } else { //look through our inventory for more int32 aslot = m_inv.HasItem(item->ID, 1, invWherePersonal); @@ -1400,17 +1400,17 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 //the item wont change, but the instance does, not that it matters ammo_slot = aslot; RangeWeapon = m_inv[aslot]; - mlog(COMBAT__RANGED, "Using ammo from inventory slot, stack at slot %d. %d in stack.", ammo_slot, RangeWeapon->GetCharges()); + Log.Out(Logs::Detail, Logs::Combat, "Using ammo from inventory slot, stack at slot %d. %d in stack.", ammo_slot, RangeWeapon->GetCharges()); } } } float range = item->Range + GetRangeDistTargetSizeMod(other); - mlog(COMBAT__RANGED, "Calculated bow range to be %.1f", range); + Log.Out(Logs::Detail, Logs::Combat, "Calculated bow range to be %.1f", range); range *= range; float dist = ComparativeDistance(m_Position, other->GetPosition()); if(dist > range) { - mlog(COMBAT__RANGED, "Throwing attack out of range... client should catch this. (%f > %f).\n", dist, range); + Log.Out(Logs::Detail, Logs::Combat, "Throwing attack out of range... client should catch this. (%f > %f).\n", dist, range); Message_StringID(13,TARGET_OUT_OF_RANGE);//Client enforces range and sends the message, this is a backup just incase. return; } @@ -1489,7 +1489,7 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite SendItemAnimation(other, AmmoItem, SkillThrowing); if (ProjectileMiss || (!ProjectileImpact && !other->CheckHitChance(this, SkillThrowing, MainPrimary, chance_mod))){ - mlog(COMBAT__RANGED, "Ranged attack missed %s.", other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Ranged attack missed %s.", other->GetName()); if (LaunchProjectile){ TryProjectileAttack(other, AmmoItem, SkillThrowing, 0, RangeWeapon, nullptr, AmmoSlot, speed); return; @@ -1497,7 +1497,7 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite else other->Damage(this, 0, SPELL_UNKNOWN, SkillThrowing); } else { - mlog(COMBAT__RANGED, "Throwing attack hit %s.", other->GetName()); + Log.Out(Logs::Detail, Logs::Combat, "Throwing attack hit %s.", other->GetName()); int16 WDmg = 0; @@ -1533,7 +1533,7 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite entity_list.MessageClose_StringID(this, false, 200, MT_CritMelee, ASSASSINATES, GetName()); } - mlog(COMBAT__RANGED, "Item DMG %d. Max Damage %d. Hit for damage %d", WDmg, MaxDmg, TotalDmg); + Log.Out(Logs::Detail, Logs::Combat, "Item DMG %d. Max Damage %d. Hit for damage %d", WDmg, MaxDmg, TotalDmg); if (!Assassinate_Dmg) other->AvoidDamage(this, TotalDmg, false); //CanRiposte=false - Can not riposte throw attacks. diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index bab750edf..b05dfeacd 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -16,9 +16,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "../common/eqemu_logsys.h" #include "../common/bodytypes.h" #include "../common/classes.h" -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/item.h" #include "../common/rulesys.h" #include "../common/skills.h" @@ -475,7 +476,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) if(!target_zone) { #ifdef SPELL_EFFECT_SPAM - LogFile->write(EQEmuLog::Debug, "Succor/Evacuation Spell In Same Zone."); + Log.Out(Logs::General, Logs::None, "Succor/Evacuation Spell In Same Zone."); #endif if(IsClient()) CastToClient()->MovePC(zone->GetZoneID(), zone->GetInstanceID(), x, y, z, heading, 0, EvacToSafeCoords); @@ -484,7 +485,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) } else { #ifdef SPELL_EFFECT_SPAM - LogFile->write(EQEmuLog::Debug, "Succor/Evacuation Spell To Another Zone."); + Log.Out(Logs::General, Logs::None, "Succor/Evacuation Spell To Another Zone."); #endif if(IsClient()) CastToClient()->MovePC(target_zone, x, y, z, heading); @@ -710,7 +711,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) stun_resist += aabonuses.StunResist; if (stun_resist <= 0 || zone->random.Int(0,99) >= stun_resist) { - mlog(COMBAT__HITS, "Stunned. We had %d percent resist chance.", stun_resist); + Log.Out(Logs::Detail, Logs::Combat, "Stunned. We had %d percent resist chance.", stun_resist); if (caster->IsClient()) effect_value += effect_value*caster->GetFocusEffect(focusFcStunTimeMod, spell_id)/100; @@ -720,7 +721,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) if (IsClient()) Message_StringID(MT_Stun, SHAKE_OFF_STUN); - mlog(COMBAT__HITS, "Stun Resisted. We had %d percent resist chance.", stun_resist); + Log.Out(Logs::Detail, Logs::Combat, "Stun Resisted. We had %d percent resist chance.", stun_resist); } } break; @@ -1648,7 +1649,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) if (IsCorpse() && CastToCorpse()->IsPlayerCorpse()) { if(caster) - mlog(SPELLS__REZ, " corpse being rezzed using spell %i by %s", + Log.Out(Logs::Detail, Logs::Spells, " corpse being rezzed using spell %i by %s", spell_id, caster->GetName()); CastToCorpse()->CastRezz(spell_id, caster); @@ -1771,7 +1772,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) } else { Message_StringID(4, TARGET_NOT_FOUND); - LogFile->write(EQEmuLog::Error, "%s attempted to cast spell id %u with spell effect SE_SummonCorpse, but could not cast target into a Client object.", GetCleanName(), spell_id); + Log.Out(Logs::General, Logs::Error, "%s attempted to cast spell id %u with spell effect SE_SummonCorpse, but could not cast target into a Client object.", GetCleanName(), spell_id); } } @@ -3064,7 +3065,7 @@ int Mob::CalcSpellEffectValue(uint16 spell_id, int effect_id, int caster_level, int mod = caster->GetInstrumentMod(spell_id); mod = ApplySpellEffectiveness(caster, spell_id, mod, true); effect_value = effect_value * mod / 10; - mlog(SPELLS__BARDS, "Effect value %d altered with bard modifier of %d to yeild %d", oval, mod, effect_value); + Log.Out(Logs::Detail, Logs::Spells, "Effect value %d altered with bard modifier of %d to yeild %d", oval, mod, effect_value); } effect_value = mod_effect_value(effect_value, spell_id, spells[spell_id].effectid[effect_id], caster); @@ -3126,7 +3127,7 @@ snare has both of them negative, yet their range should work the same: updownsign = 1; } - mlog(SPELLS__EFFECT_VALUES, "CSEV: spell %d, formula %d, base %d, max %d, lvl %d. Up/Down %d", + Log.Out(Logs::Detail, Logs::Spells, "CSEV: spell %d, formula %d, base %d, max %d, lvl %d. Up/Down %d", spell_id, formula, base, max, caster_level, updownsign); switch(formula) @@ -3325,7 +3326,7 @@ snare has both of them negative, yet their range should work the same: result = ubase * (caster_level * (formula - 2000) + 1); } else - LogFile->write(EQEmuLog::Debug, "Unknown spell effect value forumula %d", formula); + Log.Out(Logs::General, Logs::None, "Unknown spell effect value forumula %d", formula); } } @@ -3350,7 +3351,7 @@ snare has both of them negative, yet their range should work the same: if (base < 0 && result > 0) result *= -1; - mlog(SPELLS__EFFECT_VALUES, "Result: %d (orig %d), cap %d %s", result, oresult, max, (base < 0 && result > 0)?"Inverted due to negative base":""); + Log.Out(Logs::Detail, Logs::Spells, "Result: %d (orig %d), cap %d %s", result, oresult, max, (base < 0 && result > 0)?"Inverted due to negative base":""); return result; } @@ -3382,18 +3383,18 @@ void Mob::BuffProcess() IsMezSpell(buffs[buffs_i].spellid) || IsBlindSpell(buffs[buffs_i].spellid)) { - mlog(SPELLS__BUFFS, "Buff %d in slot %d has expired. Fading.", buffs[buffs_i].spellid, buffs_i); + Log.Out(Logs::Detail, Logs::Spells, "Buff %d in slot %d has expired. Fading.", buffs[buffs_i].spellid, buffs_i); BuffFadeBySlot(buffs_i); } } else if (buffs[buffs_i].ticsremaining < 0) { - mlog(SPELLS__BUFFS, "Buff %d in slot %d has expired. Fading.", buffs[buffs_i].spellid, buffs_i); + Log.Out(Logs::Detail, Logs::Spells, "Buff %d in slot %d has expired. Fading.", buffs[buffs_i].spellid, buffs_i); BuffFadeBySlot(buffs_i); } else { - mlog(SPELLS__BUFFS, "Buff %d in slot %d has %d tics remaining.", buffs[buffs_i].spellid, buffs_i, buffs[buffs_i].ticsremaining); + Log.Out(Logs::Detail, Logs::Spells, "Buff %d in slot %d has %d tics remaining.", buffs[buffs_i].spellid, buffs_i, buffs[buffs_i].ticsremaining); } } else if(IsClient() && !(CastToClient()->GetClientVersionBit() & BIT_SoFAndLater)) @@ -3760,7 +3761,7 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses) if (IsClient() && !CastToClient()->IsDead()) CastToClient()->MakeBuffFadePacket(buffs[slot].spellid, slot); - mlog(SPELLS__BUFFS, "Fading buff %d from slot %d", buffs[slot].spellid, slot); + Log.Out(Logs::Detail, Logs::Spells, "Fading buff %d from slot %d", buffs[slot].spellid, slot); if(spells[buffs[slot].spellid].viral_targets > 0) { bool last_virus = true; @@ -4818,7 +4819,7 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo return 0; break; default: - LogFile->write(EQEmuLog::Normal, "CalcFocusEffect: unknown limit spelltype %d", focus_spell.base[i]); + Log.Out(Logs::General, Logs::Normal, "CalcFocusEffect: unknown limit spelltype %d", focus_spell.base[i]); } break; @@ -5157,7 +5158,7 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo //this spits up a lot of garbage when calculating spell focuses //since they have all kinds of extra effects on them. default: - LogFile->write(EQEmuLog::Normal, "CalcFocusEffect: unknown effectid %d", focus_spell.effectid[i]); + Log.Out(Logs::General, Logs::Normal, "CalcFocusEffect: unknown effectid %d", focus_spell.effectid[i]); #endif } diff --git a/zone/spells.cpp b/zone/spells.cpp index ac111a006..ee8723f9b 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -68,7 +68,8 @@ Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org) #include "../common/bodytypes.h" #include "../common/classes.h" -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/item.h" #include "../common/rulesys.h" #include "../common/skills.h" @@ -146,7 +147,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, int32 cast_time, int32 mana_cost, uint32* oSpellWillFinish, uint32 item_slot, uint32 timer, uint32 timer_duration, uint32 type, int16 *resist_adjust) { - mlog(SPELLS__CASTING, "CastSpell called for spell %s (%d) on entity %d, slot %d, time %d, mana %d, from item slot %d", + Log.Out(Logs::Detail, Logs::Spells, "CastSpell called for spell %s (%d) on entity %d, slot %d, time %d, mana %d, from item slot %d", spells[spell_id].name, spell_id, target_id, slot, cast_time, mana_cost, (item_slot==0xFFFFFFFF)?999:item_slot); if(casting_spell_id == spell_id) @@ -165,7 +166,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, (IsAmnesiad() && IsDiscipline(spell_id)) ) { - mlog(SPELLS__CASTING_ERR, "Spell casting canceled: not able to cast now. Valid? %d, casting %d, waiting? %d, spellend? %d, stunned? %d, feared? %d, mezed? %d, silenced? %d, amnesiad? %d", + Log.Out(Logs::Detail, Logs::Spells, "Spell casting canceled: not able to cast now. Valid? %d, casting %d, waiting? %d, spellend? %d, stunned? %d, feared? %d, mezed? %d, silenced? %d, amnesiad? %d", IsValidSpell(spell_id), casting_spell_id, delaytimer, spellend_timer.Enabled(), IsStunned(), IsFeared(), IsMezzed(), IsSilenced(), IsAmnesiad() ); if(IsSilenced() && !IsDiscipline(spell_id)) Message_StringID(13, SILENCED_STRING); @@ -203,7 +204,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, //cannot cast under divine aura if(DivineAura()) { - mlog(SPELLS__CASTING_ERR, "Spell casting canceled: cannot cast while Divine Aura is in effect."); + Log.Out(Logs::Detail, Logs::Spells, "Spell casting canceled: cannot cast while Divine Aura is in effect."); InterruptSpell(173, 0x121, false); return(false); } @@ -233,7 +234,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, InterruptSpell(fizzle_msg, 0x121, spell_id); uint32 use_mana = ((spells[spell_id].mana) / 4); - mlog(SPELLS__CASTING_ERR, "Spell casting canceled: fizzled. %d mana has been consumed", use_mana); + Log.Out(Logs::Detail, Logs::Spells, "Spell casting canceled: fizzled. %d mana has been consumed", use_mana); // fizzle 1/4 the mana away SetMana(GetMana() - use_mana); @@ -242,7 +243,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, } if (HasActiveSong() && IsBardSong(spell_id)) { - mlog(SPELLS__BARDS, "Casting a new song while singing a song. Killing old song %d.", bardsong); + Log.Out(Logs::Detail, Logs::Spells, "Casting a new song while singing a song. Killing old song %d.", bardsong); //Note: this does NOT tell the client _StopSong(); } @@ -257,7 +258,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, if ((itm->GetItem()->Click.Type == ET_EquipClick) && !(itm->GetItem()->Classes & bitmask)) { if (CastToClient()->GetClientVersion() < ClientVersion::SoF) { // They are casting a spell from an item that requires equipping but shouldn't let them equip it - LogFile->write(EQEmuLog::Error, "HACKER: %s (account: %s) attempted to click an equip-only effect on item %s (id: %d) which they shouldn't be able to equip!", + Log.Out(Logs::General, Logs::Error, "HACKER: %s (account: %s) attempted to click an equip-only effect on item %s (id: %d) which they shouldn't be able to equip!", CastToClient()->GetCleanName(), CastToClient()->AccountName(), itm->GetItem()->Name, itm->GetItem()->ID); database.SetHackerFlag(CastToClient()->AccountName(), CastToClient()->GetCleanName(), "Clicking equip-only item with an invalid class"); } @@ -269,7 +270,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, if ((itm->GetItem()->Click.Type == ET_ClickEffect2) && !(itm->GetItem()->Classes & bitmask)) { if (CastToClient()->GetClientVersion() < ClientVersion::SoF) { // They are casting a spell from an item that they don't meet the race/class requirements to cast - LogFile->write(EQEmuLog::Error, "HACKER: %s (account: %s) attempted to click a race/class restricted effect on item %s (id: %d) which they shouldn't be able to click!", + Log.Out(Logs::General, Logs::Error, "HACKER: %s (account: %s) attempted to click a race/class restricted effect on item %s (id: %d) which they shouldn't be able to click!", CastToClient()->GetCleanName(), CastToClient()->AccountName(), itm->GetItem()->Name, itm->GetItem()->ID); database.SetHackerFlag(CastToClient()->AccountName(), CastToClient()->GetCleanName(), "Clicking race/class restricted item with an invalid class"); } @@ -290,7 +291,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, uint16 slot, if( itm && (itm->GetItem()->Click.Type == ET_EquipClick) && !(item_slot <= MainAmmo || item_slot == MainPowerSource) ){ if (CastToClient()->GetClientVersion() < ClientVersion::SoF) { // They are attempting to cast a must equip clicky without having it equipped - LogFile->write(EQEmuLog::Error, "HACKER: %s (account: %s) attempted to click an equip-only effect on item %s (id: %d) without equiping it!", CastToClient()->GetCleanName(), CastToClient()->AccountName(), itm->GetItem()->Name, itm->GetItem()->ID); + Log.Out(Logs::General, Logs::Error, "HACKER: %s (account: %s) attempted to click an equip-only effect on item %s (id: %d) without equiping it!", CastToClient()->GetCleanName(), CastToClient()->AccountName(), itm->GetItem()->Name, itm->GetItem()->ID); database.SetHackerFlag(CastToClient()->AccountName(), CastToClient()->GetCleanName(), "Clicking equip-only item without equiping it"); } else { @@ -348,7 +349,7 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, const SPDat_Spell_Struct &spell = spells[spell_id]; - mlog(SPELLS__CASTING, "DoCastSpell called for spell %s (%d) on entity %d, slot %d, time %d, mana %d, from item %d", + Log.Out(Logs::Detail, Logs::Spells, "DoCastSpell called for spell %s (%d) on entity %d, slot %d, time %d, mana %d, from item %d", spell.name, spell_id, target_id, slot, cast_time, mana_cost, item_slot==0xFFFFFFFF?999:item_slot); casting_spell_id = spell_id; @@ -362,7 +363,7 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, casting_spell_type = type; SaveSpellLoc(); - mlog(SPELLS__CASTING, "Casting %d Started at (%.3f,%.3f,%.3f)", spell_id, m_SpellLocation.m_X, m_SpellLocation.m_Y, m_SpellLocation.m_Z); + Log.Out(Logs::Detail, Logs::Spells, "Casting %d Started at (%.3f,%.3f,%.3f)", spell_id, m_SpellLocation.m_X, m_SpellLocation.m_Y, m_SpellLocation.m_Z); // if this spell doesn't require a target, or if it's an optional target // and a target wasn't provided, then it's us; unless TGB is on and this @@ -374,7 +375,7 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, spell.targettype == ST_Beam || spell.targettype == ST_TargetOptional) && target_id == 0) { - mlog(SPELLS__CASTING, "Spell %d auto-targeted the caster. Group? %d, target type %d", spell_id, IsGroupSpell(spell_id), spell.targettype); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d auto-targeted the caster. Group? %d, target type %d", spell_id, IsGroupSpell(spell_id), spell.targettype); target_id = GetID(); } @@ -391,7 +392,7 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, // we checked for spells not requiring targets above if(target_id == 0) { - mlog(SPELLS__CASTING_ERR, "Spell Error: no target. spell=%d\n", GetName(), spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell Error: no target. spell=%d\n", GetName(), spell_id); if(IsClient()) { //clients produce messages... npcs should not for this case Message_StringID(13, SPELL_NEED_TAR); @@ -429,7 +430,7 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, { mana_cost = 0; } else { - mlog(SPELLS__CASTING_ERR, "Spell Error not enough mana spell=%d mymana=%d cost=%d\n", GetName(), spell_id, my_curmana, mana_cost); + Log.Out(Logs::Detail, Logs::Spells, "Spell Error not enough mana spell=%d mymana=%d cost=%d\n", GetName(), spell_id, my_curmana, mana_cost); if(IsClient()) { //clients produce messages... npcs should not for this case Message_StringID(13, INSUFFICIENT_MANA); @@ -450,7 +451,7 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, casting_spell_resist_adjust = resist_adjust; - mlog(SPELLS__CASTING, "Spell %d: Casting time %d (orig %d), mana cost %d", + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Casting time %d (orig %d), mana cost %d", spell_id, cast_time, orgcasttime, mana_cost); // cast time is 0, just finish it right now and be done with it @@ -516,7 +517,7 @@ bool Mob::DoCastingChecks() if (RuleB(Spells, BuffLevelRestrictions)) { // casting_spell_targetid is guaranteed to be what we went, check for ST_Self for now should work though if (spell_target && spells[spell_id].targettype != ST_Self && !spell_target->CheckSpellLevelRestriction(spell_id)) { - mlog(SPELLS__BUFFS, "Spell %d failed: recipient did not meet the level restrictions", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d failed: recipient did not meet the level restrictions", spell_id); if (!IsBardSong(spell_id)) Message_StringID(MT_SpellFailure, SPELL_TOO_POWERFUL); return false; @@ -755,7 +756,7 @@ bool Client::CheckFizzle(uint16 spell_id) float fizzle_roll = zone->random.Real(0, 100); - mlog(SPELLS__CASTING, "Check Fizzle %s spell %d fizzlechance: %0.2f%% diff: %0.2f roll: %0.2f", GetName(), spell_id, fizzlechance, diff, fizzle_roll); + Log.Out(Logs::Detail, Logs::Spells, "Check Fizzle %s spell %d fizzlechance: %0.2f%% diff: %0.2f roll: %0.2f", GetName(), spell_id, fizzlechance, diff, fizzle_roll); if(fizzle_roll > fizzlechance) return(true); @@ -815,7 +816,7 @@ void Mob::InterruptSpell(uint16 message, uint16 color, uint16 spellid) ZeroCastingVars(); // resets all the state keeping stuff - mlog(SPELLS__CASTING, "Spell %d has been interrupted.", spellid); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d has been interrupted.", spellid); if(!spellid) return; @@ -892,7 +893,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, if(!CastToClient()->GetPTimers().Expired(&database, pTimerSpellStart + spell_id, false)) { //should we issue a message or send them a spell gem packet? Message_StringID(13, SPELL_RECAST); - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: spell reuse timer not expired", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: spell reuse timer not expired", spell_id); InterruptSpell(); return; } @@ -906,7 +907,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, { if(!CastToClient()->GetPTimers().Expired(&database, (pTimerItemStart + itm->GetItem()->RecastType), false)) { Message_StringID(13, SPELL_RECAST); - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: item spell reuse timer not expired", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: item spell reuse timer not expired", spell_id); InterruptSpell(); return; } @@ -915,7 +916,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, if(!IsValidSpell(spell_id)) { - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: invalid spell id", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: invalid spell id", spell_id); InterruptSpell(); return; } @@ -926,7 +927,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, { if(delaytimer) { - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: recast too quickly", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: recast too quickly", spell_id); Message(13, "You are unable to focus."); InterruptSpell(); return; @@ -936,7 +937,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, // make sure they aren't somehow casting 2 timed spells at once if (casting_spell_id != spell_id) { - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: already casting", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: already casting", spell_id); Message_StringID(13,ALREADY_CASTING); InterruptSpell(); return; @@ -951,7 +952,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, { if (IsBardSong(spell_id)) { if(spells[spell_id].buffduration == 0xFFFF || spells[spell_id].recast_time != 0) { - mlog(SPELLS__BARDS, "Bard song %d not applying bard logic because duration or recast is wrong: dur=%d, recast=%d", spells[spell_id].buffduration, spells[spell_id].recast_time); + Log.Out(Logs::Detail, Logs::Spells, "Bard song %d not applying bard logic because duration or recast is wrong: dur=%d, recast=%d", spells[spell_id].buffduration, spells[spell_id].recast_time); } else { bardsong = spell_id; bardsong_slot = slot; @@ -961,7 +962,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, else bardsong_target_id = spell_target->GetID(); bardsong_timer.Start(6000); - mlog(SPELLS__BARDS, "Bard song %d started: slot %d, target id %d", bardsong, bardsong_slot, bardsong_target_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard song %d started: slot %d, target id %d", bardsong, bardsong_slot, bardsong_target_id); bard_song_mode = true; } } @@ -1040,10 +1041,10 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, } } - mlog(SPELLS__CASTING, "Checking Interruption: spell x: %f spell y: %f cur x: %f cur y: %f channelchance %f channeling skill %d\n", GetSpellX(), GetSpellY(), GetX(), GetY(), channelchance, GetSkill(SkillChanneling)); + Log.Out(Logs::Detail, Logs::Spells, "Checking Interruption: spell x: %f spell y: %f cur x: %f cur y: %f channelchance %f channeling skill %d\n", GetSpellX(), GetSpellY(), GetX(), GetY(), channelchance, GetSkill(SkillChanneling)); if(!spells[spell_id].uninterruptable && zone->random.Real(0, 100) > channelchance) { - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: interrupted.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: interrupted.", spell_id); InterruptSpell(); return; } @@ -1059,10 +1060,10 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, if(IsClient()) { int reg_focus = CastToClient()->GetFocusEffect(focusReagentCost,spell_id);//Client only if(zone->random.Roll(reg_focus)) { - mlog(SPELLS__CASTING, "Spell %d: Reagent focus item prevented reagent consumption (%d chance)", spell_id, reg_focus); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Reagent focus item prevented reagent consumption (%d chance)", spell_id, reg_focus); } else { if(reg_focus > 0) - mlog(SPELLS__CASTING, "Spell %d: Reagent focus item failed to prevent reagent consumption (%d chance)", spell_id, reg_focus); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Reagent focus item failed to prevent reagent consumption (%d chance)", spell_id, reg_focus); Client *c = this->CastToClient(); int component, component_count, inv_slot_id; bool missingreags = false; @@ -1115,11 +1116,11 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, break; default: // some non-instrument component. Let it go, but record it in the log - mlog(SPELLS__CASTING_ERR, "Something odd happened: Song %d required component %s", spell_id, component); + Log.Out(Logs::Detail, Logs::Spells, "Something odd happened: Song %d required component %s", spell_id, component); } if(!HasInstrument) { // if the instrument is missing, log it and interrupt the song - mlog(SPELLS__CASTING_ERR, "Song %d: Canceled. Missing required instrument %s", spell_id, component); + Log.Out(Logs::Detail, Logs::Spells, "Song %d: Canceled. Missing required instrument %s", spell_id, component); if(c->GetGM()) c->Message(0, "Your GM status allows you to finish casting even though you're missing a required instrument."); else { @@ -1142,12 +1143,12 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, const Item_Struct *item = database.GetItem(component); if(item) { c->Message_StringID(13, MISSING_SPELL_COMP_ITEM, item->Name); - mlog(SPELLS__CASTING_ERR, "Spell %d: Canceled. Missing required reagent %s (%d)", spell_id, item->Name, component); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Canceled. Missing required reagent %s (%d)", spell_id, item->Name, component); } else { char TempItemName[64]; strcpy((char*)&TempItemName, "UNKNOWN"); - mlog(SPELLS__CASTING_ERR, "Spell %d: Canceled. Missing required reagent %s (%d)", spell_id, TempItemName, component); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Canceled. Missing required reagent %s (%d)", spell_id, TempItemName, component); } } } // end bard/not bard ifs @@ -1168,7 +1169,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, if (component == -1) continue; component_count = spells[spell_id].component_counts[t_count]; - mlog(SPELLS__CASTING_ERR, "Spell %d: Consuming %d of spell component item id %d", spell_id, component, component_count); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Consuming %d of spell component item id %d", spell_id, component, component_count); // Components found, Deleting // now we go looking for and deleting the items one by one for(int s = 0; s < component_count; s++) @@ -1233,7 +1234,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, { if(!CastToClient()->GetPTimers().Expired(&database, (pTimerItemStart + recasttype), false)) { Message_StringID(13, SPELL_RECAST); - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: item spell reuse timer not expired", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: item spell reuse timer not expired", spell_id); InterruptSpell(); return; } @@ -1252,15 +1253,15 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, if(fromaug) { charges = -1; } //Don't destroy the parent item if(charges > -1) { // charged item, expend a charge - mlog(SPELLS__CASTING, "Spell %d: Consuming a charge from item %s (%d) which had %d/%d charges.", spell_id, inst->GetItem()->Name, inst->GetItem()->ID, inst->GetCharges(), inst->GetItem()->MaxCharges); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Consuming a charge from item %s (%d) which had %d/%d charges.", spell_id, inst->GetItem()->Name, inst->GetItem()->ID, inst->GetCharges(), inst->GetItem()->MaxCharges); DeleteChargeFromSlot = inventory_slot; } else { - mlog(SPELLS__CASTING, "Spell %d: Cast from unlimited charge item %s (%d) (%d charges)", spell_id, inst->GetItem()->Name, inst->GetItem()->ID, inst->GetItem()->MaxCharges); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Cast from unlimited charge item %s (%d) (%d charges)", spell_id, inst->GetItem()->Name, inst->GetItem()->ID, inst->GetItem()->MaxCharges); } } else { - mlog(SPELLS__CASTING_ERR, "Item used to cast spell %d was missing from inventory slot %d after casting!", spell_id, inventory_slot); + Log.Out(Logs::Detail, Logs::Spells, "Item used to cast spell %d was missing from inventory slot %d after casting!", spell_id, inventory_slot); Message(13, "Casting Error: Active casting item not found in inventory slot %i", inventory_slot); InterruptSpell(); return; @@ -1279,7 +1280,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, // we're done casting, now try to apply the spell if( !SpellFinished(spell_id, spell_target, slot, mana_used, inventory_slot, resist_adjust) ) { - mlog(SPELLS__CASTING_ERR, "Casting of %d canceled: SpellFinished returned false.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Casting of %d canceled: SpellFinished returned false.", spell_id); InterruptSpell(); return; } @@ -1308,7 +1309,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, this->CastToClient()->CheckSongSkillIncrease(spell_id); this->CastToClient()->MemorizeSpell(slot, spell_id, memSpellSpellbar); } - mlog(SPELLS__CASTING, "Bard song %d should be started", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard song %d should be started", spell_id); } else { @@ -1343,7 +1344,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, uint16 slot, delaytimer = true; spellend_timer.Start(400,true); - mlog(SPELLS__CASTING, "Spell casting of %d is finished.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell casting of %d is finished.", spell_id); } @@ -1390,7 +1391,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce && (IsGrouped() // still self only if not grouped || IsRaidGrouped()) && (HasProjectIllusion())){ - mlog(AA__MESSAGE, "Project Illusion overwrote target caster: %s spell id: %d was ON", GetName(), spell_id); + Log.Out(Logs::Detail, Logs::AA, "Project Illusion overwrote target caster: %s spell id: %d was ON", GetName(), spell_id); targetType = ST_GroupClientAndPet; } @@ -1473,7 +1474,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce ) { //invalid target - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target of body type %d (undead)", spell_id, spell_target->GetBodyType()); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (undead)", spell_id, spell_target->GetBodyType()); Message_StringID(13,SPELL_NEED_TAR); return false; } @@ -1486,7 +1487,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce if(!spell_target || (body_type != BT_Summoned && body_type != BT_Summoned2 && body_type != BT_Summoned3)) { //invalid target - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target of body type %d (summoned)", spell_id, body_type); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (summoned)", spell_id, body_type); Message_StringID(13,SPELL_NEED_TAR); return false; } @@ -1500,7 +1501,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce if(!spell_target || (spell_target != GetPet()) || (body_type != BT_Summoned && body_type != BT_Summoned2 && body_type != BT_Summoned3 && body_type != BT_Animal)) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target of body type %d (summoned pet)", + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (summoned pet)", spell_id, body_type); Message_StringID(13, SPELL_NEED_TAR); @@ -1525,7 +1526,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce if(!spell_target || mob_body != target_bt) { //invalid target - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target of body type %d (want body Type %d)", spell_id, spell_target->GetBodyType(), target_bt); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (want body Type %d)", spell_id, spell_target->GetBodyType(), target_bt); if(!spell_target) Message_StringID(13,SPELL_NEED_TAR); else @@ -1543,7 +1544,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce { if(!spell_target) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (ldon object)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (ldon object)", spell_id); Message_StringID(13,SPELL_NEED_TAR); return false; } @@ -1551,14 +1552,14 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce { if(!spell_target->IsNPC()) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (normal)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (normal)", spell_id); Message_StringID(13,SPELL_NEED_TAR); return false; } if(spell_target->GetClass() != LDON_TREASURE) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (normal)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (normal)", spell_id); Message_StringID(13,SPELL_NEED_TAR); return false; } @@ -1567,7 +1568,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce if(!spell_target) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (normal)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (normal)", spell_id); Message_StringID(13,SPELL_NEED_TAR); return false; // can't cast these unless we have a target } @@ -1579,7 +1580,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce { if(!spell_target || !spell_target->IsPlayerCorpse()) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (corpse)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (corpse)", spell_id); uint32 message = ONLY_ON_CORPSES; if(!spell_target) message = SPELL_NEED_TAR; else if(!spell_target->IsCorpse()) message = ONLY_ON_CORPSES; @@ -1595,7 +1596,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce spell_target = GetPet(); if(!spell_target) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (no pet)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (no pet)", spell_id); Message_StringID(13,NO_PET); return false; // can't cast these unless we have a target } @@ -1665,7 +1666,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce { if(!spell_target) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (AOE)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (AOE)", spell_id); Message_StringID(13,SPELL_NEED_TAR); return false; } @@ -1702,7 +1703,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce { if(!spell_target) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: invalid target (Group Required: Single Target)", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target (Group Required: Single Target)", spell_id); Message_StringID(13,SPELL_NEED_TAR); return false; } @@ -1799,14 +1800,14 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce if(group_id_caster == 0 || group_id_target == 0) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: Attempted to cast a Single Target Group spell on a ungrouped member.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: Attempted to cast a Single Target Group spell on a ungrouped member.", spell_id); Message_StringID(13, TARGET_GROUP_MEMBER); return false; } if(group_id_caster != group_id_target) { - mlog(SPELLS__CASTING_ERR, "Spell %d canceled: Attempted to cast a Single Target Group spell on a ungrouped member.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: Attempted to cast a Single Target Group spell on a ungrouped member.", spell_id); Message_StringID(13, TARGET_GROUP_MEMBER); return false; } @@ -1877,7 +1878,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce default: { - mlog(SPELLS__CASTING_ERR, "I dont know Target Type: %d Spell: (%d) %s", spells[spell_id].targettype, spell_id, spells[spell_id].name); + Log.Out(Logs::Detail, Logs::Spells, "I dont know Target Type: %d Spell: (%d) %s", spells[spell_id].targettype, spell_id, spells[spell_id].name); Message(0, "I dont know Target Type: %d Spell: (%d) %s", spells[spell_id].targettype, spell_id, spells[spell_id].name); CastAction = CastActUnknown; break; @@ -1956,7 +1957,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 if(!DetermineSpellTargets(spell_id, spell_target, ae_center, CastAction)) return(false); - mlog(SPELLS__CASTING, "Spell %d: target type %d, target %s, AE center %s", spell_id, CastAction, spell_target?spell_target->GetName():"NONE", ae_center?ae_center->GetName():"NONE"); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: target type %d, target %s, AE center %s", spell_id, CastAction, spell_target?spell_target->GetName():"NONE", ae_center?ae_center->GetName():"NONE"); // if a spell has the AEDuration flag, it becomes an AE on target // spell that's recast every 2500 msec for AEDuration msec. There are @@ -1967,7 +1968,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 Mob *beacon_loc = spell_target ? spell_target : this; Beacon *beacon = new Beacon(beacon_loc, spells[spell_id].AEDuration); entity_list.AddBeacon(beacon); - mlog(SPELLS__CASTING, "Spell %d: AE duration beacon created, entity id %d", spell_id, beacon->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: AE duration beacon created, entity id %d", spell_id, beacon->GetName()); spell_target = nullptr; ae_center = beacon; CastAction = AECaster; @@ -1976,7 +1977,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 // check line of sight to target if it's a detrimental spell if(!spells[spell_id].npc_no_los && spell_target && IsDetrimentalSpell(spell_id) && !CheckLosFN(spell_target) && !IsHarmonySpell(spell_id) && spells[spell_id].targettype != ST_TargetOptional) { - mlog(SPELLS__CASTING, "Spell %d: cannot see target %s", spell_target->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: cannot see target %s", spell_target->GetName()); Message_StringID(13,CANT_SEE_TARGET); return false; } @@ -2007,13 +2008,13 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 float min_range2 = spells[spell_id].min_range * spells[spell_id].min_range; if(dist2 > range2) { //target is out of range. - mlog(SPELLS__CASTING, "Spell %d: Spell target is out of range (squared: %f > %f)", spell_id, dist2, range2); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Spell target is out of range (squared: %f > %f)", spell_id, dist2, range2); Message_StringID(13, TARGET_OUT_OF_RANGE); return(false); } else if (dist2 < min_range2){ //target is too close range. - mlog(SPELLS__CASTING, "Spell %d: Spell target is too close (squared: %f < %f)", spell_id, dist2, min_range2); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Spell target is too close (squared: %f < %f)", spell_id, dist2, min_range2); Message_StringID(13, TARGET_TOO_CLOSE); return(false); } @@ -2042,7 +2043,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 #endif //BOTS if(spell_target == nullptr) { - mlog(SPELLS__CASTING, "Spell %d: Targeted spell, but we have no target", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Targeted spell, but we have no target", spell_id); return(false); } if (isproc) { @@ -2066,11 +2067,11 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 if(IsPlayerIllusionSpell(spell_id) && IsClient() && (HasProjectIllusion())){ - mlog(AA__MESSAGE, "Effect Project Illusion for %s on spell id: %d was ON", GetName(), spell_id); + Log.Out(Logs::Detail, Logs::AA, "Effect Project Illusion for %s on spell id: %d was ON", GetName(), spell_id); SetProjectIllusion(false); } else{ - mlog(AA__MESSAGE, "Effect Project Illusion for %s on spell id: %d was OFF", GetName(), spell_id); + Log.Out(Logs::Detail, Logs::AA, "Effect Project Illusion for %s on spell id: %d was OFF", GetName(), spell_id); } break; } @@ -2234,7 +2235,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 // CastSpell already reduced the cost for it if we're a client with focus if(slot != USE_ITEM_SPELL_SLOT && slot != POTION_BELT_SPELL_SLOT && slot != TARGET_RING_SPELL_SLOT && mana_used > 0) { - mlog(SPELLS__CASTING, "Spell %d: consuming %d mana", spell_id, mana_used); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: consuming %d mana", spell_id, mana_used); if (!DoHPToManaCovert(mana_used)) SetMana(GetMana() - mana_used); TryTriggerOnValueAmount(false, true); @@ -2246,7 +2247,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 if(spell_id == casting_spell_id && casting_spell_timer != 0xFFFFFFFF) { CastToClient()->GetPTimers().Start(casting_spell_timer, casting_spell_timer_duration); - mlog(SPELLS__CASTING, "Spell %d: Setting custom reuse timer %d to %d", spell_id, casting_spell_timer, casting_spell_timer_duration); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Setting custom reuse timer %d to %d", spell_id, casting_spell_timer, casting_spell_timer_duration); } else if(spells[spell_id].recast_time > 1000 && !spells[spell_id].IsDisciplineBuff) { int recast = spells[spell_id].recast_time/1000; @@ -2262,7 +2263,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 if(reduction) recast -= reduction; - mlog(SPELLS__CASTING, "Spell %d: Setting long reuse timer to %d s (orig %d)", spell_id, recast, spells[spell_id].recast_time); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Setting long reuse timer to %d s (orig %d)", spell_id, recast, spells[spell_id].recast_time); CastToClient()->GetPTimers().Start(pTimerSpellStart + spell_id, recast); } } @@ -2300,7 +2301,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, uint16 slot, uint16 bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { if(slot == USE_ITEM_SPELL_SLOT) { //bard songs should never come from items... - mlog(SPELLS__BARDS, "Bard Song Pulse %d: Supposidly cast from an item. Killing song.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: Supposidly cast from an item. Killing song.", spell_id); return(false); } @@ -2308,12 +2309,12 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { Mob *ae_center = nullptr; CastAction_type CastAction; if(!DetermineSpellTargets(spell_id, spell_target, ae_center, CastAction)) { - mlog(SPELLS__BARDS, "Bard Song Pulse %d: was unable to determine target. Stopping.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: was unable to determine target. Stopping.", spell_id); return(false); } if(ae_center != nullptr && ae_center->IsBeacon()) { - mlog(SPELLS__BARDS, "Bard Song Pulse %d: Unsupported Beacon NPC AE spell", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: Unsupported Beacon NPC AE spell", spell_id); return(false); } @@ -2322,18 +2323,18 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { if(mana_used > 0) { if(mana_used > GetMana()) { //ran out of mana... this calls StopSong() for us - mlog(SPELLS__BARDS, "Ran out of mana while singing song %d", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Ran out of mana while singing song %d", spell_id); return(false); } - mlog(SPELLS__CASTING, "Bard Song Pulse %d: consuming %d mana (have %d)", spell_id, mana_used, GetMana()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: consuming %d mana (have %d)", spell_id, mana_used, GetMana()); SetMana(GetMana() - mana_used); } // check line of sight to target if it's a detrimental spell if(spell_target && IsDetrimentalSpell(spell_id) && !CheckLosFN(spell_target)) { - mlog(SPELLS__CASTING, "Bard Song Pulse %d: cannot see target %s", spell_target->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: cannot see target %s", spell_target->GetName()); Message_StringID(13, CANT_SEE_TARGET); return(false); } @@ -2348,7 +2349,7 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { float range2 = range * range; if(dist2 > range2) { //target is out of range. - mlog(SPELLS__BARDS, "Bard Song Pulse %d: Spell target is out of range (squared: %f > %f)", spell_id, dist2, range2); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: Spell target is out of range (squared: %f > %f)", spell_id, dist2, range2); Message_StringID(13, TARGET_OUT_OF_RANGE); return(false); } @@ -2364,10 +2365,10 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { case SingleTarget: { if(spell_target == nullptr) { - mlog(SPELLS__BARDS, "Bard Song Pulse %d: Targeted spell, but we have no target", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: Targeted spell, but we have no target", spell_id); return(false); } - mlog(SPELLS__BARDS, "Bard Song Pulse: Targeted. spell %d, target %s", spell_id, spell_target->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse: Targeted. spell %d, target %s", spell_id, spell_target->GetName()); spell_target->BardPulse(spell_id, this); break; } @@ -2385,7 +2386,7 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { { // we can't cast an AE spell without something to center it on if(ae_center == nullptr) { - mlog(SPELLS__BARDS, "Bard Song Pulse %d: AE Targeted spell, but we have no target", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: AE Targeted spell, but we have no target", spell_id); return(false); } @@ -2393,9 +2394,9 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { if(spell_target) { // this must be an AETarget spell // affect the target too spell_target->BardPulse(spell_id, this); - mlog(SPELLS__BARDS, "Bard Song Pulse: spell %d, AE target %s", spell_id, spell_target->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse: spell %d, AE target %s", spell_id, spell_target->GetName()); } else { - mlog(SPELLS__BARDS, "Bard Song Pulse: spell %d, AE with no target", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse: spell %d, AE with no target", spell_id); } bool affect_caster = !IsNPC(); //NPC AE spells do not affect the NPC caster entity_list.AEBardPulse(this, ae_center, spell_id, affect_caster); @@ -2405,13 +2406,13 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { case GroupSpell: { if(spell_target->IsGrouped()) { - mlog(SPELLS__BARDS, "Bard Song Pulse: spell %d, Group targeting group of %s", spell_id, spell_target->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse: spell %d, Group targeting group of %s", spell_id, spell_target->GetName()); Group *target_group = entity_list.GetGroupByMob(spell_target); if(target_group) target_group->GroupBardPulse(this, spell_id); } else if(spell_target->IsRaidGrouped() && spell_target->IsClient()) { - mlog(SPELLS__BARDS, "Bard Song Pulse: spell %d, Raid group targeting raid group of %s", spell_id, spell_target->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse: spell %d, Raid group targeting raid group of %s", spell_id, spell_target->GetName()); Raid *r = entity_list.GetRaidByClient(spell_target->CastToClient()); if(r){ uint32 gid = r->GetGroup(spell_target->GetName()); @@ -2428,7 +2429,7 @@ bool Mob::ApplyNextBardPulse(uint16 spell_id, Mob *spell_target, uint16 slot) { } } else { - mlog(SPELLS__BARDS, "Bard Song Pulse: spell %d, Group target without group. Affecting caster.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse: spell %d, Group target without group. Affecting caster.", spell_id); BardPulse(spell_id, this); #ifdef GROUP_BUFF_PETS if (GetPet() && HasPetAffinity() && !GetPet()->IsCharmed()) @@ -2454,13 +2455,13 @@ void Mob::BardPulse(uint16 spell_id, Mob *caster) { if(buffs[buffs_i].spellid != spell_id) continue; if(buffs[buffs_i].casterid != caster->GetID()) { - mlog(SPELLS__BARDS, "Bard Pulse for %d: found buff from caster %d and we are pulsing for %d... are there two bards playing the same song???", spell_id, buffs[buffs_i].casterid, caster->GetID()); + Log.Out(Logs::Detail, Logs::Spells, "Bard Pulse for %d: found buff from caster %d and we are pulsing for %d... are there two bards playing the same song???", spell_id, buffs[buffs_i].casterid, caster->GetID()); return; } //extend the spell if it will expire before the next pulse if(buffs[buffs_i].ticsremaining <= 3) { buffs[buffs_i].ticsremaining += 3; - mlog(SPELLS__BARDS, "Bard Song Pulse %d: extending duration in slot %d to %d tics", spell_id, buffs_i, buffs[buffs_i].ticsremaining); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: extending duration in slot %d to %d tics", spell_id, buffs_i, buffs[buffs_i].ticsremaining); } //should we send this buff update to the client... seems like it would @@ -2558,7 +2559,7 @@ void Mob::BardPulse(uint16 spell_id, Mob *caster) { //we are done... return; } - mlog(SPELLS__BARDS, "Bard Song Pulse %d: Buff not found, reapplying spell.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Bard Song Pulse %d: Buff not found, reapplying spell.", spell_id); //this spell is not affecting this mob, apply it. caster->SpellOnTarget(spell_id, this); } @@ -2600,7 +2601,7 @@ int Mob::CalcBuffDuration(Mob *caster, Mob *target, uint16 spell_id, int32 caste res = mod_buff_duration(res, caster, target, spell_id); - mlog(SPELLS__CASTING, "Spell %d: Casting level %d, formula %d, base_duration %d: result %d", + Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Casting level %d, formula %d, base_duration %d: result %d", spell_id, castlevel, formula, duration, res); return(res); @@ -2672,7 +2673,7 @@ int CalcBuffDuration_formula(int level, int formula, int duration) return duration ? duration : 3600; default: - LogFile->write(EQEmuLog::Debug, "CalcBuffDuration_formula: unknown formula %d", formula); + Log.Out(Logs::General, Logs::None, "CalcBuffDuration_formula: unknown formula %d", formula); return 0; } } @@ -2694,15 +2695,15 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, int blocked_effect, blocked_below_value, blocked_slot; int overwrite_effect, overwrite_below_value, overwrite_slot; - mlog(SPELLS__STACKING, "Check Stacking on old %s (%d) @ lvl %d (by %s) vs. new %s (%d) @ lvl %d (by %s)", sp1.name, spellid1, caster_level1, (caster1==nullptr)?"Nobody":caster1->GetName(), sp2.name, spellid2, caster_level2, (caster2==nullptr)?"Nobody":caster2->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Check Stacking on old %s (%d) @ lvl %d (by %s) vs. new %s (%d) @ lvl %d (by %s)", sp1.name, spellid1, caster_level1, (caster1==nullptr)?"Nobody":caster1->GetName(), sp2.name, spellid2, caster_level2, (caster2==nullptr)?"Nobody":caster2->GetName()); // Same Spells and dot exemption is set to 1 or spell is Manaburn if (spellid1 == spellid2) { if (sp1.dot_stacking_exempt == 1 && caster1 != caster2) { // same caster can refresh - mlog(SPELLS__STACKING, "Blocking spell due to dot stacking exemption."); + Log.Out(Logs::Detail, Logs::Spells, "Blocking spell due to dot stacking exemption."); return -1; } else if (spellid1 == 2751) { - mlog(SPELLS__STACKING, "Blocking spell because manaburn does not stack with itself."); + Log.Out(Logs::Detail, Logs::Spells, "Blocking spell because manaburn does not stack with itself."); return -1; } } @@ -2734,7 +2735,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, { if(!IsDetrimentalSpell(spellid1) && !IsDetrimentalSpell(spellid2)) { - mlog(SPELLS__STACKING, "%s and %s are beneficial, and one is a bard song, no action needs to be taken", sp1.name, sp2.name); + Log.Out(Logs::Detail, Logs::Spells, "%s and %s are beneficial, and one is a bard song, no action needs to be taken", sp1.name, sp2.name); return (0); } } @@ -2803,16 +2804,16 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, { sp1_value = CalcSpellEffectValue(spellid1, overwrite_slot, caster_level1); - mlog(SPELLS__STACKING, "%s (%d) overwrites existing spell if effect %d on slot %d is below %d. Old spell has value %d on that slot/effect. %s.", + Log.Out(Logs::Detail, Logs::Spells, "%s (%d) overwrites existing spell if effect %d on slot %d is below %d. Old spell has value %d on that slot/effect. %s.", sp2.name, spellid2, overwrite_effect, overwrite_slot, overwrite_below_value, sp1_value, (sp1_value < overwrite_below_value)?"Overwriting":"Not overwriting"); if(sp1_value < overwrite_below_value) { - mlog(SPELLS__STACKING, "Overwrite spell because sp1_value < overwrite_below_value"); + Log.Out(Logs::Detail, Logs::Spells, "Overwrite spell because sp1_value < overwrite_below_value"); return 1; // overwrite spell if its value is less } } else { - mlog(SPELLS__STACKING, "%s (%d) overwrites existing spell if effect %d on slot %d is below %d, but we do not have that effect on that slot. Ignored.", + Log.Out(Logs::Detail, Logs::Spells, "%s (%d) overwrites existing spell if effect %d on slot %d is below %d, but we do not have that effect on that slot. Ignored.", sp2.name, spellid2, overwrite_effect, overwrite_slot, overwrite_below_value); } @@ -2826,22 +2827,22 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, { sp2_value = CalcSpellEffectValue(spellid2, blocked_slot, caster_level2); - mlog(SPELLS__STACKING, "%s (%d) blocks effect %d on slot %d below %d. New spell has value %d on that slot/effect. %s.", + Log.Out(Logs::Detail, Logs::Spells, "%s (%d) blocks effect %d on slot %d below %d. New spell has value %d on that slot/effect. %s.", sp1.name, spellid1, blocked_effect, blocked_slot, blocked_below_value, sp2_value, (sp2_value < blocked_below_value)?"Blocked":"Not blocked"); if (sp2_value < blocked_below_value) { - mlog(SPELLS__STACKING, "Blocking spell because sp2_Value < blocked_below_value"); + Log.Out(Logs::Detail, Logs::Spells, "Blocking spell because sp2_Value < blocked_below_value"); return -1; //blocked } } else { - mlog(SPELLS__STACKING, "%s (%d) blocks effect %d on slot %d below %d, but we do not have that effect on that slot. Ignored.", + Log.Out(Logs::Detail, Logs::Spells, "%s (%d) blocks effect %d on slot %d below %d, but we do not have that effect on that slot. Ignored.", sp1.name, spellid1, blocked_effect, blocked_slot, blocked_below_value); } } } } else { - mlog(SPELLS__STACKING, "%s (%d) and %s (%d) appear to be in the same line, skipping Stacking Overwrite/Blocking checks", + Log.Out(Logs::Detail, Logs::Spells, "%s (%d) and %s (%d) appear to be in the same line, skipping Stacking Overwrite/Blocking checks", sp1.name, spellid1, sp2.name, spellid2); } @@ -2904,13 +2905,13 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, */ if(IsNPC() && caster1 && caster2 && caster1 != caster2) { if(effect1 == SE_CurrentHP && sp1_detrimental && sp2_detrimental) { - mlog(SPELLS__STACKING, "Both casters exist and are not the same, the effect is a detrimental dot, moving on"); + Log.Out(Logs::Detail, Logs::Spells, "Both casters exist and are not the same, the effect is a detrimental dot, moving on"); continue; } } if(effect1 == SE_CompleteHeal){ //SE_CompleteHeal never stacks or overwrites ever, always block. - mlog(SPELLS__STACKING, "Blocking spell because complete heal never stacks or overwries"); + Log.Out(Logs::Detail, Logs::Spells, "Blocking spell because complete heal never stacks or overwries"); return (-1); } @@ -2922,7 +2923,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, */ if(sp_det_mismatch) { - mlog(SPELLS__STACKING, "The effects are the same but the spell types are not, passing the effect"); + Log.Out(Logs::Detail, Logs::Spells, "The effects are the same but the spell types are not, passing the effect"); continue; } @@ -2931,7 +2932,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, and the effect is a dot we can go ahead and stack it */ if(effect1 == SE_CurrentHP && spellid1 != spellid2 && sp1_detrimental && sp2_detrimental) { - mlog(SPELLS__STACKING, "The spells are not the same and it is a detrimental dot, passing"); + Log.Out(Logs::Detail, Logs::Spells, "The spells are not the same and it is a detrimental dot, passing"); continue; } @@ -2957,7 +2958,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, sp2_value = 0 - sp2_value; if(sp2_value < sp1_value) { - mlog(SPELLS__STACKING, "Spell %s (value %d) is not as good as %s (value %d). Rejecting %s.", + Log.Out(Logs::Detail, Logs::Spells, "Spell %s (value %d) is not as good as %s (value %d). Rejecting %s.", sp2.name, sp2_value, sp1.name, sp1_value, sp2.name); return -1; // can't stack } @@ -2966,7 +2967,7 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, //we dont return here... a better value on this one effect dosent mean they are //all better... - mlog(SPELLS__STACKING, "Spell %s (value %d) is not as good as %s (value %d). We will overwrite %s if there are no other conflicts.", + Log.Out(Logs::Detail, Logs::Spells, "Spell %s (value %d) is not as good as %s (value %d). We will overwrite %s if there are no other conflicts.", sp1.name, sp1_value, sp2.name, sp2_value, sp1.name); will_overwrite = true; } @@ -2975,15 +2976,15 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, //so now we see if this new spell is any better, or if its not related at all if(will_overwrite) { if (values_equal && effect_match && !IsGroupSpell(spellid2) && IsGroupSpell(spellid1)) { - mlog(SPELLS__STACKING, "%s (%d) appears to be the single target version of %s (%d), rejecting", + Log.Out(Logs::Detail, Logs::Spells, "%s (%d) appears to be the single target version of %s (%d), rejecting", sp2.name, spellid2, sp1.name, spellid1); return -1; } - mlog(SPELLS__STACKING, "Stacking code decided that %s should overwrite %s.", sp2.name, sp1.name); + Log.Out(Logs::Detail, Logs::Spells, "Stacking code decided that %s should overwrite %s.", sp2.name, sp1.name); return(1); } - mlog(SPELLS__STACKING, "Stacking code decided that %s is not affected by %s.", sp2.name, sp1.name); + Log.Out(Logs::Detail, Logs::Spells, "Stacking code decided that %s is not affected by %s.", sp2.name, sp1.name); return 0; } @@ -3042,11 +3043,11 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid } if (duration == 0) { - mlog(SPELLS__BUFFS, "Buff %d failed to add because its duration came back as 0.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Buff %d failed to add because its duration came back as 0.", spell_id); return -2; // no duration? this isn't a buff } - mlog(SPELLS__BUFFS, "Trying to add buff %d cast by %s (cast level %d) with duration %d", + Log.Out(Logs::Detail, Logs::Spells, "Trying to add buff %d cast by %s (cast level %d) with duration %d", spell_id, caster?caster->GetName():"UNKNOWN", caster_level, duration); // first we loop through everything checking that the spell @@ -3076,12 +3077,12 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid ret = CheckStackConflict(curbuf.spellid, curbuf.casterlevel, spell_id, caster_level, entity_list.GetMobID(curbuf.casterid), caster, buffslot); if (ret == -1) { // stop the spell - mlog(SPELLS__BUFFS, "Adding buff %d failed: stacking prevented by spell %d in slot %d with caster level %d", + Log.Out(Logs::Detail, Logs::Spells, "Adding buff %d failed: stacking prevented by spell %d in slot %d with caster level %d", spell_id, curbuf.spellid, buffslot, curbuf.casterlevel); return -1; } if (ret == 1) { // set a flag to indicate that there will be overwriting - mlog(SPELLS__BUFFS, "Adding buff %d will overwrite spell %d in slot %d with caster level %d", + Log.Out(Logs::Detail, Logs::Spells, "Adding buff %d will overwrite spell %d in slot %d with caster level %d", spell_id, curbuf.spellid, buffslot, curbuf.casterlevel); // If this is the first buff it would override, use its slot if (!will_overwrite) @@ -3105,7 +3106,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid for (buffslot = 0; buffslot < buff_count; buffslot++) { const Buffs_Struct &curbuf = buffs[buffslot]; if (IsBeneficialSpell(curbuf.spellid)) { - mlog(SPELLS__BUFFS, "No slot for detrimental buff %d, so we are overwriting a beneficial buff %d in slot %d", + Log.Out(Logs::Detail, Logs::Spells, "No slot for detrimental buff %d, so we are overwriting a beneficial buff %d in slot %d", spell_id, curbuf.spellid, buffslot); BuffFadeBySlot(buffslot, false); emptyslot = buffslot; @@ -3113,11 +3114,11 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid } } if(emptyslot == -1) { - mlog(SPELLS__BUFFS, "Unable to find a buff slot for detrimental buff %d", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Unable to find a buff slot for detrimental buff %d", spell_id); return -1; } } else { - mlog(SPELLS__BUFFS, "Unable to find a buff slot for beneficial buff %d", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Unable to find a buff slot for beneficial buff %d", spell_id); return -1; } } @@ -3168,7 +3169,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid buffs[emptyslot].UpdateClient = true; } - mlog(SPELLS__BUFFS, "Buff %d added to slot %d with caster level %d", spell_id, emptyslot, caster_level); + Log.Out(Logs::Detail, Logs::Spells, "Buff %d added to slot %d with caster level %d", spell_id, emptyslot, caster_level); if (IsPet() && GetOwner() && GetOwner()->IsClient()) SendPetBuffsToClient(); @@ -3206,7 +3207,7 @@ int Mob::CanBuffStack(uint16 spellid, uint8 caster_level, bool iFailIfOverwrite) { int i, ret, firstfree = -2; - mlog(AI__BUFFS, "Checking if buff %d cast at level %d can stack on me.%s", spellid, caster_level, iFailIfOverwrite?" failing if we would overwrite something":""); + Log.Out(Logs::Detail, Logs::AI, "Checking if buff %d cast at level %d can stack on me.%s", spellid, caster_level, iFailIfOverwrite?" failing if we would overwrite something":""); int buff_count = GetMaxTotalSlots(); for (i=0; i < buff_count; i++) @@ -3230,19 +3231,19 @@ int Mob::CanBuffStack(uint16 spellid, uint8 caster_level, bool iFailIfOverwrite) if(ret == 1) { // should overwrite current slot if(iFailIfOverwrite) { - mlog(AI__BUFFS, "Buff %d would overwrite %d in slot %d, reporting stack failure", spellid, curbuf.spellid, i); + Log.Out(Logs::Detail, Logs::AI, "Buff %d would overwrite %d in slot %d, reporting stack failure", spellid, curbuf.spellid, i); return(-1); } if(firstfree == -2) firstfree = i; } if(ret == -1) { - mlog(AI__BUFFS, "Buff %d would conflict with %d in slot %d, reporting stack failure", spellid, curbuf.spellid, i); + Log.Out(Logs::Detail, Logs::AI, "Buff %d would conflict with %d in slot %d, reporting stack failure", spellid, curbuf.spellid, i); return -1; // stop the spell, can't stack it } } - mlog(AI__BUFFS, "Reporting that buff %d could successfully be placed into slot %d", spellid, firstfree); + Log.Out(Logs::Detail, Logs::AI, "Reporting that buff %d could successfully be placed into slot %d", spellid, firstfree); return firstfree; } @@ -3269,7 +3270,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r // well we can't cast a spell on target without a target if(!spelltar) { - mlog(SPELLS__CASTING_ERR, "Unable to apply spell %d without a target", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Unable to apply spell %d without a target", spell_id); Message(13, "SOT: You must have a target for this spell."); return false; } @@ -3297,7 +3298,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r uint16 caster_level = GetCasterLevel(spell_id); - mlog(SPELLS__CASTING, "Casting spell %d on %s with effective caster level %d", spell_id, spelltar->GetName(), caster_level); + Log.Out(Logs::Detail, Logs::Spells, "Casting spell %d on %s with effective caster level %d", spell_id, spelltar->GetName(), caster_level); // Actual cast action - this causes the caster animation and the particles // around the target @@ -3377,7 +3378,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r if (RuleB(Spells, EnableBlockedBuffs)) { // We return true here since the caster's client should act like normal if (spelltar->IsBlockedBuff(spell_id)) { - mlog(SPELLS__BUFFS, "Spell %i not applied to %s as it is a Blocked Buff.", + Log.Out(Logs::Detail, Logs::Spells, "Spell %i not applied to %s as it is a Blocked Buff.", spell_id, spelltar->GetName()); safe_delete(action_packet); return true; @@ -3385,7 +3386,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r if (spelltar->IsPet() && spelltar->GetOwner() && spelltar->GetOwner()->IsBlockedPetBuff(spell_id)) { - mlog(SPELLS__BUFFS, "Spell %i not applied to %s (%s's pet) as it is a Pet Blocked Buff.", + Log.Out(Logs::Detail, Logs::Spells, "Spell %i not applied to %s (%s's pet) as it is a Pet Blocked Buff.", spell_id, spelltar->GetName(), spelltar->GetOwner()->GetName()); safe_delete(action_packet); return true; @@ -3394,7 +3395,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r // invuln mobs can't be affected by any spells, good or bad if(spelltar->GetInvul() || spelltar->DivineAura()) { - mlog(SPELLS__CASTING_ERR, "Casting spell %d on %s aborted: they are invulnerable.", spell_id, spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Casting spell %d on %s aborted: they are invulnerable.", spell_id, spelltar->GetName()); safe_delete(action_packet); return false; } @@ -3405,17 +3406,17 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r if (RuleB(Pets, UnTargetableSwarmPet)) { if (spelltar->IsNPC()) { if (!spelltar->CastToNPC()->GetSwarmOwner()) { - mlog(SPELLS__CASTING_ERR, "Casting spell %d on %s aborted: they are untargetable", spell_id, spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Casting spell %d on %s aborted: they are untargetable", spell_id, spelltar->GetName()); safe_delete(action_packet); return(false); } } else { - mlog(SPELLS__CASTING_ERR, "Casting spell %d on %s aborted: they are untargetable", spell_id, spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Casting spell %d on %s aborted: they are untargetable", spell_id, spelltar->GetName()); safe_delete(action_packet); return(false); } } else { - mlog(SPELLS__CASTING_ERR, "Casting spell %d on %s aborted: they are untargetable", spell_id, spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Casting spell %d on %s aborted: they are untargetable", spell_id, spelltar->GetName()); safe_delete(action_packet); return(false); } @@ -3524,9 +3525,9 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r { if(spells[spell_id].targettype == ST_AEBard) { //if it was a beneficial AE bard song don't spam the window that it would not hold - mlog(SPELLS__CASTING_ERR, "Beneficial ae bard song %d can't take hold %s -> %s, IBA? %d", spell_id, GetName(), spelltar->GetName(), IsBeneficialAllowed(spelltar)); + Log.Out(Logs::Detail, Logs::Spells, "Beneficial ae bard song %d can't take hold %s -> %s, IBA? %d", spell_id, GetName(), spelltar->GetName(), IsBeneficialAllowed(spelltar)); } else { - mlog(SPELLS__CASTING_ERR, "Beneficial spell %d can't take hold %s -> %s, IBA? %d", spell_id, GetName(), spelltar->GetName(), IsBeneficialAllowed(spelltar)); + Log.Out(Logs::Detail, Logs::Spells, "Beneficial spell %d can't take hold %s -> %s, IBA? %d", spell_id, GetName(), spelltar->GetName(), IsBeneficialAllowed(spelltar)); Message_StringID(MT_SpellFailure, SPELL_NO_HOLD); } safe_delete(action_packet); @@ -3536,7 +3537,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r } else if ( !IsAttackAllowed(spelltar, true) && !IsResurrectionEffects(spell_id)) // Detrimental spells - PVP check { - mlog(SPELLS__CASTING_ERR, "Detrimental spell %d can't take hold %s -> %s", spell_id, GetName(), spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Detrimental spell %d can't take hold %s -> %s", spell_id, GetName(), spelltar->GetName()); spelltar->Message_StringID(MT_SpellFailure, YOU_ARE_PROTECTED, GetCleanName()); safe_delete(action_packet); return false; @@ -3550,7 +3551,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r if(spelltar->IsImmuneToSpell(spell_id, this)) { //the above call does the message to the client if needed - mlog(SPELLS__RESISTS, "Spell %d can't take hold due to immunity %s -> %s", spell_id, GetName(), spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d can't take hold due to immunity %s -> %s", spell_id, GetName(), spelltar->GetName()); safe_delete(action_packet); return false; } @@ -3643,7 +3644,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r { if(spell_effectiveness == 0 || !IsPartialCapableSpell(spell_id) ) { - mlog(SPELLS__RESISTS, "Spell %d was completely resisted by %s", spell_id, spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d was completely resisted by %s", spell_id, spelltar->GetName()); if (spells[spell_id].resisttype == RESIST_PHYSICAL){ Message_StringID(MT_SpellFailure, PHYSICAL_RESIST_FAIL,spells[spell_id].name); @@ -3691,7 +3692,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r if (spelltar->IsAIControlled() && IsDetrimentalSpell(spell_id) && !IsHarmonySpell(spell_id)) { int32 aggro_amount = CheckAggroAmount(spell_id, isproc); - mlog(SPELLS__CASTING, "Spell %d cast on %s generated %d hate", spell_id, spelltar->GetName(), aggro_amount); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d cast on %s generated %d hate", spell_id, spelltar->GetName(), aggro_amount); if(aggro_amount > 0) spelltar->AddToHateList(this, aggro_amount); else{ int32 newhate = spelltar->GetHateAmount(this) + aggro_amount; @@ -3708,7 +3709,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r // make sure spelltar is high enough level for the buff if(RuleB(Spells, BuffLevelRestrictions) && !spelltar->CheckSpellLevelRestriction(spell_id)) { - mlog(SPELLS__BUFFS, "Spell %d failed: recipient did not meet the level restrictions", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d failed: recipient did not meet the level restrictions", spell_id); if(!IsBardSong(spell_id)) Message_StringID(MT_SpellFailure, SPELL_TOO_POWERFUL); safe_delete(action_packet); @@ -3720,7 +3721,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r { // if SpellEffect returned false there's a problem applying the // spell. It's most likely a buff that can't stack. - mlog(SPELLS__CASTING_ERR, "Spell %d could not apply its effects %s -> %s\n", spell_id, GetName(), spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d could not apply its effects %s -> %s\n", spell_id, GetName(), spelltar->GetName()); if(casting_spell_type != 1) // AA is handled differently Message_StringID(MT_SpellFailure, SPELL_NO_HOLD); safe_delete(action_packet); @@ -3824,14 +3825,14 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r safe_delete(action_packet); safe_delete(message_packet); - mlog(SPELLS__CASTING, "Cast of %d by %s on %s complete successfully.", spell_id, GetName(), spelltar->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Cast of %d by %s on %s complete successfully.", spell_id, GetName(), spelltar->GetName()); return true; } void Corpse::CastRezz(uint16 spellid, Mob* Caster) { - _log(SPELLS__REZ, "Corpse::CastRezz spellid %i, Rezzed() is %i, rezzexp is %i", spellid,IsRezzed(),rez_experience); + Log.Out(Logs::Detail, Logs::Spells, "Corpse::CastRezz spellid %i, Rezzed() is %i, rezzexp is %i", spellid,IsRezzed(),rez_experience); if(IsRezzed()){ if(Caster && Caster->IsClient()) @@ -3864,7 +3865,6 @@ void Corpse::CastRezz(uint16 spellid, Mob* Caster) rezz->unknown088 = 0x00000000; // We send this to world, because it needs to go to the player who may not be in this zone. worldserver.RezzPlayer(outapp, rez_experience, corpse_db_id, OP_RezzRequest); - _pkt(SPELLS__REZ, outapp); safe_delete(outapp); } @@ -4004,7 +4004,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) //this spell like 10 times, this could easily be consolidated //into one loop through with a switch statement. - mlog(SPELLS__RESISTS, "Checking to see if we are immune to spell %d cast by %s", spell_id, caster->GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Checking to see if we are immune to spell %d cast by %s", spell_id, caster->GetName()); if(!IsValidSpell(spell_id)) return true; @@ -4015,7 +4015,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(IsMezSpell(spell_id)) { if(GetSpecialAbility(UNMEZABLE)) { - mlog(SPELLS__RESISTS, "We are immune to Mez spells."); + Log.Out(Logs::Detail, Logs::Spells, "We are immune to Mez spells."); caster->Message_StringID(MT_Shout, CANNOT_MEZ); int32 aggro = caster->CheckAggroAmount(spell_id); if(aggro > 0) { @@ -4033,7 +4033,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if((GetLevel() > spells[spell_id].max[effect_index]) && (!caster->IsNPC() || (caster->IsNPC() && !RuleB(Spells, NPCIgnoreBaseImmunity)))) { - mlog(SPELLS__RESISTS, "Our level (%d) is higher than the limit of this Mez spell (%d)", GetLevel(), spells[spell_id].max[effect_index]); + Log.Out(Logs::Detail, Logs::Spells, "Our level (%d) is higher than the limit of this Mez spell (%d)", GetLevel(), spells[spell_id].max[effect_index]); caster->Message_StringID(MT_Shout, CANNOT_MEZ_WITH_SPELL); return true; } @@ -4042,7 +4042,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) // slow and haste spells if(GetSpecialAbility(UNSLOWABLE) && IsEffectInSpell(spell_id, SE_AttackSpeed)) { - mlog(SPELLS__RESISTS, "We are immune to Slow spells."); + Log.Out(Logs::Detail, Logs::Spells, "We are immune to Slow spells."); caster->Message_StringID(MT_Shout, IMMUNE_ATKSPEED); int32 aggro = caster->CheckAggroAmount(spell_id); if(aggro > 0) { @@ -4058,7 +4058,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { effect_index = GetSpellEffectIndex(spell_id, SE_Fear); if(GetSpecialAbility(UNFEARABLE)) { - mlog(SPELLS__RESISTS, "We are immune to Fear spells."); + Log.Out(Logs::Detail, Logs::Spells, "We are immune to Fear spells."); caster->Message_StringID(MT_Shout, IMMUNE_FEAR); int32 aggro = caster->CheckAggroAmount(spell_id); if(aggro > 0) { @@ -4069,13 +4069,13 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) return true; } else if(IsClient() && caster->IsClient() && (caster->CastToClient()->GetGM() == false)) { - mlog(SPELLS__RESISTS, "Clients cannot fear eachother!"); + Log.Out(Logs::Detail, Logs::Spells, "Clients cannot fear eachother!"); caster->Message_StringID(MT_Shout, IMMUNE_FEAR); return true; } else if(GetLevel() > spells[spell_id].max[effect_index] && spells[spell_id].max[effect_index] != 0) { - mlog(SPELLS__RESISTS, "Level is %d, cannot be feared by this spell.", GetLevel()); + Log.Out(Logs::Detail, Logs::Spells, "Level is %d, cannot be feared by this spell.", GetLevel()); caster->Message_StringID(MT_Shout, FEAR_TOO_HIGH); int32 aggro = caster->CheckAggroAmount(spell_id); if (aggro > 0) { @@ -4089,7 +4089,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) else if (IsClient() && CastToClient()->CheckAAEffect(aaEffectWarcry)) { Message(13, "Your are immune to fear."); - mlog(SPELLS__RESISTS, "Clients has WarCry effect, immune to fear!"); + Log.Out(Logs::Detail, Logs::Spells, "Clients has WarCry effect, immune to fear!"); caster->Message_StringID(MT_Shout, IMMUNE_FEAR); return true; } @@ -4099,7 +4099,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { if(GetSpecialAbility(UNCHARMABLE)) { - mlog(SPELLS__RESISTS, "We are immune to Charm spells."); + Log.Out(Logs::Detail, Logs::Spells, "We are immune to Charm spells."); caster->Message_StringID(MT_Shout, CANNOT_CHARM); int32 aggro = caster->CheckAggroAmount(spell_id); if(aggro > 0) { @@ -4112,7 +4112,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(this == caster) { - mlog(SPELLS__RESISTS, "You are immune to your own charms."); + Log.Out(Logs::Detail, Logs::Spells, "You are immune to your own charms."); caster->Message(MT_Shout, "You cannot charm yourself."); return true; } @@ -4125,7 +4125,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) assert(effect_index >= 0); if(GetLevel() > spells[spell_id].max[effect_index] && spells[spell_id].max[effect_index] != 0) { - mlog(SPELLS__RESISTS, "Our level (%d) is higher than the limit of this Charm spell (%d)", GetLevel(), spells[spell_id].max[effect_index]); + Log.Out(Logs::Detail, Logs::Spells, "Our level (%d) is higher than the limit of this Charm spell (%d)", GetLevel(), spells[spell_id].max[effect_index]); caster->Message_StringID(MT_Shout, CANNOT_CHARM_YET); return true; } @@ -4139,7 +4139,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) ) { if(GetSpecialAbility(UNSNAREABLE)) { - mlog(SPELLS__RESISTS, "We are immune to Snare spells."); + Log.Out(Logs::Detail, Logs::Spells, "We are immune to Snare spells."); caster->Message_StringID(MT_Shout, IMMUNE_MOVEMENT); int32 aggro = caster->CheckAggroAmount(spell_id); if(aggro > 0) { @@ -4155,7 +4155,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { if(this == caster) { - mlog(SPELLS__RESISTS, "You cannot lifetap yourself."); + Log.Out(Logs::Detail, Logs::Spells, "You cannot lifetap yourself."); caster->Message_StringID(MT_Shout, CANT_DRAIN_SELF); return true; } @@ -4165,13 +4165,13 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { if(this == caster) { - mlog(SPELLS__RESISTS, "You cannot sacrifice yourself."); + Log.Out(Logs::Detail, Logs::Spells, "You cannot sacrifice yourself."); caster->Message_StringID(MT_Shout, CANNOT_SAC_SELF); return true; } } - mlog(SPELLS__RESISTS, "No immunities to spell %d found.", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "No immunities to spell %d found.", spell_id); return false; } @@ -4208,7 +4208,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use if(GetSpecialAbility(IMMUNE_MAGIC)) { - mlog(SPELLS__RESISTS, "We are immune to magic, so we fully resist the spell %d", spell_id); + Log.Out(Logs::Detail, Logs::Spells, "We are immune to magic, so we fully resist the spell %d", spell_id); return(0); } @@ -4229,7 +4229,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use int fear_resist_bonuses = CalcFearResistChance(); if(zone->random.Roll(fear_resist_bonuses)) { - mlog(SPELLS__RESISTS, "Resisted spell in fear resistance, had %d chance to resist", fear_resist_bonuses); + Log.Out(Logs::Detail, Logs::Spells, "Resisted spell in fear resistance, had %d chance to resist", fear_resist_bonuses); return 0; } } @@ -4247,7 +4247,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use int resist_bonuses = CalcResistChanceBonus(); if(resist_bonuses && zone->random.Roll(resist_bonuses)) { - mlog(SPELLS__RESISTS, "Resisted spell in sanctification, had %d chance to resist", resist_bonuses); + Log.Out(Logs::Detail, Logs::Spells, "Resisted spell in sanctification, had %d chance to resist", resist_bonuses); return 0; } } @@ -4255,7 +4255,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use //Get the resist chance for the target if(resist_type == RESIST_NONE) { - mlog(SPELLS__RESISTS, "Spell was unresistable"); + Log.Out(Logs::Detail, Logs::Spells, "Spell was unresistable"); return 100; } @@ -4821,7 +4821,7 @@ void Client::MemSpell(uint16 spell_id, int slot, bool update_client) } m_pp.mem_spells[slot] = spell_id; - mlog(CLIENT__SPELLS, "Spell %d memorized into slot %d", spell_id, slot); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d memorized into slot %d", spell_id, slot); database.SaveCharacterMemorizedSpell(this->CharacterID(), m_pp.mem_spells[slot], slot); @@ -4836,7 +4836,7 @@ void Client::UnmemSpell(int slot, bool update_client) if(slot > MAX_PP_MEMSPELL || slot < 0) return; - mlog(CLIENT__SPELLS, "Spell %d forgotten from slot %d", m_pp.mem_spells[slot], slot); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d forgotten from slot %d", m_pp.mem_spells[slot], slot); m_pp.mem_spells[slot] = 0xFFFFFFFF; database.DeleteCharacterMemorizedSpell(this->CharacterID(), m_pp.mem_spells[slot], slot); @@ -4869,7 +4869,7 @@ void Client::ScribeSpell(uint16 spell_id, int slot, bool update_client) m_pp.spell_book[slot] = spell_id; database.SaveCharacterSpell(this->CharacterID(), spell_id, slot); - mlog(CLIENT__SPELLS, "Spell %d scribed into spell book slot %d", spell_id, slot); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d scribed into spell book slot %d", spell_id, slot); if(update_client) { @@ -4882,7 +4882,7 @@ void Client::UnscribeSpell(int slot, bool update_client) if(slot >= MAX_PP_SPELLBOOK || slot < 0) return; - mlog(CLIENT__SPELLS, "Spell %d erased from spell book slot %d", m_pp.spell_book[slot], slot); + Log.Out(Logs::Detail, Logs::Spells, "Spell %d erased from spell book slot %d", m_pp.spell_book[slot], slot); m_pp.spell_book[slot] = 0xFFFFFFFF; database.DeleteCharacterSpell(this->CharacterID(), m_pp.spell_book[slot], slot); @@ -4913,7 +4913,7 @@ void Client::UntrainDisc(int slot, bool update_client) if(slot >= MAX_PP_DISCIPLINES || slot < 0) return; - mlog(CLIENT__SPELLS, "Discipline %d untrained from slot %d", m_pp.disciplines.values[slot], slot); + Log.Out(Logs::Detail, Logs::Spells, "Discipline %d untrained from slot %d", m_pp.disciplines.values[slot], slot); m_pp.disciplines.values[slot] = 0; database.DeleteCharacterDisc(this->CharacterID(), slot); @@ -4962,7 +4962,6 @@ bool Client::SpellGlobalCheck(uint16 spell_ID, uint32 char_ID) { "WHERE spellid = %i", spell_ID); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error while querying Spell ID %i spell_globals table query '%s': %s", spell_ID, query.c_str(), results.ErrorMessage().c_str()); return false; // Query failed, so prevent spell from scribing just in case } @@ -4981,12 +4980,12 @@ bool Client::SpellGlobalCheck(uint16 spell_ID, uint32 char_ID) { char_ID, spell_Global_Name.c_str()); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Spell ID %i query of spell_globals with Name: '%s' Value: '%i' failed", spell_ID, spell_Global_Name.c_str(), spell_Global_Value); + Log.Out(Logs::General, Logs::Error, "Spell ID %i query of spell_globals with Name: '%s' Value: '%i' failed", spell_ID, spell_Global_Name.c_str(), spell_Global_Value); return false; } if (results.RowCount() != 1) { - LogFile->write(EQEmuLog::Error, "Char ID: %i does not have the Qglobal Name: '%s' for Spell ID %i", char_ID, spell_Global_Name.c_str(), spell_ID); + Log.Out(Logs::General, Logs::Error, "Char ID: %i does not have the Qglobal Name: '%s' for Spell ID %i", char_ID, spell_Global_Name.c_str(), spell_ID); return false; } @@ -5000,7 +4999,7 @@ bool Client::SpellGlobalCheck(uint16 spell_ID, uint32 char_ID) { return true; // Check if the qglobal value is greater than the require spellglobal value // If no matching result found in qglobals, don't scribe this spell - LogFile->write(EQEmuLog::Error, "Char ID: %i Spell_globals Name: '%s' Value: '%i' did not match QGlobal Value: '%i' for Spell ID %i", char_ID, spell_Global_Name.c_str(), spell_Global_Value, global_Value, spell_ID); + Log.Out(Logs::General, Logs::Error, "Char ID: %i Spell_globals Name: '%s' Value: '%i' did not match QGlobal Value: '%i' for Spell ID %i", char_ID, spell_Global_Name.c_str(), spell_Global_Value, global_Value, spell_ID); return false; } @@ -5039,7 +5038,7 @@ bool Mob::FindType(uint16 type, bool bOffensive, uint16 threshold) { spells[buffs[i].spellid].base[j], spells[buffs[i].spellid].max[j], buffs[i].casterlevel, buffs[i].spellid); - LogFile->write(EQEmuLog::Normal, + Log.Out(Logs::General, Logs::Normal, "FindType: type = %d; value = %d; threshold = %d", type, value, threshold); if (value < threshold) @@ -5088,23 +5087,23 @@ bool Mob::AddProcToWeapon(uint16 spell_id, bool bPerma, uint16 iChance, uint16 b PermaProcs[i].spellID = spell_id; PermaProcs[i].chance = iChance; PermaProcs[i].base_spellID = base_spell_id; - mlog(SPELLS__PROCS, "Added permanent proc spell %d with chance %d to slot %d", spell_id, iChance, i); + Log.Out(Logs::Detail, Logs::Spells, "Added permanent proc spell %d with chance %d to slot %d", spell_id, iChance, i); return true; } } - mlog(SPELLS__PROCS, "Too many perma procs for %s", GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Too many perma procs for %s", GetName()); } else { for (i = 0; i < MAX_PROCS; i++) { if (SpellProcs[i].spellID == SPELL_UNKNOWN) { SpellProcs[i].spellID = spell_id; SpellProcs[i].chance = iChance; SpellProcs[i].base_spellID = base_spell_id;; - mlog(SPELLS__PROCS, "Added spell-granted proc spell %d with chance %d to slot %d", spell_id, iChance, i); + Log.Out(Logs::Detail, Logs::Spells, "Added spell-granted proc spell %d with chance %d to slot %d", spell_id, iChance, i); return true; } } - mlog(SPELLS__PROCS, "Too many procs for %s", GetName()); + Log.Out(Logs::Detail, Logs::Spells, "Too many procs for %s", GetName()); } return false; } @@ -5115,7 +5114,7 @@ bool Mob::RemoveProcFromWeapon(uint16 spell_id, bool bAll) { SpellProcs[i].spellID = SPELL_UNKNOWN; SpellProcs[i].chance = 0; SpellProcs[i].base_spellID = SPELL_UNKNOWN; - mlog(SPELLS__PROCS, "Removed proc %d from slot %d", spell_id, i); + Log.Out(Logs::Detail, Logs::Spells, "Removed proc %d from slot %d", spell_id, i); } } return true; @@ -5132,7 +5131,7 @@ bool Mob::AddDefensiveProc(uint16 spell_id, uint16 iChance, uint16 base_spell_id DefensiveProcs[i].spellID = spell_id; DefensiveProcs[i].chance = iChance; DefensiveProcs[i].base_spellID = base_spell_id; - mlog(SPELLS__PROCS, "Added spell-granted defensive proc spell %d with chance %d to slot %d", spell_id, iChance, i); + Log.Out(Logs::Detail, Logs::Spells, "Added spell-granted defensive proc spell %d with chance %d to slot %d", spell_id, iChance, i); return true; } } @@ -5147,7 +5146,7 @@ bool Mob::RemoveDefensiveProc(uint16 spell_id, bool bAll) DefensiveProcs[i].spellID = SPELL_UNKNOWN; DefensiveProcs[i].chance = 0; DefensiveProcs[i].base_spellID = SPELL_UNKNOWN; - mlog(SPELLS__PROCS, "Removed defensive proc %d from slot %d", spell_id, i); + Log.Out(Logs::Detail, Logs::Spells, "Removed defensive proc %d from slot %d", spell_id, i); } } return true; @@ -5164,7 +5163,7 @@ bool Mob::AddRangedProc(uint16 spell_id, uint16 iChance, uint16 base_spell_id) RangedProcs[i].spellID = spell_id; RangedProcs[i].chance = iChance; RangedProcs[i].base_spellID = base_spell_id; - mlog(SPELLS__PROCS, "Added spell-granted ranged proc spell %d with chance %d to slot %d", spell_id, iChance, i); + Log.Out(Logs::Detail, Logs::Spells, "Added spell-granted ranged proc spell %d with chance %d to slot %d", spell_id, iChance, i); return true; } } @@ -5179,7 +5178,7 @@ bool Mob::RemoveRangedProc(uint16 spell_id, bool bAll) RangedProcs[i].spellID = SPELL_UNKNOWN; RangedProcs[i].chance = 0; RangedProcs[i].base_spellID = SPELL_UNKNOWN;; - mlog(SPELLS__PROCS, "Removed ranged proc %d from slot %d", spell_id, i); + Log.Out(Logs::Detail, Logs::Spells, "Removed ranged proc %d from slot %d", spell_id, i); } } return true; @@ -5210,7 +5209,7 @@ bool Mob::UseBardSpellLogic(uint16 spell_id, int slot) int Mob::GetCasterLevel(uint16 spell_id) { int level = GetLevel(); level += itembonuses.effective_casting_level + spellbonuses.effective_casting_level + aabonuses.effective_casting_level; - mlog(SPELLS__CASTING, "Determined effective casting level %d+%d+%d=%d", GetLevel(), spellbonuses.effective_casting_level, itembonuses.effective_casting_level, level); + Log.Out(Logs::Detail, Logs::Spells, "Determined effective casting level %d+%d+%d=%d", GetLevel(), spellbonuses.effective_casting_level, itembonuses.effective_casting_level, level); return(level); } diff --git a/zone/tasks.cpp b/zone/tasks.cpp index 452773970..59c6f50eb 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -17,7 +17,7 @@ Copyright (C) 2001-2008 EQEMu Development Team (http://eqemulator.net) Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "tasks.h" #include @@ -74,7 +74,7 @@ bool TaskManager::LoadTaskSets() { MAXTASKSETS, MAXTASKS); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "[TASKS]Error in TaskManager::LoadTaskSets: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS]Error in TaskManager::LoadTaskSets: %s", results.ErrorMessage().c_str()); return false; } @@ -83,7 +83,7 @@ bool TaskManager::LoadTaskSets() { int taskID = atoi(row[1]); TaskSets[taskSet].push_back(taskID); - _log(TASKS__GLOBALLOAD, "Adding TaskID %4i to TaskSet %4i", taskID, taskSet); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Adding TaskID %4i to TaskSet %4i", taskID, taskSet); } return true; @@ -91,7 +91,7 @@ bool TaskManager::LoadTaskSets() { bool TaskManager::LoadSingleTask(int TaskID) { - _log(TASKS__GLOBALLOAD, "TaskManager::LoadSingleTask(%i)", TaskID); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] TaskManager::LoadSingleTask(%i)", TaskID); if((TaskID <= 0) || (TaskID >= MAXTASKS)) return false; @@ -115,21 +115,21 @@ bool TaskManager::LoadSingleTask(int TaskID) { void TaskManager::ReloadGoalLists() { if(!GoalListManager.LoadLists()) - _log(TASKS__GLOBALLOAD,"TaskManager::LoadTasks LoadLists failed"); + Log.Out(Logs::Detail, Logs::Tasks,"TaskManager::LoadTasks LoadLists failed"); } bool TaskManager::LoadTasks(int singleTask) { // If TaskID !=0, then just load the task specified. - _log(TASKS__GLOBALLOAD, "TaskManager::LoadTasks Called"); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] TaskManager::LoadTasks Called"); std::string query; if(singleTask == 0) { if(!GoalListManager.LoadLists()) - _log(TASKS__GLOBALLOAD,"TaskManager::LoadTasks LoadLists failed"); + Log.Out(Logs::Detail, Logs::Tasks,"TaskManager::LoadTasks LoadLists failed"); if(!LoadTaskSets()) - _log(TASKS__GLOBALLOAD,"TaskManager::LoadTasks LoadTaskSets failed"); + Log.Out(Logs::Detail, Logs::Tasks,"TaskManager::LoadTasks LoadTaskSets failed"); query = StringFormat("SELECT `id`, `duration`, `title`, `description`, `reward`, " "`rewardid`, `cashreward`, `xpreward`, `rewardmethod`, " @@ -146,7 +146,7 @@ bool TaskManager::LoadTasks(int singleTask) { auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); return false; } @@ -155,7 +155,7 @@ bool TaskManager::LoadTasks(int singleTask) { if((taskID <= 0) || (taskID >= MAXTASKS)) { // This shouldn't happen, as the SELECT is bounded by MAXTASKS - LogFile->write(EQEmuLog::Error, "[TASKS]Task ID %i out of range while loading tasks from database", taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Task ID %i out of range while loading tasks from database", taskID); continue; } @@ -179,11 +179,11 @@ bool TaskManager::LoadTasks(int singleTask) { Tasks[taskID]->SequenceMode = ActivitiesSequential; Tasks[taskID]->LastStep = 0; - _log(TASKS__GLOBALLOAD,"TaskID: %5i, Duration: %8i, StartZone: %3i Reward: %s MinLevel %i MaxLevel %i Repeatable: %s", + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] TaskID: %5i, Duration: %8i, StartZone: %3i Reward: %s MinLevel %i MaxLevel %i Repeatable: %s", taskID, Tasks[taskID]->Duration, Tasks[taskID]->StartZone, Tasks[taskID]->Reward, Tasks[taskID]->MinLevel, Tasks[taskID]->MaxLevel, Tasks[taskID]->Repeatable ? "Yes" : "No"); - _log(TASKS__GLOBALLOAD,"Title: %s ", Tasks[taskID]->Title); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Title: %s", Tasks[taskID]->Title); } @@ -203,7 +203,7 @@ bool TaskManager::LoadTasks(int singleTask) { "ORDER BY taskid, activityid ASC", singleTask, MAXACTIVITIESPERTASK); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); return false; } @@ -215,13 +215,13 @@ bool TaskManager::LoadTasks(int singleTask) { if((taskID <= 0) || (taskID >= MAXTASKS) || (activityID < 0) || (activityID >= MAXACTIVITIESPERTASK)) { // This shouldn't happen, as the SELECT is bounded by MAXTASKS - LogFile->write(EQEmuLog::Error, "[TASKS]Task or Activity ID (%i, %i) out of range while loading " + Log.Out(Logs::General, Logs::Error, "[TASKS]Task or Activity ID (%i, %i) out of range while loading " "activities from database", taskID, activityID); continue; } if(Tasks[taskID]==nullptr) { - LogFile->write(EQEmuLog::Error, "[TASKS]Activity for non-existent task (%i, %i) while loading activities from database", taskID, activityID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Activity for non-existent task (%i, %i) while loading activities from database", taskID, activityID); continue; } @@ -238,7 +238,7 @@ bool TaskManager::LoadTasks(int singleTask) { // ERR_NOTASK errors. // Change to (activityID != (Tasks[taskID]->ActivityCount + 1)) to index from 1 if(activityID != Tasks[taskID]->ActivityCount) { - LogFile->write(EQEmuLog::Error, "[TASKS]Activities for Task %i are not sequential starting at 0. Not loading task.", taskID, activityID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Activities for Task %i are not sequential starting at 0. Not loading task.", taskID, activityID); Tasks[taskID] = nullptr; continue; } @@ -273,7 +273,7 @@ bool TaskManager::LoadTasks(int singleTask) { Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].ZoneID = atoi(row[11]); Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Optional = atoi(row[12]); - _log(TASKS__GLOBALLOAD, "Activity Slot %2i: ID %i for Task %5i. Type: %3i, GoalID: %8i, " + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Activity Slot %2i: ID %i for Task %5i. Type: %3i, GoalID: %8i, " "GoalMethod: %i, GoalCount: %3i, ZoneID:%3i", Tasks[taskID]->ActivityCount, activityID, taskID, Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Type, @@ -282,9 +282,9 @@ bool TaskManager::LoadTasks(int singleTask) { Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].GoalCount, Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].ZoneID); - _log(TASKS__GLOBALLOAD, " Text1: %s", Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Text1); - _log(TASKS__GLOBALLOAD, " Text2: %s", Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Text2); - _log(TASKS__GLOBALLOAD, " Text3: %s", Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Text3); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Text1: %s", Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Text1); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Text2: %s", Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Text2); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Text3: %s", Tasks[taskID]->Activity[Tasks[taskID]->ActivityCount].Text3); Tasks[taskID]->ActivityCount++; } @@ -306,7 +306,7 @@ bool TaskManager::SaveClientState(Client *c, ClientTaskState *state) { int characterID = c->CharacterID(); - _log(TASKS__CLIENTSAVE,"TaskManager::SaveClientState for character ID %d", characterID); + Log.Out(Logs::Detail, Logs::Tasks,"TaskManager::SaveClientState for character ID %d", characterID); if(state->ActiveTaskCount > 0) { for(int task=0; taskActiveTasks[task].Updated) { - _log(TASKS__CLIENTSAVE, "TaskManager::SaveClientState for character ID %d, Updating TaskIndex %i TaskID %i", characterID, task, taskID); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTSAVE] TaskManager::SaveClientState for character ID %d, Updating TaskIndex %i TaskID %i", characterID, task, taskID); std::string query = StringFormat("REPLACE INTO character_tasks (charid, taskid, slot, acceptedtime) " "VALUES (%i, %i, %i, %i)", characterID, taskID, task, state->ActiveTasks[task].AcceptedTime); auto results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); else state->ActiveTasks[task].Updated = false; @@ -338,7 +338,7 @@ bool TaskManager::SaveClientState(Client *c, ClientTaskState *state) { if(!state->ActiveTasks[task].Activity[activityIndex].Updated) continue; - _log(TASKS__CLIENTSAVE, "TaskManager::SaveClientSate for character ID %d, Updating Activity %i, %i", + Log.Out(Logs::General, Logs::Tasks, "[CLIENTSAVE] TaskManager::SaveClientSate for character ID %d, Updating Activity %i, %i", characterID, task, activityIndex); if(updatedActivityCount==0) @@ -358,11 +358,11 @@ bool TaskManager::SaveClientState(Client *c, ClientTaskState *state) { if(updatedActivityCount == 0) continue; - _log(TASKS__CLIENTSAVE, "Executing query %s", query.c_str()); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTSAVE] Executing query %s", query.c_str()); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); continue; } @@ -383,7 +383,7 @@ bool TaskManager::SaveClientState(Client *c, ClientTaskState *state) { for(unsigned int i=state->LastCompletedTaskLoaded; iCompletedTasks.size(); i++) { - _log(TASKS__CLIENTSAVE, "TaskManager::SaveClientState Saving Completed Task at slot %i", i); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTSAVE] TaskManager::SaveClientState Saving Completed Task at slot %i", i); int taskID = state->CompletedTasks[i].TaskID; if((taskID <= 0) || (taskID >= MAXTASKS) || (Tasks[taskID] == nullptr)) @@ -396,7 +396,7 @@ bool TaskManager::SaveClientState(Client *c, ClientTaskState *state) { std::string query = StringFormat(completedTaskQuery, characterID, state->CompletedTasks[i].CompletedTime, taskID, -1); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); continue; } @@ -413,7 +413,7 @@ bool TaskManager::SaveClientState(Client *c, ClientTaskState *state) { query = StringFormat(completedTaskQuery, characterID, state->CompletedTasks[i].CompletedTime, taskID, j); results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, ERR_MYSQLERROR, results.ErrorMessage().c_str()); } @@ -459,14 +459,14 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { state->ActiveTaskCount = 0; - _log(TASKS__CLIENTLOAD, "TaskManager::LoadClientState for character ID %d", characterID); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] TaskManager::LoadClientState for character ID %d", characterID); std::string query = StringFormat("SELECT `taskid`, `slot`, `acceptedtime` " "FROM `character_tasks` " "WHERE `charid` = %i ORDER BY acceptedtime", characterID); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "[TASKS]Error in TaskManager::LoadClientState load Tasks: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS]Error in TaskManager::LoadClientState load Tasks: %s", results.ErrorMessage().c_str()); return false; } @@ -475,17 +475,17 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { int slot = atoi(row[1]); if((taskID<0) || (taskID>=MAXTASKS)) { - LogFile->write(EQEmuLog::Error, "[TASKS]Task ID %i out of range while loading character tasks from database", taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Task ID %i out of range while loading character tasks from database", taskID); continue; } if((slot<0) || (slot>=MAXACTIVETASKS)) { - LogFile->write(EQEmuLog::Error, "[TASKS] Slot %i out of range while loading character tasks from database", slot); + Log.Out(Logs::General, Logs::Error, "[TASKS] Slot %i out of range while loading character tasks from database", slot); continue; } if(state->ActiveTasks[slot].TaskID != TASKSLOTEMPTY) { - LogFile->write(EQEmuLog::Error, "[TASKS] Slot %i for Task %is is already occupied.", slot, taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS] Slot %i for Task %is is already occupied.", slot, taskID); continue; } @@ -501,11 +501,11 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { ++state->ActiveTaskCount; - _log(TASKS__CLIENTLOAD, "TaskManager::LoadClientState. Char: %i Task ID %i, Accepted Time: %8X", characterID, taskID, acceptedtime); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] TaskManager::LoadClientState. Char: %i Task ID %i, Accepted Time: %8X", characterID, taskID, acceptedtime); } // Load Activities - _log(TASKS__CLIENTLOAD, "LoadClientState. Loading activities for character ID %d", characterID); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] LoadClientState. Loading activities for character ID %d", characterID); query = StringFormat("SELECT `taskid`, `activityid`, `donecount`, `completed` " "FROM `character_activities` " @@ -513,20 +513,20 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { "ORDER BY `taskid` ASC, `activityid` ASC", characterID); results = database.QueryDatabase(query); if (!results.Success()){ - LogFile->write(EQEmuLog::Error, "[TASKS]Error in TaskManager::LoadClientState load Activities: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS]Error in TaskManager::LoadClientState load Activities: %s", results.ErrorMessage().c_str()); return false; } for (auto row = results.begin(); row != results.end(); ++row) { int taskID = atoi(row[0]); if((taskID<0) || (taskID>=MAXTASKS)) { - LogFile->write(EQEmuLog::Error, "[TASKS]Task ID %i out of range while loading character activities from database", taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Task ID %i out of range while loading character activities from database", taskID); continue; } int activityID = atoi(row[1]); if((activityID<0) || (activityID>=MAXACTIVITIESPERTASK)) { - LogFile->write(EQEmuLog::Error, "[TASKS]Activity ID %i out of range while loading character activities from database", activityID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Activity ID %i out of range while loading character activities from database", activityID); continue; } @@ -540,7 +540,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { } if(activeTaskIndex == -1) { - LogFile->write(EQEmuLog::Error, "[TASKS]Activity %i found for task %i which client does not have.", activityID, taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Activity %i found for task %i which client does not have.", activityID, taskID); continue; } @@ -555,7 +555,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { state->ActiveTasks[activeTaskIndex].Activity[activityID].Updated = false; - _log(TASKS__CLIENTLOAD, "TaskManager::LoadClientState. Char: %i Task ID %i, ActivityID: %i, DoneCount: %i, Completed: %i", characterID, taskID, activityID, doneCount, completed); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] TaskManager::LoadClientState. Char: %i Task ID %i, ActivityID: %i, DoneCount: %i, Completed: %i", characterID, taskID, activityID, doneCount, completed); } @@ -566,7 +566,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { characterID); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "[TASKS]Error in TaskManager::LoadClientState load completed tasks: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS]Error in TaskManager::LoadClientState load completed tasks: %s", results.ErrorMessage().c_str()); return false; } @@ -582,7 +582,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { int taskID = atoi(row[0]); if((taskID <= 0) || (taskID >=MAXTASKS)) { - LogFile->write(EQEmuLog::Error, "[TASKS]Task ID %i out of range while loading completed tasks from database", taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Task ID %i out of range while loading completed tasks from database", taskID); continue; } @@ -592,7 +592,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { // completed. int activityID = atoi(row[1]); if((activityID<-1) || (activityID>=MAXACTIVITIESPERTASK)) { - LogFile->write(EQEmuLog::Error, "[TASKS]Activity ID %i out of range while loading completed tasks from database", activityID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Activity ID %i out of range while loading completed tasks from database", activityID); continue; } @@ -634,12 +634,12 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { characterID, MAXTASKS); results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "[TASKS]Error in TaskManager::LoadClientState load enabled tasks: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS]Error in TaskManager::LoadClientState load enabled tasks: %s", results.ErrorMessage().c_str()); else for (auto row = results.begin(); row != results.end(); ++row) { int taskID = atoi(row[0]); state->EnabledTasks.push_back(taskID); - _log(TASKS__CLIENTLOAD, "Adding TaskID %i to enabled tasks", taskID); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] Adding TaskID %i to enabled tasks", taskID); } // Check that there is an entry in the client task state for every activity in each task @@ -652,7 +652,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { c->Message(13, "Active Task Slot %i, references a task (%i), that does not exist. " "Removing from memory. Contact a GM to resolve this.",i, taskID); - LogFile->write(EQEmuLog::Error, "[TASKS]Character %i has task %i which does not exist.", characterID, taskID); + Log.Out(Logs::General, Logs::Error, "[TASKS]Character %i has task %i which does not exist.", characterID, taskID); state->ActiveTasks[i].TaskID=TASKSLOTEMPTY; continue; @@ -664,7 +664,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { "Removing from memory. Contact a GM to resolve this.", taskID, Tasks[taskID]->Title); - LogFile->write(EQEmuLog::Error, "[TASKS]Fatal error in character %i task state. Activity %i for " + Log.Out(Logs::General, Logs::Error, "[TASKS]Fatal error in character %i task state. Activity %i for " "Task %i either missing from client state or from task.", characterID, j, taskID); state->ActiveTasks[i].TaskID=TASKSLOTEMPTY; break; @@ -676,7 +676,7 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) { if(state->ActiveTasks[i].TaskID != TASKSLOTEMPTY) state->UnlockActivities(characterID, i); - _log(TASKS__CLIENTLOAD, "LoadClientState for Character ID %d DONE!", characterID); + Log.Out(Logs::General, Logs::Tasks, "[CLIENTLOAD] LoadClientState for Character ID %d DONE!", characterID); return true; } @@ -710,9 +710,9 @@ void ClientTaskState::EnableTask(int characterID, int taskCount, int *tasks) { } } - _log(TASKS__UPDATE, "New enabled task list "); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] New enabled task list "); for(unsigned int i=0; iwrite(EQEmuLog::Error, "[TASKS]Error in ClientTaskState::EnableTask %s %s", query.c_str(), results.ErrorMessage().c_str()); - + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Executing query %s", query.c_str()); + database.QueryDatabase(query); } void ClientTaskState::DisableTask(int charID, int taskCount, int *taskList) { @@ -757,9 +754,9 @@ void ClientTaskState::DisableTask(int charID, int taskCount, int *taskList) { } } - _log(TASKS__UPDATE, "New enabled task list "); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] New enabled task list "); for(unsigned int i=0; iwrite(EQEmuLog::Error, "[TASKS]Error in ClientTaskState::DisableTask %s %s", query.c_str(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Executing query %s", query.c_str()); + database.QueryDatabase(query); } bool ClientTaskState::IsTaskEnabled(int TaskID) { @@ -908,7 +903,7 @@ void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, i int TaskListIndex = 0; int PlayerLevel = c->GetLevel(); - _log(TASKS__UPDATE, "TaskSetSelector called for taskset %i. EnableTaskSize is %i", TaskSetID, + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskSetSelector called for taskset %i. EnableTaskSize is %i", TaskSetID, state->EnabledTasks.size()); if((TaskSetID<=0) || (TaskSetID>=MAXTASKSETS)) return; @@ -918,7 +913,7 @@ void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, i if(TaskSets[TaskSetID][0] == 0) { - _log(TASKS__UPDATE, "TaskSets[%i][0] == 0. All Tasks in Set enabled.", TaskSetID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskSets[%i][0] == 0. All Tasks in Set enabled.", TaskSetID); std::vector::iterator Iterator = TaskSets[TaskSetID].begin(); while((Iterator != TaskSets[TaskSetID].end()) && (TaskListIndex < MAXCHOOSERENTRIES)) { @@ -941,7 +936,7 @@ void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, i while((EnabledTaskIndex < state->EnabledTasks.size()) && (TaskSetIndex < TaskSets[TaskSetID].size()) && (TaskListIndex < MAXCHOOSERENTRIES)) { - _log(TASKS__UPDATE, "Comparing EnabledTasks[%i] (%i) with TaskSets[%i][%i] (%i)", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Comparing EnabledTasks[%i] (%i) with TaskSets[%i][%i] (%i)", EnabledTaskIndex, state->EnabledTasks[EnabledTaskIndex], TaskSetID, TaskSetIndex, TaskSets[TaskSetID][TaskSetIndex]); @@ -981,7 +976,7 @@ void TaskManager::SendTaskSelector(Client *c, Mob *mob, int TaskCount, int *Task return; } // Titanium OpCode: 0x5e7c - _log(TASKS__UPDATE, "TaskSelector for %i Tasks", TaskCount); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskSelector for %i Tasks", TaskCount); char *Ptr; int PlayerLevel = c->GetLevel(); @@ -1097,7 +1092,6 @@ void TaskManager::SendTaskSelector(Client *c, Mob *mob, int TaskCount, int *Task Ptr = Ptr + strlen(Ptr) + 1; } - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -1106,7 +1100,7 @@ void TaskManager::SendTaskSelector(Client *c, Mob *mob, int TaskCount, int *Task void TaskManager::SendTaskSelectorNew(Client *c, Mob *mob, int TaskCount, int *TaskList) { - _log(TASKS__UPDATE, "TaskSelector for %i Tasks", TaskCount); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskSelector for %i Tasks", TaskCount); int PlayerLevel = c->GetLevel(); @@ -1197,7 +1191,6 @@ void TaskManager::SendTaskSelectorNew(Client *c, Mob *mob, int TaskCount, int *T outapp->WriteString("Text3 Test"); outapp->WriteString(StartZone); // Zone number in ascii } - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -1275,16 +1268,15 @@ int ClientTaskState::GetActiveTaskID(int index) { static void DeleteCompletedTaskFromDatabase(int charID, int taskID) { - _log(TASKS__UPDATE, "DeleteCompletedTasksFromDatabase. CharID = %i, TaskID = %i", charID, taskID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] DeleteCompletedTasksFromDatabase. CharID = %i, TaskID = %i", charID, taskID); const std::string query = StringFormat("DELETE FROM completed_tasks WHERE charid=%i AND taskid = %i", charID, taskID); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "[TASKS]Error in CientTaskState::CancelTask %s, %s", query.c_str(), results.ErrorMessage().c_str()); return; } - _log(TASKS__UPDATE, "Delete query %s", query.c_str()); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Delete query %s", query.c_str()); } bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { @@ -1298,7 +1290,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { // On loading the client state, all activities that are not completed, are // marked as hidden. For Sequential (non-stepped) mode, we mark the first // activity as active if not complete. - _log(TASKS__UPDATE, "CharID: %i Task: %i Sequence mode is %i", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] CharID: %i Task: %i Sequence mode is %i", CharID, ActiveTasks[TaskIndex].TaskID, Task->SequenceMode); if(Task->SequenceMode == ActivitiesSequential) { @@ -1320,7 +1312,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { } if(AllActivitiesComplete && RuleB(TaskSystem, RecordCompletedTasks)) { if(RuleB(TasksSystem, KeepOneRecordPerCompletedTask)) { - _log(TASKS__UPDATE, "KeepOneRecord enabled"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] KeepOneRecord enabled"); std::vector::iterator Iterator = CompletedTasks.begin(); int ErasedElements = 0; while(Iterator != CompletedTasks.end()) { @@ -1332,7 +1324,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { else ++Iterator; } - _log(TASKS__UPDATE, "Erased Element count is %i", ErasedElements); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Erased Element count is %i", ErasedElements); if(ErasedElements) { LastCompletedTaskLoaded -= ErasedElements; DeleteCompletedTaskFromDatabase(CharID, ActiveTasks[TaskIndex].TaskID); @@ -1349,7 +1341,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { CompletedTasks.push_back(cti); } - _log(TASKS__UPDATE, "Returning sequential task, AllActivitiesComplete is %i", AllActivitiesComplete); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Returning sequential task, AllActivitiesComplete is %i", AllActivitiesComplete); return AllActivitiesComplete; } @@ -1358,7 +1350,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { bool CurrentStepComplete = true; - _log(TASKS__UPDATE, "Current Step is %i, Last Step is %i", ActiveTasks[TaskIndex].CurrentStep, Task->LastStep); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Current Step is %i, Last Step is %i", ActiveTasks[TaskIndex].CurrentStep, Task->LastStep); // If CurrentStep is -1, this is the first call to this method since loading the // client state. Unlock all activities with a step number of 0 if(ActiveTasks[TaskIndex].CurrentStep == -1) { @@ -1393,7 +1385,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { // If we are only keeping one completed record per task, and the player has done // the same task again, erase the previous completed entry for this task. if(RuleB(TasksSystem, KeepOneRecordPerCompletedTask)) { - _log(TASKS__UPDATE, "KeepOneRecord enabled"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] KeepOneRecord enabled"); std::vector::iterator Iterator = CompletedTasks.begin(); int ErasedElements = 0; while(Iterator != CompletedTasks.end()) { @@ -1405,7 +1397,7 @@ bool ClientTaskState::UnlockActivities(int CharID, int TaskIndex) { else ++Iterator; } - _log(TASKS__UPDATE, "Erased Element count is %i", ErasedElements); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Erased Element count is %i", ErasedElements); if(ErasedElements) { LastCompletedTaskLoaded -= ErasedElements; DeleteCompletedTaskFromDatabase(CharID, ActiveTasks[TaskIndex].TaskID); @@ -1455,7 +1447,7 @@ bool ClientTaskState::UpdateTasksByNPC(Client *c, int ActivityType, int NPCTypeI int Ret = false; - _log(TASKS__UPDATE, "ClientTaskState::UpdateTasks for NPCTypeID: %d", NPCTypeID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState::UpdateTasks for NPCTypeID: %d", NPCTypeID); // If the client has no tasks, there is nothing further to check. @@ -1477,7 +1469,7 @@ bool ClientTaskState::UpdateTasksByNPC(Client *c, int ActivityType, int NPCTypeI if(Task->Activity[j].Type != ActivityType) continue; // Is there a zone restriction on the activity ? if((Task->Activity[j].ZoneID >0) && (Task->Activity[j].ZoneID != (int)zone->GetZoneID())) { - _log(TASKS__UPDATE, "Char: %s Task: %i, Activity %i, Activity type %i for NPC %i failed zone check", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Char: %s Task: %i, Activity %i, Activity type %i for NPC %i failed zone check", c->GetName(), ActiveTasks[i].TaskID, j, ActivityType, NPCTypeID); continue; } @@ -1498,7 +1490,7 @@ bool ClientTaskState::UpdateTasksByNPC(Client *c, int ActivityType, int NPCTypeI continue; } // We found an active task to kill this type of NPC, so increment the done count - _log(TASKS__UPDATE, "Calling increment done count ByNPC"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Calling increment done count ByNPC"); IncrementDoneCount(c, Task, i, j); Ret = true; } @@ -1577,7 +1569,7 @@ void ClientTaskState::UpdateTasksForItem(Client *c, ActivityType Type, int ItemI // If the client has no tasks, there is nothing further to check. - _log(TASKS__UPDATE, "ClientTaskState::UpdateTasksForItem(%d,%d)", Type, ItemID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState::UpdateTasksForItem(%d,%d)", Type, ItemID); if(ActiveTaskCount == 0) return; @@ -1597,7 +1589,7 @@ void ClientTaskState::UpdateTasksForItem(Client *c, ActivityType Type, int ItemI if(Task->Activity[j].Type != (int)Type) continue; // Is there a zone restriction on the activity ? if((Task->Activity[j].ZoneID >0) && (Task->Activity[j].ZoneID != (int)zone->GetZoneID())) { - _log(TASKS__UPDATE, "Char: %s Activity type %i for Item %i failed zone check", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Char: %s Activity type %i for Item %i failed zone check", c->GetName(), Type, ItemID); continue; } @@ -1618,7 +1610,7 @@ void ClientTaskState::UpdateTasksForItem(Client *c, ActivityType Type, int ItemI continue; } // We found an active task related to this item, so increment the done count - _log(TASKS__UPDATE, "Calling increment done count ForItem"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Calling increment done count ForItem"); IncrementDoneCount(c, Task, i, j, Count); } } @@ -1630,7 +1622,7 @@ void ClientTaskState::UpdateTasksOnExplore(Client *c, int ExploreID) { // If the client has no tasks, there is nothing further to check. - _log(TASKS__UPDATE, "ClientTaskState::UpdateTasksOnExplore(%i)", ExploreID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState::UpdateTasksOnExplore(%i)", ExploreID); if(ActiveTaskCount == 0) return; for(int i=0; iActivity[j].Type != ActivityExplore) continue; if((Task->Activity[j].ZoneID >0) && (Task->Activity[j].ZoneID != (int)zone->GetZoneID())) { - _log(TASKS__UPDATE, "Char: %s Explore exploreid %i failed zone check", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Char: %s Explore exploreid %i failed zone check", c->GetName(), ExploreID); continue; } @@ -1670,7 +1662,7 @@ void ClientTaskState::UpdateTasksOnExplore(Client *c, int ExploreID) { } // We found an active task to explore this area, so set done count to goal count // (Only a goal count of 1 makes sense for explore activities?) - _log(TASKS__UPDATE, "Increment on explore"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Increment on explore"); IncrementDoneCount(c, Task, i, j, Task->Activity[j].GoalCount - ActiveTasks[i].Activity[j].DoneCount); @@ -1684,7 +1676,7 @@ bool ClientTaskState::UpdateTasksOnDeliver(Client *c, uint32 *Items, int Cash, i bool Ret = false; - _log(TASKS__UPDATE, "ClientTaskState::UpdateTasksForOnDeliver(%d)", NPCTypeID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState::UpdateTasksForOnDeliver(%d)", NPCTypeID); if(ActiveTaskCount == 0) return false; @@ -1705,7 +1697,7 @@ bool ClientTaskState::UpdateTasksOnDeliver(Client *c, uint32 *Items, int Cash, i (Task->Activity[j].Type != ActivityGiveCash)) continue; // Is there a zone restriction on the activity ? if((Task->Activity[j].ZoneID >0) && (Task->Activity[j].ZoneID != (int)zone->GetZoneID())) { - _log(TASKS__UPDATE, "Char: %s Deliver activity failed zone check (current zone %i, need zone %i", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Char: %s Deliver activity failed zone check (current zone %i, need zone %i", c->GetName(), zone->GetZoneID(), Task->Activity[j].ZoneID); continue; } @@ -1714,7 +1706,7 @@ bool ClientTaskState::UpdateTasksOnDeliver(Client *c, uint32 *Items, int Cash, i // Is the activity related to these items ? // if((Task->Activity[j].Type == ActivityGiveCash) && Cash) { - _log(TASKS__UPDATE, "Increment on GiveCash"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Increment on GiveCash"); IncrementDoneCount(c, Task, i, j, Cash); Ret = true; } @@ -1738,7 +1730,7 @@ bool ClientTaskState::UpdateTasksOnDeliver(Client *c, uint32 *Items, int Cash, i continue; } // We found an active task related to this item, so increment the done count - _log(TASKS__UPDATE, "Increment on GiveItem"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Increment on GiveItem"); IncrementDoneCount(c, Task, i, j, 1); Ret = true; } @@ -1753,7 +1745,7 @@ void ClientTaskState::UpdateTasksOnTouch(Client *c, int ZoneID) { // If the client has no tasks, there is nothing further to check. - _log(TASKS__UPDATE, "ClientTaskState::UpdateTasksOnTouch(%i)", ZoneID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState::UpdateTasksOnTouch(%i)", ZoneID); if(ActiveTaskCount == 0) return; for(int i=0; iActivity[j].Type != ActivityTouch) continue; if(Task->Activity[j].GoalMethod != METHODSINGLEID) continue; if(Task->Activity[j].ZoneID != ZoneID) { - _log(TASKS__UPDATE, "Char: %s Touch activity failed zone check", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Char: %s Touch activity failed zone check", c->GetName()); continue; } // We found an active task to zone into this zone, so set done count to goal count // (Only a goal count of 1 makes sense for touch activities?) - _log(TASKS__UPDATE, "Increment on Touch"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Increment on Touch"); IncrementDoneCount(c, Task, i, j, Task->Activity[j].GoalCount - ActiveTasks[i].Activity[j].DoneCount); } @@ -1788,7 +1780,7 @@ void ClientTaskState::UpdateTasksOnTouch(Client *c, int ZoneID) { } void ClientTaskState::IncrementDoneCount(Client *c, TaskInformation* Task, int TaskIndex, int ActivityID, int Count, bool ignore_quest_update) { - _log(TASKS__UPDATE, "IncrementDoneCount"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] IncrementDoneCount"); ActiveTasks[TaskIndex].Activity[ActivityID].DoneCount += Count; @@ -1805,7 +1797,7 @@ void ClientTaskState::IncrementDoneCount(Client *c, TaskInformation* Task, int T ActiveTasks[TaskIndex].Activity[ActivityID].Updated=true; // Have we reached the goal count for this activity ? if(ActiveTasks[TaskIndex].Activity[ActivityID].DoneCount >= Task->Activity[ActivityID].GoalCount) { - _log(TASKS__UPDATE, "Done (%i) = Goal (%i) for Activity %i", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Done (%i) = Goal (%i) for Activity %i", ActiveTasks[TaskIndex].Activity[ActivityID].DoneCount, Task->Activity[ActivityID].GoalCount, ActivityID); @@ -1814,7 +1806,7 @@ void ClientTaskState::IncrementDoneCount(Client *c, TaskInformation* Task, int T ActiveTasks[TaskIndex].Activity[ActivityID].State = ActivityCompleted; // Unlock subsequent activities for this task bool TaskComplete = UnlockActivities(c->CharacterID(), TaskIndex); - _log(TASKS__UPDATE, "TaskCompleted is %i", TaskComplete); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskCompleted is %i", TaskComplete); // and by the 'Task Stage Completed' message c->SendTaskActivityComplete(ActiveTasks[TaskIndex].TaskID, ActivityID, TaskIndex); // Send the updated task/activity list to the client @@ -1991,7 +1983,7 @@ bool ClientTaskState::IsTaskActive(int TaskID) { void ClientTaskState::FailTask(Client *c, int TaskID) { - _log(TASKS__UPDATE, "FailTask %i, ActiveTaskCount is %i", TaskID, ActiveTaskCount); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] FailTask %i, ActiveTaskCount is %i", TaskID, ActiveTaskCount); if(ActiveTaskCount == 0) return; for(int i=0; i= Task->ActivityCount) return false; - _log(TASKS__UPDATE, "ClientTaskState IsTaskActivityActive(%i, %i). State is %i ", TaskID, ActivityID, + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState IsTaskActivityActive(%i, %i). State is %i ", TaskID, ActivityID, ActiveTasks[ActiveTaskIndex].Activity[ActivityID].State); @@ -2045,7 +2037,7 @@ bool ClientTaskState::IsTaskActivityActive(int TaskID, int ActivityID) { void ClientTaskState::UpdateTaskActivity(Client *c, int TaskID, int ActivityID, int Count, bool ignore_quest_update /*= false*/) { - _log(TASKS__UPDATE, "ClientTaskState UpdateTaskActivity(%i, %i, %i).", TaskID, ActivityID, Count); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState UpdateTaskActivity(%i, %i, %i).", TaskID, ActivityID, Count); // Quick sanity check if((ActivityID<0) || (ActiveTaskCount==0)) return; @@ -2072,14 +2064,14 @@ void ClientTaskState::UpdateTaskActivity(Client *c, int TaskID, int ActivityID, // The Activity is not currently active if(ActiveTasks[ActiveTaskIndex].Activity[ActivityID].State != ActivityActive) return; - _log(TASKS__UPDATE, "Increment done count on UpdateTaskActivity"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Increment done count on UpdateTaskActivity"); IncrementDoneCount(c, Task, ActiveTaskIndex, ActivityID, Count, ignore_quest_update); } void ClientTaskState::ResetTaskActivity(Client *c, int TaskID, int ActivityID) { - _log(TASKS__UPDATE, "ClientTaskState UpdateTaskActivity(%i, %i, 0).", TaskID, ActivityID); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState UpdateTaskActivity(%i, %i, 0).", TaskID, ActivityID); // Quick sanity check if((ActivityID<0) || (ActiveTaskCount==0)) return; @@ -2107,7 +2099,7 @@ void ClientTaskState::ResetTaskActivity(Client *c, int TaskID, int ActivityID) { // The Activity is not currently active if(ActiveTasks[ActiveTaskIndex].Activity[ActivityID].State != ActivityActive) return; - _log(TASKS__UPDATE, "ResetTaskActivityCount"); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ResetTaskActivityCount"); ActiveTasks[ActiveTaskIndex].Activity[ActivityID].DoneCount = 0; @@ -2173,7 +2165,7 @@ int ClientTaskState::IsTaskCompleted(int TaskID) { if(!(RuleB(TaskSystem, RecordCompletedTasks))) return -1; for(unsigned int i=0; iunknown04 = 0x00000002; - _log("[TASKS]SendTasksComplete"); + Log.LogDebugType(Logs::Detail, Logs::Tasks, "SendTasksComplete"); DumpPacket(outapp); fflush(stdout); QueuePacket(outapp); @@ -2275,7 +2267,7 @@ void Client::SendTaskComplete(int TaskIndex) { void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) { - _log(TASKS__UPDATE, "Task History Requested for Completed Task Index %i", TaskIndex); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Task History Requested for Completed Task Index %i", TaskIndex); // We only sent the most recent 50 completed tasks, so we need to offset the Index the client sent to us. @@ -2346,7 +2338,6 @@ void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) { } } - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -2375,7 +2366,6 @@ void Client::SendTaskActivityComplete(int TaskID, int ActivityID, int TaskIndex, //tac->unknown5 = 0x00000001; tac->unknown5 = TaskIncomplete; - _pkt(TASKS__PACKETS, outapp); QueuePacket(outapp); safe_delete(outapp); @@ -2406,8 +2396,7 @@ void Client::SendTaskFailed(int TaskID, int TaskIndex) { //tac->unknown5 = 0x00000001; tac->unknown5 = 0; // 0 for task complete or failed. - _log(TASKS__UPDATE, "TaskFailed"); - _pkt(TASKS__PACKETS, outapp); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskFailed"); QueuePacket(outapp); safe_delete(outapp); @@ -2428,7 +2417,7 @@ void TaskManager::SendCompletedTasksToClient(Client *c, ClientTaskState *State) if(State->CompletedTasks.size() > 50) FirstTaskToSend = State->CompletedTasks.size() - 50; - _log(TASKS__UPDATE, "Completed Task Count: %i, First Task to send is %i, Last is %i", + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Completed Task Count: %i, First Task to send is %i, Last is %i", State->CompletedTasks.size(), FirstTaskToSend, LastTaskToSend); /* for(iterator=State->CompletedTasks.begin(); iterator!=State->CompletedTasks.end(); iterator++) { @@ -2464,7 +2453,6 @@ void TaskManager::SendCompletedTasksToClient(Client *c, ClientTaskState *State) buf = buf + 4; } - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -2506,7 +2494,6 @@ void TaskManager::SendTaskActivityShort(Client *c, int TaskID, int ActivityID, i tass->ActivityType = 0xffffffff; tass->unknown4 = 0x00000000; - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -2594,7 +2581,6 @@ void TaskManager::SendTaskActivityLong(Client *c, int TaskID, int ActivityID, in tat->unknown1 = 0x00000001; - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -2673,7 +2659,6 @@ void TaskManager::SendTaskActivityNew(Client *c, int TaskID, int ActivityID, int outapp->WriteString(itoa(Tasks[TaskID]->Activity[ActivityID].ZoneID)); - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -2689,12 +2674,12 @@ void TaskManager::SendActiveTasksToClient(Client *c, bool TaskComplete) { int StartTime = c->GetTaskStartTime(TaskIndex); SendActiveTaskDescription(c, TaskID, TaskIndex, StartTime, Tasks[TaskID]->Duration, false); - _log(TASKS__UPDATE, "SendActiveTasksToClient: Task %i, Activities: %i", TaskID, GetActivityCount(TaskID)); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] SendActiveTasksToClient: Task %i, Activities: %i", TaskID, GetActivityCount(TaskID)); int Sequence = 0; for(int Activity=0; ActivityGetTaskActivityState(TaskIndex, Activity) != ActivityHidden) { - _log(TASKS__UPDATE, " Long: %i, %i, %i Complete=%i", TaskID, Activity, TaskIndex, TaskComplete); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Long: %i, %i, %i Complete=%i", TaskID, Activity, TaskIndex, TaskComplete); if(Activity==GetActivityCount(TaskID)-1) SendTaskActivityLong(c, TaskID, Activity, TaskIndex, Tasks[TaskID]->Activity[Activity].Optional, @@ -2704,7 +2689,7 @@ void TaskManager::SendActiveTasksToClient(Client *c, bool TaskComplete) { Tasks[TaskID]->Activity[Activity].Optional, 0); } else { - _log(TASKS__UPDATE, " Short: %i, %i, %i", TaskID, Activity, TaskIndex); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Short: %i, %i, %i", TaskID, Activity, TaskIndex); SendTaskActivityShort(c, TaskID, Activity, TaskIndex); } Sequence++; @@ -2725,13 +2710,13 @@ void TaskManager::SendSingleActiveTaskToClient(Client *c, int TaskIndex, bool Ta int StartTime = c->GetTaskStartTime(TaskIndex); SendActiveTaskDescription(c, TaskID, TaskIndex, StartTime, Tasks[TaskID]->Duration, BringUpTaskJournal); - _log(TASKS__UPDATE, "SendSingleActiveTasksToClient: Task %i, Activities: %i", TaskID, GetActivityCount(TaskID)); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] SendSingleActiveTasksToClient: Task %i, Activities: %i", TaskID, GetActivityCount(TaskID)); int Sequence = 0; for(int Activity=0; ActivityGetTaskActivityState(TaskIndex, Activity) != ActivityHidden) { - _log(TASKS__UPDATE, " Long: %i, %i, %i Complete=%i", TaskID, Activity, TaskIndex, TaskComplete); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Long: %i, %i, %i Complete=%i", TaskID, Activity, TaskIndex, TaskComplete); if(Activity==GetActivityCount(TaskID)-1) SendTaskActivityLong(c, TaskID, Activity, TaskIndex, Tasks[TaskID]->Activity[Activity].Optional, TaskComplete); @@ -2740,7 +2725,7 @@ void TaskManager::SendSingleActiveTaskToClient(Client *c, int TaskIndex, bool Ta Tasks[TaskID]->Activity[Activity].Optional, 0); } else { - _log(TASKS__UPDATE, " Short: %i, %i, %i", TaskID, Activity, TaskIndex); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] Short: %i, %i, %i", TaskID, Activity, TaskIndex); SendTaskActivityShort(c, TaskID, Activity, TaskIndex); } Sequence++; @@ -2856,7 +2841,6 @@ void TaskManager::SendActiveTaskDescription(Client *c, int TaskID, int SequenceN tdt = (TaskDescriptionTrailer_Struct*)Ptr; tdt->Points = 0x00000000; // Points Count - _pkt(TASKS__PACKETS, outapp); c->QueuePacket(outapp); safe_delete(outapp); @@ -2919,8 +2903,7 @@ void ClientTaskState::CancelTask(Client *c, int SequenceNumber, bool RemoveFromD cts->SequenceNumber = SequenceNumber; cts->unknown4 = 0x00000002; - _log(TASKS__UPDATE, "CancelTask"); - _pkt(TASKS__PACKETS, outapp); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] CancelTask"); c->QueuePacket(outapp); safe_delete(outapp); @@ -2932,24 +2915,24 @@ void ClientTaskState::CancelTask(Client *c, int SequenceNumber, bool RemoveFromD void ClientTaskState::RemoveTask(Client *c, int sequenceNumber) { int characterID = c->CharacterID(); - _log(TASKS__UPDATE, "ClientTaskState Cancel Task %i ", sequenceNumber); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState Cancel Task %i ", sequenceNumber); std::string query = StringFormat("DELETE FROM character_activities WHERE charid=%i AND taskid = %i", characterID, ActiveTasks[sequenceNumber].TaskID); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "[TASKS]Error in CientTaskState::CancelTask %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS] Error in CientTaskState::CancelTask %s", results.ErrorMessage().c_str()); return; } - _log(TASKS__UPDATE, "CancelTask: %s", query.c_str()); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] CancelTask: %s", query.c_str()); query = StringFormat("DELETE FROM character_tasks WHERE charid=%i AND taskid = %i", characterID, ActiveTasks[sequenceNumber].TaskID); results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "[TASKS]Error in CientTaskState::CancelTask %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "[TASKS] Error in CientTaskState::CancelTask %s", results.ErrorMessage().c_str()); - _log(TASKS__UPDATE, "CancelTask: %s", query.c_str()); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] CancelTask: %s", query.c_str()); ActiveTasks[sequenceNumber].TaskID = TASKSLOTEMPTY; ActiveTaskCount--; @@ -2990,7 +2973,7 @@ void ClientTaskState::AcceptNewTask(Client *c, int TaskID, int NPCID) { // int FreeSlot = -1; for(int i=0; iProximityManager.CheckProximities(X, Y, Z); - if(ExploreID>0) { - _log(TASKS__PROXIMITY, "Position %8.3f, %8.3f, %8.3f is within proximity %i\n", X, Y, Z, ExploreID); + if(ExploreID > 0) { + Log.Out(Logs::General, Logs::Tasks, "[PROXIMITY] Position %8.3f, %8.3f, %8.3f is within proximity %i", X, Y, Z, ExploreID); UpdateTasksOnExplore(c, ExploreID); } } @@ -3073,7 +3056,7 @@ TaskGoalListManager::~TaskGoalListManager() { bool TaskGoalListManager::LoadLists() { - _log(TASKS__GLOBALLOAD, "TaskGoalListManager::LoadLists Called"); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] TaskGoalListManager::LoadLists Called"); for(int i=0; i< NumberOfLists; i++) safe_delete_array(TaskGoalLists[i].GoalItemEntries); @@ -3088,12 +3071,11 @@ bool TaskGoalListManager::LoadLists() { "ORDER BY `listid`"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, query.c_str(), results.ErrorMessage().c_str()); return false; } NumberOfLists = results.RowCount(); - _log(TASKS__GLOBALLOAD, "Database returned a count of %i lists", NumberOfLists); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Database returned a count of %i lists", NumberOfLists); TaskGoalLists = new TaskGoalList_Struct[NumberOfLists]; @@ -3122,7 +3104,6 @@ bool TaskGoalListManager::LoadLists() { listID, size); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, ERR_MYSQLERROR, query.c_str(), results.ErrorMessage().c_str()); TaskGoalLists[listIndex].Size = 0; continue; } @@ -3207,7 +3188,7 @@ std::vector TaskGoalListManager::GetListContents(int ListID) { bool TaskGoalListManager::IsInList(int ListID, int Entry) { - _log(TASKS__UPDATE, "TaskGoalListManager::IsInList(%i, %i)", ListID, Entry); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskGoalListManager::IsInList(%i, %i)", ListID, Entry); int ListIndex = GetListByID(ListID); @@ -3227,7 +3208,7 @@ bool TaskGoalListManager::IsInList(int ListID, int Entry) { else if(Entry < TaskGoalLists[ListIndex].GoalItemEntries[MiddleEntry]) LastEntry = MiddleEntry - 1; else { - _log(TASKS__UPDATE, "TaskGoalListManager::IsInList(%i, %i) returning true", ListIndex, Entry); + Log.Out(Logs::General, Logs::Tasks, "[UPDATE] TaskGoalListManager::IsInList(%i, %i) returning true", ListIndex, Entry); return true; } @@ -3250,7 +3231,7 @@ TaskProximityManager::~TaskProximityManager() { bool TaskProximityManager::LoadProximities(int zoneID) { TaskProximity proximity; - _log(TASKS__GLOBALLOAD, "TaskProximityManager::LoadProximities Called for zone %i", zoneID); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] TaskProximityManager::LoadProximities Called for zone %i", zoneID); TaskProximities.clear(); std::string query = StringFormat("SELECT `exploreid`, `minx`, `maxx`, " @@ -3259,7 +3240,6 @@ bool TaskProximityManager::LoadProximities(int zoneID) { "ORDER BY `zoneid` ASC", zoneID); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in TaskProximityManager::LoadProximities %s %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -3285,7 +3265,7 @@ int TaskProximityManager::CheckProximities(float X, float Y, float Z) { TaskProximity* P = &TaskProximities[i]; - _log(TASKS__PROXIMITY, "Checking %8.3f, %8.3f, %8.3f against %8.3f, %8.3f, %8.3f, %8.3f, %8.3f, %8.3f", + Log.Out(Logs::General, Logs::Tasks, "[PROXIMITY] Checking %8.3f, %8.3f, %8.3f against %8.3f, %8.3f, %8.3f, %8.3f, %8.3f, %8.3f", X, Y, Z, P->MinX, P->MaxX, P->MinY, P->MaxY, P->MinZ, P->MaxZ); if(X < P->MinX || X > P->MaxX || Y < P->MinY || Y > P->MaxY || diff --git a/zone/titles.cpp b/zone/titles.cpp index 109a793b3..3a4162060 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -40,7 +40,6 @@ bool TitleManager::LoadTitles() "`status`, `item_id`, `prefix`, `suffix`, `title_set` FROM titles"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Unable to load titles: %s : %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -263,7 +262,6 @@ void TitleManager::CreateNewPlayerTitle(Client *client, const char *title) safe_delete_array(escTitle); results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error adding title: %s %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -296,7 +294,6 @@ void TitleManager::CreateNewPlayerSuffix(Client *client, const char *suffix) safe_delete_array(escSuffix); results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error adding title suffix: %s %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -351,7 +348,7 @@ void Client::EnableTitle(int titleSet) { CharacterID(), titleSet); auto results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in EnableTitle query for titleset %i and charid %i", titleSet, CharacterID()); + Log.Out(Logs::General, Logs::Error, "Error in EnableTitle query for titleset %i and charid %i", titleSet, CharacterID()); } @@ -362,7 +359,6 @@ bool Client::CheckTitle(int titleSet) { titleSet, CharacterID()); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in CheckTitle query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -380,9 +376,6 @@ void Client::RemoveTitle(int titleSet) { std::string query = StringFormat("DELETE FROM player_titlesets " "WHERE `title_set` = %i AND `char_id` = %i", titleSet, CharacterID()); - auto results = database.QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in RemoveTitle query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - + database.QueryDatabase(query); } diff --git a/zone/tradeskills.cpp b/zone/tradeskills.cpp index e1cbbafc3..07ae6d2a5 100644 --- a/zone/tradeskills.cpp +++ b/zone/tradeskills.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include @@ -42,7 +42,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme { if (!user || !in_augment) { - LogFile->write(EQEmuLog::Error, "Client or AugmentItem_Struct not set in Object::HandleAugmentation"); + Log.Out(Logs::General, Logs::Error, "Client or AugmentItem_Struct not set in Object::HandleAugmentation"); return; } @@ -89,7 +89,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme if(!container) { - LogFile->write(EQEmuLog::Error, "Player tried to augment an item without a container set."); + Log.Out(Logs::General, Logs::Error, "Player tried to augment an item without a container set."); user->Message(13, "Error: This item is not a container!"); return; } @@ -243,7 +243,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Object *worldo) { if (!user || !in_combine) { - LogFile->write(EQEmuLog::Error, "Client or NewCombine_Struct not set in Object::HandleCombine"); + Log.Out(Logs::General, Logs::Error, "Client or NewCombine_Struct not set in Object::HandleCombine"); return; } @@ -418,7 +418,7 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob if(success && spec.replace_container) { if(worldcontainer){ //should report this error, but we dont have the recipe ID, so its not very useful - LogFile->write(EQEmuLog::Error, "Replace container combine executed in a world container."); + Log.Out(Logs::General, Logs::Error, "Replace container combine executed in a world container."); } else user->DeleteItemInInventory(in_combine->container_slot, 0, true); @@ -444,7 +444,7 @@ void Object::HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac //ask the database for the recipe to make sure it exists... DBTradeskillRecipe_Struct spec; if (!database.GetTradeRecipe(rac->recipe_id, rac->object_type, rac->some_id, user->CharacterID(), &spec)) { - LogFile->write(EQEmuLog::Error, "Unknown recipe for HandleAutoCombine: %u\n", rac->recipe_id); + Log.Out(Logs::General, Logs::Error, "Unknown recipe for HandleAutoCombine: %u\n", rac->recipe_id); user->QueuePacket(outapp); safe_delete(outapp); return; @@ -467,21 +467,20 @@ void Object::HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac rac->recipe_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in HandleAutoCombine query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); user->QueuePacket(outapp); safe_delete(outapp); return; } if(results.RowCount() < 1) { - LogFile->write(EQEmuLog::Error, "Error in HandleAutoCombine: no components returned"); + Log.Out(Logs::General, Logs::Error, "Error in HandleAutoCombine: no components returned"); user->QueuePacket(outapp); safe_delete(outapp); return; } if(results.RowCount() > 10) { - LogFile->write(EQEmuLog::Error, "Error in HandleAutoCombine: too many components returned (%u)", results.RowCount()); + Log.Out(Logs::General, Logs::Error, "Error in HandleAutoCombine: too many components returned (%u)", results.RowCount()); user->QueuePacket(outapp); safe_delete(outapp); return; @@ -676,7 +675,6 @@ void Client::TradeskillSearchResults(const std::string query, unsigned long objt auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in TradeskillSearchResults query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -684,7 +682,7 @@ void Client::TradeskillSearchResults(const std::string query, unsigned long objt return; //search gave no results... not an error if(results.ColumnCount() != 6) { - LogFile->write(EQEmuLog::Error, "Error in TradeskillSearchResults query '%s': Invalid column count in result", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error in TradeskillSearchResults query '%s': Invalid column count in result", query.c_str()); return; } @@ -730,17 +728,16 @@ void Client::SendTradeskillDetails(uint32 recipe_id) { recipe_id); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in SendTradeskillDetails query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } if(results.RowCount() < 1) { - LogFile->write(EQEmuLog::Error, "Error in SendTradeskillDetails: no components returned"); + Log.Out(Logs::General, Logs::Error, "Error in SendTradeskillDetails: no components returned"); return; } if(results.RowCount() > 10) { - LogFile->write(EQEmuLog::Error, "Error in SendTradeskillDetails: too many components returned (%u)", results.RowCount()); + Log.Out(Logs::General, Logs::Error, "Error in SendTradeskillDetails: too many components returned (%u)", results.RowCount()); return; } @@ -901,7 +898,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) { //handle caps if(spec->nofail) { chance = 100; //cannot fail. - _log(TRADESKILLS__TRACE, "...This combine cannot fail."); + Log.Out(Logs::Detail, Logs::Tradeskills, "...This combine cannot fail."); } else if(over_trivial >= 0) { // At reaching trivial the chance goes to 95% going up an additional // percent for every 40 skillpoints above the trivial. @@ -921,8 +918,8 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) { chance = 95; } - _log(TRADESKILLS__TRACE, "...Current skill: %d , Trivial: %d , Success chance: %f percent", user_skill , spec->trivial , chance); - _log(TRADESKILLS__TRACE, "...Bonusstat: %d , INT: %d , WIS: %d , DEX: %d , STR: %d", bonusstat , GetINT() , GetWIS() , GetDEX() , GetSTR()); + Log.Out(Logs::Detail, Logs::Tradeskills, "...Current skill: %d , Trivial: %d , Success chance: %f percent", user_skill , spec->trivial , chance); + Log.Out(Logs::Detail, Logs::Tradeskills, "...Bonusstat: %d , INT: %d , WIS: %d , DEX: %d , STR: %d", bonusstat , GetINT() , GetWIS() , GetDEX() , GetSTR()); float res = zone->random.Real(0, 99); int aa_chance = 0; @@ -1066,7 +1063,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) { Message_StringID(4, TRADESKILL_SUCCEED, spec->name.c_str()); - _log(TRADESKILLS__TRACE, "Tradeskill success"); + Log.Out(Logs::Detail, Logs::Tradeskills, "Tradeskill success"); itr = spec->onsuccess.begin(); while(itr != spec->onsuccess.end() && !spec->quest) { @@ -1098,7 +1095,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) { Message_StringID(MT_Emote,TRADESKILL_FAILED); - _log(TRADESKILLS__TRACE, "Tradeskill failed"); + Log.Out(Logs::Detail, Logs::Tradeskills, "Tradeskill failed"); if (this->GetGroup()) { entity_list.MessageGroup(this,true,MT_Skills,"%s was unsuccessful in %s tradeskill attempt.",GetName(),this->GetGender() == 0 ? "his" : this->GetGender() == 1 ? "her" : "its"); @@ -1177,9 +1174,9 @@ void Client::CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float NotifyNewTitlesAvailable(); } - _log(TRADESKILLS__TRACE, "...skillup_modifier: %f , success_modifier: %d , stat modifier: %d", skillup_modifier , success_modifier , stat_modifier); - _log(TRADESKILLS__TRACE, "...Stage1 chance was: %f percent", chance_stage1); - _log(TRADESKILLS__TRACE, "...Stage2 chance was: %f percent. 0 percent means stage1 failed", chance_stage2); + Log.Out(Logs::Detail, Logs::Tradeskills, "...skillup_modifier: %f , success_modifier: %d , stat modifier: %d", skillup_modifier , success_modifier , stat_modifier); + Log.Out(Logs::Detail, Logs::Tradeskills, "...Stage1 chance was: %f percent", chance_stage1); + Log.Out(Logs::Detail, Logs::Tradeskills, "...Stage2 chance was: %f percent. 0 percent means stage1 failed", chance_stage2); } bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint32 some_id, @@ -1232,8 +1229,8 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 buf2.c_str(), containers.c_str(), count, sum); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe search, query: %s", query.c_str()); - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe search, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe search, query: %s", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe search, error: %s", results.ErrorMessage().c_str()); return false; } @@ -1254,7 +1251,7 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 //length limit on buf2 if(index == 214) { //Maximum number of recipe matches (19 * 215 = 4096) - LogFile->write(EQEmuLog::Error, "GetTradeRecipe warning: Too many matches. Unable to search all recipe entries. Searched %u of %u possible entries.", index + 1, results.RowCount()); + Log.Out(Logs::General, Logs::Error, "GetTradeRecipe warning: Too many matches. Unable to search all recipe entries. Searched %u of %u possible entries.", index + 1, results.RowCount()); break; } } @@ -1266,8 +1263,8 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 "AND sum(tre.item_id * tre.componentcount) = %u", buf2.c_str(), count, sum); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe, re-query: %s", query.c_str()); - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe, re-query: %s", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe, error: %s", results.ErrorMessage().c_str()); return false; } } @@ -1292,18 +1289,18 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 "AND tre.item_id = %u;", buf2.c_str(), containerId); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe, re-query: %s", query.c_str()); - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe, re-query: %s", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe, error: %s", results.ErrorMessage().c_str()); return false; } if(results.RowCount() == 0) { //Recipe contents matched more than 1 recipe, but not in this container - LogFile->write(EQEmuLog::Error, "Combine error: Incorrect container is being used!"); + Log.Out(Logs::General, Logs::Error, "Combine error: Incorrect container is being used!"); return false; } if (results.RowCount() > 1) //Recipe contents matched more than 1 recipe in this container - LogFile->write(EQEmuLog::Error, "Combine error: Recipe is not unique! %u matches found for container %u. Continuing with first recipe match.", results.RowCount(), containerId); + Log.Out(Logs::General, Logs::Error, "Combine error: Recipe is not unique! %u matches found for container %u. Continuing with first recipe match.", results.RowCount(), containerId); } @@ -1320,7 +1317,6 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 recipe_id); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in tradeskill verify query: '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return GetTradeRecipe(recipe_id, c_type, some_id, char_id, spec); } @@ -1375,8 +1371,8 @@ bool ZoneDatabase::GetTradeRecipe(uint32 recipe_id, uint8 c_type, uint32 some_id char_id, (unsigned long)recipe_id, containers.c_str()); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe, query: %s", query.c_str()); - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecipe, error: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe, query: %s", query.c_str()); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecipe, error: %s", results.ErrorMessage().c_str()); return false; } @@ -1407,12 +1403,11 @@ bool ZoneDatabase::GetTradeRecipe(uint32 recipe_id, uint8 c_type, uint32 some_id "WHERE successcount > 0 AND recipe_id = %u", recipe_id); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecept success query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } if(results.RowCount() < 1) { - LogFile->write(EQEmuLog::Error, "Error in GetTradeRecept success: no success items returned"); + Log.Out(Logs::General, Logs::Error, "Error in GetTradeRecept success: no success items returned"); return false; } @@ -1462,9 +1457,7 @@ void ZoneDatabase::UpdateRecipeMadecount(uint32 recipe_id, uint32 char_id, uint3 "SET recipe_id = %u, char_id = %u, madecount = %u " "ON DUPLICATE KEY UPDATE madecount = %u;", recipe_id, char_id, madeCount, madeCount); - auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in UpdateRecipeMadecount query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); + QueryDatabase(query); } void Client::LearnRecipe(uint32 recipeID) @@ -1477,12 +1470,11 @@ void Client::LearnRecipe(uint32 recipeID) "WHERE tr.id = %u ;", CharacterID(), recipeID); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Client::LearnRecipe query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } if (results.RowCount() != 1) { - LogFile->write(EQEmuLog::Normal, "Client::LearnRecipe - RecipeID: %d had %d occurences.", recipeID, results.RowCount()); + Log.Out(Logs::General, Logs::Normal, "Client::LearnRecipe - RecipeID: %d had %d occurences.", recipeID, results.RowCount()); return; } @@ -1502,9 +1494,6 @@ void Client::LearnRecipe(uint32 recipeID) "ON DUPLICATE KEY UPDATE madecount = madecount;", recipeID, CharacterID()); results = database.QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in LearnRecipe query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - } bool Client::CanIncreaseTradeskill(SkillUseTypes tradeskill) { @@ -1553,7 +1542,6 @@ bool ZoneDatabase::EnableRecipe(uint32 recipe_id) "WHERE id = %u;", recipe_id); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in EnableRecipe query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return results.RowsAffected() > 0; } @@ -1564,7 +1552,6 @@ bool ZoneDatabase::DisableRecipe(uint32 recipe_id) "WHERE id = %u;", recipe_id); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in DisableRecipe query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return results.RowsAffected() > 0; } diff --git a/zone/trading.cpp b/zone/trading.cpp index a31d45f89..7f5e9fe1c 100644 --- a/zone/trading.cpp +++ b/zone/trading.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/rulesys.h" #include "../common/string_util.h" @@ -85,7 +86,7 @@ void Trade::AddEntity(uint16 trade_slot_id, uint32 stack_size) { if (!owner || !owner->IsClient()) { // This should never happen - LogFile->write(EQEmuLog::Debug, "Programming error: NPC's should not call Trade::AddEntity()"); + Log.Out(Logs::General, Logs::None, "Programming error: NPC's should not call Trade::AddEntity()"); return; } @@ -125,7 +126,7 @@ void Trade::AddEntity(uint16 trade_slot_id, uint32 stack_size) { inst2->SetCharges(stack_size + inst2->GetCharges()); } - _log(TRADING__HOLDER, "%s added partial item '%s' stack (qty: %i) to trade slot %i", owner->GetName(), inst->GetItem()->Name, stack_size, trade_slot_id); + Log.Out(Logs::Detail, Logs::Trading, "%s added partial item '%s' stack (qty: %i) to trade slot %i", owner->GetName(), inst->GetItem()->Name, stack_size, trade_slot_id); if (_stack_size > 0) inst->SetCharges(_stack_size); @@ -142,7 +143,7 @@ void Trade::AddEntity(uint16 trade_slot_id, uint32 stack_size) { SendItemData(inst, trade_slot_id); - _log(TRADING__HOLDER, "%s added item '%s' to trade slot %i", owner->GetName(), inst->GetItem()->Name, trade_slot_id); + Log.Out(Logs::Detail, Logs::Trading, "%s added item '%s' to trade slot %i", owner->GetName(), inst->GetItem()->Name, trade_slot_id); client->PutItemInInventory(trade_slot_id, *inst); client->DeleteItemInInventory(MainCursor); @@ -295,7 +296,7 @@ void Trade::LogTrade() void Trade::DumpTrade() { Mob* with = With(); - LogFile->write(EQEmuLog::Debug, "Dumping trade data: '%s' in TradeState %i with '%s'", + Log.Out(Logs::General, Logs::None, "Dumping trade data: '%s' in TradeState %i with '%s'", this->owner->GetName(), state, ((with==nullptr)?"(null)":with->GetName())); if (!owner->IsClient()) @@ -306,7 +307,7 @@ void Trade::DumpTrade() const ItemInst* inst = trader->GetInv().GetItem(i); if (inst) { - LogFile->write(EQEmuLog::Debug, "Item %i (Charges=%i, Slot=%i, IsBag=%s)", + Log.Out(Logs::General, Logs::None, "Item %i (Charges=%i, Slot=%i, IsBag=%s)", inst->GetItem()->ID, inst->GetCharges(), i, ((inst->IsType(ItemClassContainer)) ? "True" : "False")); @@ -314,7 +315,7 @@ void Trade::DumpTrade() for (uint8 j = SUB_BEGIN; j < EmuConstants::ITEM_CONTAINER_SIZE; j++) { inst = trader->GetInv().GetItem(i, j); if (inst) { - LogFile->write(EQEmuLog::Debug, "\tBagItem %i (Charges=%i, Slot=%i)", + Log.Out(Logs::General, Logs::None, "\tBagItem %i (Charges=%i, Slot=%i)", inst->GetItem()->ID, inst->GetCharges(), Inventory::CalcSlotId(i, j)); } @@ -323,7 +324,7 @@ void Trade::DumpTrade() } } - LogFile->write(EQEmuLog::Debug, "\tpp:%i, gp:%i, sp:%i, cp:%i", pp, gp, sp, cp); + Log.Out(Logs::General, Logs::None, "\tpp:%i, gp:%i, sp:%i, cp:%i", pp, gp, sp, cp); } #endif @@ -367,7 +368,7 @@ void Client::ResetTrade() { break; if (partial_inst->GetID() != inst->GetID()) { - _log(TRADING__ERROR, "Client::ResetTrade() - an incompatible location reference was returned by Inventory::FindFreeSlotForTradeItem()"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Client::ResetTrade() - an incompatible location reference was returned by Inventory::FindFreeSlotForTradeItem()"); break; } @@ -457,7 +458,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st bool qs_log = false; if(other) { - mlog(TRADING__CLIENT, "Finishing trade with client %s", other->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Finishing trade with client %s", other->GetName()); this->AddMoneyToPP(other->trade->cp, other->trade->sp, other->trade->gp, other->trade->pp, true); @@ -490,7 +491,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st const ItemInst* inst = m_inv[trade_slot]; if (inst && inst->IsType(ItemClassContainer)) { - mlog(TRADING__CLIENT, "Giving container %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Giving container %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); // TODO: need to check bag items/augments for no drop..everything for attuned... if (inst->GetItem()->NoDrop != 0 || Admin() >= RuleI(Character, MinStatusForNoDropExemptions) || RuleI(World, FVNoDropFlag) == 1 || other == this) { @@ -498,7 +499,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st if (free_slot != INVALID_INDEX) { if (other->PutItemInInventory(free_slot, *inst, true)) { - mlog(TRADING__CLIENT, "Container %s (%d) successfully transferred, deleting from trade slot.", inst->GetItem()->Name, inst->GetItem()->ID); + Log.Out(Logs::Detail, Logs::Trading, "Container %s (%d) successfully transferred, deleting from trade slot.", inst->GetItem()->Name, inst->GetItem()->ID); if (qs_log) { QSTradeItems_Struct* detail = new QSTradeItems_Struct; @@ -551,17 +552,17 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st } } else { - mlog(TRADING__ERROR, "Transfer of container %s (%d) to %s failed, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID, other->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Transfer of container %s (%d) to %s failed, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID, other->GetName()); PushItemOnCursor(*inst, true); } } else { - mlog(TRADING__ERROR, "%s's inventory is full, returning container %s (%d) to giver.", other->GetName(), inst->GetItem()->Name, inst->GetItem()->ID); + Log.Out(Logs::Detail, Logs::Trading, "%s's inventory is full, returning container %s (%d) to giver.", other->GetName(), inst->GetItem()->Name, inst->GetItem()->ID); PushItemOnCursor(*inst, true); } } else { - mlog(TRADING__ERROR, "Container %s (%d) is NoDrop, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID); + Log.Out(Logs::Detail, Logs::Trading, "Container %s (%d) is NoDrop, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID); PushItemOnCursor(*inst, true); } @@ -587,7 +588,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st break; if (partial_inst->GetID() != inst->GetID()) { - _log(TRADING__ERROR, "Client::ResetTrade() - an incompatible location reference was returned by Inventory::FindFreeSlotForTradeItem()"); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Client::ResetTrade() - an incompatible location reference was returned by Inventory::FindFreeSlotForTradeItem()"); break; } @@ -605,10 +606,10 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st inst->SetCharges(0); } - mlog(TRADING__CLIENT, "Transferring partial stack %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Transferring partial stack %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); if (other->PutItemInInventory(partial_slot, *partial_inst, true)) { - mlog(TRADING__CLIENT, "Partial stack %s (%d) successfully transferred, deleting %i charges from trade slot.", + Log.Out(Logs::Detail, Logs::Trading, "Partial stack %s (%d) successfully transferred, deleting %i charges from trade slot.", inst->GetItem()->Name, inst->GetItem()->ID, (old_charges - inst->GetCharges())); if (qs_log) { QSTradeItems_Struct* detail = new QSTradeItems_Struct; @@ -634,7 +635,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st } } else { - mlog(TRADING__ERROR, "Transfer of partial stack %s (%d) to %s failed, returning %i charges to trade slot.", + Log.Out(Logs::Detail, Logs::Trading, "Transfer of partial stack %s (%d) to %s failed, returning %i charges to trade slot.", inst->GetItem()->Name, inst->GetItem()->ID, other->GetName(), (old_charges - inst->GetCharges())); inst->SetCharges(old_charges); @@ -709,7 +710,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st const ItemInst* inst = m_inv[trade_slot]; if (inst) { - mlog(TRADING__CLIENT, "Giving item %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Giving item %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); // TODO: need to check bag items/augments for no drop..everything for attuned... if (inst->GetItem()->NoDrop != 0 || Admin() >= RuleI(Character, MinStatusForNoDropExemptions) || RuleI(World, FVNoDropFlag) == 1 || other == this) { @@ -717,7 +718,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st if (free_slot != INVALID_INDEX) { if (other->PutItemInInventory(free_slot, *inst, true)) { - mlog(TRADING__CLIENT, "Item %s (%d) successfully transferred, deleting from trade slot.", inst->GetItem()->Name, inst->GetItem()->ID); + Log.Out(Logs::Detail, Logs::Trading, "Item %s (%d) successfully transferred, deleting from trade slot.", inst->GetItem()->Name, inst->GetItem()->ID); if (qs_log) { QSTradeItems_Struct* detail = new QSTradeItems_Struct; @@ -771,17 +772,17 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st } } else { - mlog(TRADING__ERROR, "Transfer of Item %s (%d) to %s failed, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID, other->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Transfer of Item %s (%d) to %s failed, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID, other->GetName()); PushItemOnCursor(*inst, true); } } else { - mlog(TRADING__ERROR, "%s's inventory is full, returning item %s (%d) to giver.", other->GetName(), inst->GetItem()->Name, inst->GetItem()->ID); + Log.Out(Logs::Detail, Logs::Trading, "%s's inventory is full, returning item %s (%d) to giver.", other->GetName(), inst->GetItem()->Name, inst->GetItem()->ID); PushItemOnCursor(*inst, true); } } else { - mlog(TRADING__ERROR, "Item %s (%d) is NoDrop, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID); + Log.Out(Logs::Detail, Logs::Trading, "Item %s (%d) is NoDrop, returning to giver.", inst->GetItem()->Name, inst->GetItem()->ID); PushItemOnCursor(*inst, true); } @@ -1001,7 +1002,6 @@ void Client::Trader_ShowItems(){ outints->Code = BazaarTrader_ShowItems; QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); safe_delete(TraderItems); } @@ -1025,7 +1025,6 @@ void Client::SendTraderPacket(Client* Trader, uint32 Unknown72) QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); } @@ -1058,7 +1057,6 @@ void Client::Trader_StartTrader() { QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); @@ -1076,7 +1074,6 @@ void Client::Trader_StartTrader() { entity_list.QueueClients(this, outapp, false); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); } @@ -1128,7 +1125,6 @@ void Client::Trader_EndTrader() { entity_list.QueueClients(this, outapp, false); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); @@ -1142,7 +1138,6 @@ void Client::Trader_EndTrader() { QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); @@ -1159,7 +1154,7 @@ void Client::SendTraderItem(uint32 ItemID, uint16 Quantity) { const Item_Struct* item = database.GetItem(ItemID); if(!item){ - _log(TRADING__CLIENT, "Bogus item deleted in Client::SendTraderItem!\n"); + Log.Out(Logs::Detail, Logs::Trading, "Bogus item deleted in Client::SendTraderItem!\n"); return; } @@ -1218,10 +1213,10 @@ void Client::BulkSendTraderInventory(uint32 char_id) { safe_delete(inst); } else - _log(TRADING__CLIENT, "Client::BulkSendTraderInventory nullptr inst pointer"); + Log.Out(Logs::Detail, Logs::Trading, "Client::BulkSendTraderInventory nullptr inst pointer"); } else - _log(TRADING__CLIENT, "Client::BulkSendTraderInventory nullptr item pointer or item is NODROP %8X",item); + Log.Out(Logs::Detail, Logs::Trading, "Client::BulkSendTraderInventory nullptr item pointer or item is NODROP %8X",item); } safe_delete(TraderItems); } @@ -1244,7 +1239,7 @@ ItemInst* Client::FindTraderItemBySerialNumber(int32 SerialNumber){ } } } - _log(TRADING__CLIENT, "Client::FindTraderItemBySerialNumber Couldn't find item! Serial No. was %i", SerialNumber); + Log.Out(Logs::Detail, Logs::Trading, "Client::FindTraderItemBySerialNumber Couldn't find item! Serial No. was %i", SerialNumber); return nullptr; } @@ -1301,7 +1296,7 @@ uint16 Client::FindTraderItem(int32 SerialNumber, uint16 Quantity){ } } } - _log(TRADING__CLIENT, "Could NOT find a match for Item: %i with a quantity of: %i on Trader: %s\n", + Log.Out(Logs::Detail, Logs::Trading, "Could NOT find a match for Item: %i with a quantity of: %i on Trader: %s\n", SerialNumber , Quantity, this->GetName()); return 0; @@ -1310,7 +1305,7 @@ uint16 Client::FindTraderItem(int32 SerialNumber, uint16 Quantity){ void Client::NukeTraderItem(uint16 Slot,int16 Charges,uint16 Quantity,Client* Customer,uint16 TraderSlot, int SerialNumber) { if(!Customer) return; - _log(TRADING__CLIENT, "NukeTraderItem(Slot %i, Charges %i, Quantity %i", Slot, Charges, Quantity); + Log.Out(Logs::Detail, Logs::Trading, "NukeTraderItem(Slot %i, Charges %i, Quantity %i", Slot, Charges, Quantity); if(Quantity < Charges) { Customer->SendSingleTraderItem(this->CharacterID(), SerialNumber); m_inv.DeleteItem(Slot, Quantity); @@ -1324,7 +1319,6 @@ void Client::NukeTraderItem(uint16 Slot,int16 Charges,uint16 Quantity,Client* Cu tdis->ItemID = SerialNumber; tdis->Unknown012 = 0; - _pkt(TRADING__PACKETS, outapp); Customer->QueuePacket(outapp); safe_delete(outapp); @@ -1354,7 +1348,6 @@ void Client::NukeTraderItem(uint16 Slot,int16 Charges,uint16 Quantity,Client* Cu Quantity = 1; for(int i = 0; i < Quantity; i++) { - _pkt(TRADING__PACKETS, outapp2); this->QueuePacket(outapp2); } @@ -1394,7 +1387,7 @@ void Client::FindAndNukeTraderItem(int32 SerialNumber, uint16 Quantity, Client* if(!Stackable) Quantity = (Charges > 0) ? Charges : 1; - _log(TRADING__CLIENT, "FindAndNuke %s, Charges %i, Quantity %i", item->GetItem()->Name, Charges, Quantity); + Log.Out(Logs::Detail, Logs::Trading, "FindAndNuke %s, Charges %i, Quantity %i", item->GetItem()->Name, Charges, Quantity); } if(item && (Charges <= Quantity || (Charges <= 0 && Quantity==1) || !Stackable)){ this->DeleteItemInInventory(SlotID, Quantity); @@ -1430,7 +1423,7 @@ void Client::FindAndNukeTraderItem(int32 SerialNumber, uint16 Quantity, Client* } } - _log(TRADING__CLIENT, "Could NOT find a match for Item: %i with a quantity of: %i on Trader: %s\n",SerialNumber, + Log.Out(Logs::Detail, Logs::Trading, "Could NOT find a match for Item: %i with a quantity of: %i on Trader: %s\n",SerialNumber, Quantity,this->GetName()); } @@ -1483,10 +1476,7 @@ static void BazaarAuditTrail(const char *seller, const char *buyer, const char * "(`time`, `seller`, `buyer`, `itemname`, `quantity`, `totalcost`, `trantype`) " "VALUES (NOW(), '%s', '%s', '%s', %i, %i, %i)", seller, buyer, itemName, quantity, totalCost, tranType); - auto results = database.QueryDatabase(query); - if(!results.Success()) - _log(TRADING__CLIENT, "Audit write error: %s : %s", query.c_str(), results.ErrorMessage().c_str()); - + database.QueryDatabase(query); } @@ -1509,13 +1499,13 @@ void Client::BuyTraderItem(TraderBuy_Struct* tbs,Client* Trader,const EQApplicat const ItemInst* BuyItem = Trader->FindTraderItemBySerialNumber(tbs->ItemID); if(!BuyItem) { - _log(TRADING__CLIENT, "Unable to find item on trader."); + Log.Out(Logs::Detail, Logs::Trading, "Unable to find item on trader."); TradeRequestFailed(app); safe_delete(outapp); return; } - _log(TRADING__CLIENT, "Buyitem: Name: %s, IsStackable: %i, Requested Quantity: %i, Charges on Item %i", + Log.Out(Logs::Detail, Logs::Trading, "Buyitem: Name: %s, IsStackable: %i, Requested Quantity: %i, Charges on Item %i", BuyItem->GetItem()->Name, BuyItem->IsStackable(), tbs->Quantity, BuyItem->GetCharges()); // If the item is not stackable, then we can only be buying one of them. if(!BuyItem->IsStackable()) @@ -1533,12 +1523,12 @@ void Client::BuyTraderItem(TraderBuy_Struct* tbs,Client* Trader,const EQApplicat outtbs->Quantity = tbs->Quantity; } - _log(TRADING__CLIENT, "Actual quantity that will be traded is %i", outtbs->Quantity); + Log.Out(Logs::Detail, Logs::Trading, "Actual quantity that will be traded is %i", outtbs->Quantity); if((tbs->Price * outtbs->Quantity) <= 0) { Message(13, "Internal error. Aborting trade. Please report this to the ServerOP. Error code is 1"); Trader->Message(13, "Internal error. Aborting trade. Please report this to the ServerOP. Error code is 1"); - LogFile->write(EQEmuLog::Error, "Bazaar: Zero price transaction between %s and %s aborted." + Log.Out(Logs::General, Logs::Error, "Bazaar: Zero price transaction between %s and %s aborted." "Item: %s, Charges: %i, TBS: Qty %i, Price: %i", GetName(), Trader->GetName(), BuyItem->GetItem()->Name, BuyItem->GetCharges(), tbs->Quantity, tbs->Price); @@ -1608,7 +1598,6 @@ void Client::BuyTraderItem(TraderBuy_Struct* tbs,Client* Trader,const EQApplicat Trader->QueuePacket(outapp2); - _pkt(TRADING__PACKETS, outapp2); if(RuleB(Bazaar, AuditTrail)) BazaarAuditTrail(Trader->GetName(), GetName(), BuyItem->GetItem()->Name, outtbs->Quantity, outtbs->Price, 0); @@ -1617,7 +1606,6 @@ void Client::BuyTraderItem(TraderBuy_Struct* tbs,Client* Trader,const EQApplicat Trader->QueuePacket(outapp); - _pkt(TRADING__PACKETS, outapp); safe_delete(outapp); safe_delete(outapp2); @@ -1835,11 +1823,10 @@ void Client::SendBazaarResults(uint32 TraderID, uint32 Class_, uint32 Race, uint searchValues.c_str(), searchCriteria.c_str(), RuleI(Bazaar, MaxSearchResults)); auto results = database.QueryDatabase(query); if (!results.Success()) { - _log(TRADING__CLIENT, "Failed to retrieve Bazaar Search!! %s %s\n", query.c_str(), results.ErrorMessage().c_str()); return; } - _log(TRADING__CLIENT, "SRCH: %s", query.c_str()); + Log.Out(Logs::Detail, Logs::Trading, "SRCH: %s", query.c_str()); int Size = 0; uint32 ID = 0; @@ -1857,7 +1844,6 @@ void Client::SendBazaarResults(uint32 TraderID, uint32 Class_, uint32 Race, uint brds->Unknown012 = 0xFFFFFFFF; brds->Unknown016 = 0xFFFFFFFF; this->QueuePacket(outapp2); - _pkt(TRADING__PACKETS,outapp2); safe_delete(outapp2); return; } @@ -1886,7 +1872,7 @@ void Client::SendBazaarResults(uint32 TraderID, uint32 Class_, uint32 Race, uint VARSTRUCT_ENCODE_TYPE(uint32, bufptr, ID); } else{ - _log(TRADING__CLIENT, "Unable to find trader: %i\n",atoi(row[1])); + Log.Out(Logs::Detail, Logs::Trading, "Unable to find trader: %i\n",atoi(row[1])); VARSTRUCT_ENCODE_TYPE(uint32, bufptr, 0); } Cost = atoi(row[5]); @@ -1925,7 +1911,6 @@ void Client::SendBazaarResults(uint32 TraderID, uint32 Class_, uint32 Race, uint this->QueuePacket(outapp); - _pkt(TRADING__PACKETS,outapp); safe_delete(outapp); safe_delete_array(buffer); @@ -1942,7 +1927,6 @@ void Client::SendBazaarResults(uint32 TraderID, uint32 Class_, uint32 Race, uint this->QueuePacket(outapp2); - _pkt(TRADING__PACKETS,outapp2); safe_delete(outapp2); } @@ -1980,7 +1964,7 @@ static void UpdateTraderCustomerItemsAdded(uint32 CustomerID, TraderCharges_Stru if(inst->IsStackable()) inst->SetMerchantCount(gis->Charges[i]); - _log(TRADING__CLIENT, "Sending price update for %s, Serial No. %i with %i charges", + Log.Out(Logs::Detail, Logs::Trading, "Sending price update for %s, Serial No. %i with %i charges", item->Name, gis->SerialNumber[i], gis->Charges[i]); Customer->SendItemPacket(30, inst, ItemPacketMerchant); // MainCursor? @@ -2017,10 +2001,9 @@ static void UpdateTraderCustomerPriceChanged(uint32 CustomerID, TraderCharges_St if(gis->ItemID[i] == ItemID) { tdis->ItemID = gis->SerialNumber[i]; - _log(TRADING__CLIENT, "Telling customer to remove item %i with %i charges and S/N %i", + Log.Out(Logs::Detail, Logs::Trading, "Telling customer to remove item %i with %i charges and S/N %i", ItemID, Charges, gis->SerialNumber[i]); - _pkt(TRADING__PACKETS, outapp); Customer->QueuePacket(outapp); } @@ -2030,7 +2013,7 @@ static void UpdateTraderCustomerPriceChanged(uint32 CustomerID, TraderCharges_St return; } - _log(TRADING__CLIENT, "Sending price updates to customer %s", Customer->GetName()); + Log.Out(Logs::Detail, Logs::Trading, "Sending price updates to customer %s", Customer->GetName()); ItemInst* inst = database.CreateItem(item); @@ -2056,7 +2039,7 @@ static void UpdateTraderCustomerPriceChanged(uint32 CustomerID, TraderCharges_St inst->SetMerchantSlot(gis->SerialNumber[i]); - _log(TRADING__CLIENT, "Sending price update for %s, Serial No. %i with %i charges", + Log.Out(Logs::Detail, Logs::Trading, "Sending price update for %s, Serial No. %i with %i charges", item->Name, gis->SerialNumber[i], gis->Charges[i]); Customer->SendItemPacket(30, inst, ItemPacketMerchant); // MainCursor?? @@ -2072,7 +2055,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { // TraderPriceUpdate_Struct* tpus = (TraderPriceUpdate_Struct*)app->pBuffer; - _log(TRADING__CLIENT, "Received Price Update for %s, Item Serial No. %i, New Price %i", + Log.Out(Logs::Detail, Logs::Trading, "Received Price Update for %s, Item Serial No. %i, New Price %i", GetName(), tpus->SerialNumber, tpus->NewPrice); // Pull the items this Trader currently has for sale from the trader table. @@ -2080,7 +2063,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { TraderCharges_Struct* gis = database.LoadTraderItemWithCharges(CharacterID()); if(!gis) { - _log(TRADING__CLIENT, "Error retrieving Trader items details to update price."); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Error retrieving Trader items details to update price."); return; } @@ -2100,7 +2083,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { if((gis->ItemID[i] > 0) && (gis->SerialNumber[i] == tpus->SerialNumber)) { // We found the item that the Trader wants to change the price of (or add back up for sale). // - _log(TRADING__CLIENT, "ItemID is %i, Charges is %i", gis->ItemID[i], gis->Charges[i]); + Log.Out(Logs::Detail, Logs::Trading, "ItemID is %i, Charges is %i", gis->ItemID[i], gis->Charges[i]); IDOfItemToUpdate = gis->ItemID[i]; @@ -2126,7 +2109,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { return ; } - _log(TRADING__CLIENT, "Unable to find item to update price for. Rechecking trader satchels"); + Log.Out(Logs::Detail, Logs::Trading, "Unable to find item to update price for. Rechecking trader satchels"); // Find what is in their Trader Satchels GetItems_Struct* newgis=GetTraderItems(); @@ -2139,7 +2122,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { if((newgis->Items[i] > 0) && (newgis->SerialNumber[i] == tpus->SerialNumber)) { - _log(TRADING__CLIENT, "Found new Item to Add, ItemID is %i, Charges is %i", newgis->Items[i], + Log.Out(Logs::Detail, Logs::Trading, "Found new Item to Add, ItemID is %i, Charges is %i", newgis->Items[i], newgis->Charges[i]); IDOfItemToAdd = newgis->Items[i]; @@ -2157,7 +2140,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { if(!IDOfItemToAdd || !item) { - _log(TRADING__CLIENT, "Item not found in Trader Satchels either."); + Log.Out(Logs::Detail, Logs::Trading, "Item not found in Trader Satchels either."); tpus->SubAction = BazaarPriceChange_Fail; QueuePacket(app); Trader_EndTrader(); @@ -2202,7 +2185,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { gis->SerialNumber[i] = newgis->SerialNumber[i]; gis->ItemCost[i] = tpus->NewPrice; - _log(TRADING__CLIENT, "Adding new item for %s. ItemID %i, SerialNumber %i, Charges %i, Price: %i, Slot %i", + Log.Out(Logs::Detail, Logs::Trading, "Adding new item for %s. ItemID %i, SerialNumber %i, Charges %i, Price: %i, Slot %i", GetName(), newgis->Items[i], newgis->SerialNumber[i], newgis->Charges[i], tpus->NewPrice, i); } @@ -2248,7 +2231,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { QueuePacket(app); if(OldPrice == tpus->NewPrice) { - _log(TRADING__CLIENT, "The new price is the same as the old one."); + Log.Out(Logs::Detail, Logs::Trading, "The new price is the same as the old one."); safe_delete(gis); return; } @@ -2269,7 +2252,7 @@ void Client::SendBuyerResults(char* searchString, uint32 searchID) { // This method is called when a potential seller in the /barter window searches for matching buyers // - _log(TRADING__BARTER, "Client::SendBuyerResults %s\n", searchString); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Client::SendBuyerResults %s\n", searchString); char* escSearchString = new char[strlen(searchString) * 2 + 1]; database.DoEscapeString(escSearchString, searchString, strlen(searchString)); @@ -2279,7 +2262,6 @@ void Client::SendBuyerResults(char* searchString, uint32 searchID) { safe_delete_array(escSearchString); auto results = database.QueryDatabase(query); if (!results.Success()) { - _log(TRADING__CLIENT, "Failed to retrieve Barter Search!! %s %s\n", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2345,7 +2327,6 @@ void Client::SendBuyerResults(char* searchString, uint32 searchID) { VARSTRUCT_ENCODE_TYPE(uint32, buf, 0); // Flag for + Items , probably ItemCount VARSTRUCT_ENCODE_STRING(buf, buyer->GetName()); // Seller Name - _pkt(TRADING__BARTER, outapp); QueuePacket(outapp); safe_delete(outapp); @@ -2428,7 +2409,6 @@ void Client::ShowBuyLines(const EQApplicationPacket *app) { VARSTRUCT_ENCODE_TYPE(uint32, Buf, 0); VARSTRUCT_ENCODE_STRING(Buf, Buyer->GetName()); - _pkt(TRADING__BARTER, outapp); QueuePacket(outapp); } } @@ -2514,7 +2494,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { Quantity = i; break; } - _log(TRADING__BARTER, "Unexpected error while moving item from seller to buyer."); + Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); Message(13, "Internal error while processing transaction."); return; } @@ -2522,7 +2502,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { ItemInst* ItemToTransfer = m_inv.PopItem(SellerSlot); if(!ItemToTransfer || !Buyer->MoveItemToInventory(ItemToTransfer, true)) { - _log(TRADING__BARTER, "Unexpected error while moving item from seller to buyer."); + Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); Message(13, "Internal error while processing transaction."); if(ItemToTransfer) @@ -2560,7 +2540,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { int16 SellerSlot = m_inv.HasItem(ItemID, 1, invWhereWorn|invWherePersonal|invWhereCursor); if (SellerSlot == INVALID_INDEX) { - _log(TRADING__BARTER, "Unexpected error while moving item from seller to buyer."); + Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); Message(13, "Internal error while processing transaction."); return; } @@ -2568,7 +2548,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { ItemInst* ItemToTransfer = m_inv.PopItem(SellerSlot); if(!ItemToTransfer) { - _log(TRADING__BARTER, "Unexpected error while moving item from seller to buyer."); + Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); Message(13, "Internal error while processing transaction."); return; } @@ -2580,7 +2560,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { QuantityMoved += ItemToTransfer->GetCharges(); if(!Buyer->MoveItemToInventory(ItemToTransfer, true)) { - _log(TRADING__BARTER, "Unexpected error while moving item from seller to buyer."); + Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); Message(13, "Internal error while processing transaction."); safe_delete(ItemToTransfer); return; @@ -2615,7 +2595,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { ItemToTransfer->SetCharges(QuantityToRemoveFromStack); if(!Buyer->MoveItemToInventory(ItemToTransfer, true)) { - _log(TRADING__BARTER, "Unexpected error while moving item from seller to buyer."); + Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); Message(13, "Internal error while processing transaction."); safe_delete(ItemToTransfer); return; @@ -2678,7 +2658,6 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { sprintf(Buf, "%s", ItemName); Buf += 64; - _pkt(TRADING__BARTER, outapp); QueuePacket(outapp); // This next packet goes to the Buyer and produces the 'You've bought from for ' @@ -2741,7 +2720,6 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { VARSTRUCT_ENCODE_STRING(Buf, Buyer->GetName()); - _pkt(TRADING__BARTER, outapp3); QueuePacket(outapp3); safe_delete(outapp3); @@ -2773,7 +2751,6 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { VARSTRUCT_ENCODE_TYPE(uint32, Buf, 0); VARSTRUCT_ENCODE_STRING(Buf, Buyer->GetName()); - _pkt(TRADING__BARTER, outapp4); Buyer->QueuePacket(outapp4); safe_delete(outapp4); @@ -2819,7 +2796,6 @@ void Client::ToggleBuyerMode(bool TurnOn) { entity_list.QueueClients(this, outapp, false); - _pkt(TRADING__BARTER, outapp); safe_delete(outapp); Buyer = TurnOn; @@ -2854,11 +2830,11 @@ void Client::UpdateBuyLine(const EQApplicationPacket *app) { bool LoreConflict = CheckLoreConflict(item); - _log(TRADING__BARTER, "UpdateBuyLine: Char: %s BuySlot: %i ItemID %i %s Quantity %i Toggle: %i Price %i ItemCount %i LoreConflict %i", + Log.Out(Logs::Detail, Logs::Trading, "UpdateBuyLine: Char: %s BuySlot: %i ItemID %i %s Quantity %i Toggle: %i Price %i ItemCount %i LoreConflict %i", GetName(), BuySlot, ItemID, item->Name, Quantity, ToggleOnOff, Price, ItemCount, LoreConflict); if((item->NoDrop != 0) && !LoreConflict && (Quantity > 0) && HasMoney(Quantity * Price) && ToggleOnOff && (ItemCount == 0)) { - _log(TRADING__BARTER, "Adding to database"); + Log.Out(Logs::Detail, Logs::Trading, "Adding to database"); database.AddBuyLine(CharacterID(), BuySlot, ItemID, ItemName, Quantity, Price); QueuePacket(app); } @@ -2898,7 +2874,6 @@ void Client::UpdateBuyLine(const EQApplicationPacket *app) { VARSTRUCT_ENCODE_TYPE(uint32, Buf, 0); VARSTRUCT_ENCODE_STRING(Buf, GetName()); - _pkt(TRADING__BARTER, outapp); QueuePacket(outapp); safe_delete(outapp); } @@ -2953,7 +2928,6 @@ void Client::BuyerItemSearch(const EQApplicationPacket *app) { bisr->Action = Barter_BuyerSearch; bisr->ResultCount = Count; - _pkt(TRADING__BARTER, outapp); QueuePacket(outapp); safe_delete(outapp); } diff --git a/zone/trap.cpp b/zone/trap.cpp index 3cc684530..cf38fa45a 100644 --- a/zone/trap.cpp +++ b/zone/trap.cpp @@ -264,7 +264,6 @@ bool ZoneDatabase::LoadTraps(const char* zonename, int16 version) { "FROM traps WHERE zone='%s' AND version=%u", zonename, version); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadTraps query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } diff --git a/zone/tribute.cpp b/zone/tribute.cpp index 9fc6638e1..df01f843e 100644 --- a/zone/tribute.cpp +++ b/zone/tribute.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/eq_packet_structs.h" #include "../common/features.h" @@ -220,7 +220,7 @@ void Client::ChangeTributeSettings(TributeInfo_Struct *t) { void Client::SendTributeDetails(uint32 client_id, uint32 tribute_id) { if(tribute_list.count(tribute_id) != 1) { - LogFile->write(EQEmuLog::Error, "Details request for invalid tribute %lu", (unsigned long)tribute_id); + Log.Out(Logs::General, Logs::Error, "Details request for invalid tribute %lu", (unsigned long)tribute_id); return; } TributeData &td = tribute_list[tribute_id]; @@ -390,7 +390,6 @@ bool ZoneDatabase::LoadTributes() { const std::string query = "SELECT id, name, descr, unknown, isguild FROM tributes"; auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadTributes first query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -407,7 +406,6 @@ bool ZoneDatabase::LoadTributes() { const std::string query2 = "SELECT tribute_id, level, cost, item_id FROM tribute_levels ORDER BY tribute_id, level"; results = QueryDatabase(query2); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadTributes level query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -415,14 +413,14 @@ bool ZoneDatabase::LoadTributes() { uint32 id = atoul(row[0]); if(tribute_list.count(id) != 1) { - LogFile->write(EQEmuLog::Error, "Error in LoadTributes: unknown tribute %lu in tribute_levels", (unsigned long)id); + Log.Out(Logs::General, Logs::Error, "Error in LoadTributes: unknown tribute %lu in tribute_levels", (unsigned long)id); continue; } TributeData &cur = tribute_list[id]; if(cur.tier_count >= MAX_TRIBUTE_TIERS) { - LogFile->write(EQEmuLog::Error, "Error in LoadTributes: on tribute %lu: more tiers defined than permitted", (unsigned long)id); + Log.Out(Logs::General, Logs::Error, "Error in LoadTributes: on tribute %lu: more tiers defined than permitted", (unsigned long)id); continue; } diff --git a/zone/tune.cpp b/zone/tune.cpp index 2f071e458..4153d5b84 100644 --- a/zone/tune.cpp +++ b/zone/tune.cpp @@ -20,7 +20,7 @@ //#define TUNE_DEBUG 20 #endif -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/eq_constants.h" #include "../common/eq_packet_structs.h" #include "../common/rulesys.h" diff --git a/zone/waypoints.cpp b/zone/waypoints.cpp index 5a315add0..8f6c75fc9 100644 --- a/zone/waypoints.cpp +++ b/zone/waypoints.cpp @@ -15,7 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #ifdef _EQDEBUG #include #endif @@ -88,7 +88,7 @@ void NPC::StopWandering() roamer=false; CastToNPC()->SetGrid(0); SendPosition(); - mlog(QUESTS__PATHING, "Stop Wandering requested."); + Log.Out(Logs::Detail, Logs::Pathing, "Stop Wandering requested."); return; } @@ -107,16 +107,16 @@ void NPC::ResumeWandering() cur_wp=save_wp; UpdateWaypoint(cur_wp); // have him head to last destination from here } - mlog(QUESTS__PATHING, "Resume Wandering requested. Grid %d, wp %d", GetGrid(), cur_wp); + Log.Out(Logs::Detail, Logs::Pathing, "Resume Wandering requested. Grid %d, wp %d", GetGrid(), cur_wp); } else if (AIwalking_timer->Enabled()) { // we are at a waypoint paused normally - mlog(QUESTS__PATHING, "Resume Wandering on timed pause. Grid %d, wp %d", GetGrid(), cur_wp); + Log.Out(Logs::Detail, Logs::Pathing, "Resume Wandering on timed pause. Grid %d, wp %d", GetGrid(), cur_wp); AIwalking_timer->Trigger(); // disable timer to end pause now } else { - LogFile->write(EQEmuLog::Error, "NPC not paused - can't resume wandering: %lu", (unsigned long)GetNPCTypeID()); + Log.Out(Logs::General, Logs::Error, "NPC not paused - can't resume wandering: %lu", (unsigned long)GetNPCTypeID()); return; } @@ -131,7 +131,7 @@ void NPC::ResumeWandering() } else { - LogFile->write(EQEmuLog::Error, "NPC not on grid - can't resume wandering: %lu", (unsigned long)GetNPCTypeID()); + Log.Out(Logs::General, Logs::Error, "NPC not on grid - can't resume wandering: %lu", (unsigned long)GetNPCTypeID()); } return; } @@ -143,7 +143,7 @@ void NPC::PauseWandering(int pausetime) if (GetGrid() != 0) { DistractedFromGrid = true; - mlog(QUESTS__PATHING, "Paused Wandering requested. Grid %d. Resuming in %d ms (0=not until told)", GetGrid(), pausetime); + Log.Out(Logs::Detail, Logs::Pathing, "Paused Wandering requested. Grid %d. Resuming in %d ms (0=not until told)", GetGrid(), pausetime); SendPosition(); if (pausetime<1) { // negative grid number stops him dead in his tracks until ResumeWandering() @@ -154,7 +154,7 @@ void NPC::PauseWandering(int pausetime) AIwalking_timer->Start(pausetime*1000); // set the timer } } else { - LogFile->write(EQEmuLog::Error, "NPC not on grid - can't pause wandering: %lu", (unsigned long)GetNPCTypeID()); + Log.Out(Logs::General, Logs::Error, "NPC not on grid - can't pause wandering: %lu", (unsigned long)GetNPCTypeID()); } return; } @@ -166,7 +166,7 @@ void NPC::MoveTo(const xyz_heading& position, bool saveguardspot) if (GetGrid() < 0) { // currently stopped by a quest command SetGrid( 0 - GetGrid()); // get him moving again - mlog(AI__WAYPOINTS, "MoveTo during quest wandering. Canceling quest wandering and going back to grid %d when MoveTo is done.", GetGrid()); + Log.Out(Logs::Detail, Logs::AI, "MoveTo during quest wandering. Canceling quest wandering and going back to grid %d when MoveTo is done.", GetGrid()); } AIwalking_timer->Disable(); // disable timer in case he is paused at a wp if (cur_wp>=0) @@ -174,14 +174,14 @@ void NPC::MoveTo(const xyz_heading& position, bool saveguardspot) save_wp=cur_wp; // save the current waypoint cur_wp=-1; // flag this move as quest controlled } - mlog(AI__WAYPOINTS, "MoveTo %s, pausing regular grid wandering. Grid %d, save_wp %d",to_string(static_cast(position)).c_str(), -GetGrid(), save_wp); + Log.Out(Logs::Detail, Logs::AI, "MoveTo %s, pausing regular grid wandering. Grid %d, save_wp %d",to_string(static_cast(position)).c_str(), -GetGrid(), save_wp); } else { // not on a grid roamer=true; save_wp=0; cur_wp=-2; // flag as quest controlled w/no grid - mlog(AI__WAYPOINTS, "MoveTo %s without a grid.", to_string(static_cast(position)).c_str()); + Log.Out(Logs::Detail, Logs::AI, "MoveTo %s without a grid.", to_string(static_cast(position)).c_str()); } if (saveguardspot) { @@ -193,7 +193,7 @@ void NPC::MoveTo(const xyz_heading& position, bool saveguardspot) if(m_GuardPoint.m_Heading == -1) m_GuardPoint.m_Heading = this->CalculateHeadingToTarget(position.m_X, position.m_Y); - mlog(AI__WAYPOINTS, "Setting guard position to %s", to_string(static_cast(m_GuardPoint)).c_str()); + Log.Out(Logs::Detail, Logs::AI, "Setting guard position to %s", to_string(static_cast(m_GuardPoint)).c_str()); } m_CurrentWayPoint = position; @@ -206,7 +206,7 @@ void NPC::MoveTo(const xyz_heading& position, bool saveguardspot) void NPC::UpdateWaypoint(int wp_index) { if(wp_index >= static_cast(Waypoints.size())) { - mlog(AI__WAYPOINTS, "Update to waypoint %d failed. Not found.", wp_index); + Log.Out(Logs::Detail, Logs::AI, "Update to waypoint %d failed. Not found.", wp_index); return; } std::vector::iterator cur; @@ -215,7 +215,7 @@ void NPC::UpdateWaypoint(int wp_index) m_CurrentWayPoint = xyz_heading(cur->x, cur->y, cur->z, cur->heading); cur_wp_pause = cur->pause; - mlog(AI__WAYPOINTS, "Next waypoint %d: (%.3f, %.3f, %.3f, %.3f)", wp_index, m_CurrentWayPoint.m_X, m_CurrentWayPoint.m_Y, m_CurrentWayPoint.m_Z, m_CurrentWayPoint.m_Heading); + Log.Out(Logs::Detail, Logs::AI, "Next waypoint %d: (%.3f, %.3f, %.3f, %.3f)", wp_index, m_CurrentWayPoint.m_X, m_CurrentWayPoint.m_Y, m_CurrentWayPoint.m_Z, m_CurrentWayPoint.m_Heading); //fix up pathing Z if(zone->HasMap() && RuleB(Map, FixPathingZAtWaypoints)) @@ -421,7 +421,7 @@ void NPC::SetWaypointPause() void NPC::SaveGuardSpot(bool iClearGuardSpot) { if (iClearGuardSpot) { - mlog(AI__WAYPOINTS, "Clearing guard order."); + Log.Out(Logs::Detail, Logs::AI, "Clearing guard order."); m_GuardPoint = xyz_heading(0, 0, 0, 0); } else { @@ -429,14 +429,14 @@ void NPC::SaveGuardSpot(bool iClearGuardSpot) { if(m_GuardPoint.m_Heading == 0) m_GuardPoint.m_Heading = 0.0001; //hack to make IsGuarding simpler - mlog(AI__WAYPOINTS, "Setting guard position to %s", to_string(static_cast(m_GuardPoint)).c_str()); + Log.Out(Logs::Detail, Logs::AI, "Setting guard position to %s", to_string(static_cast(m_GuardPoint)).c_str()); } } void NPC::NextGuardPosition() { if (!CalculateNewPosition2(m_GuardPoint.m_X, m_GuardPoint.m_Y, m_GuardPoint.m_Z, GetMovespeed())) { SetHeading(m_GuardPoint.m_Heading); - mlog(AI__WAYPOINTS, "Unable to move to next guard position. Probably rooted."); + Log.Out(Logs::Detail, Logs::AI, "Unable to move to next guard position. Probably rooted."); } else if((m_Position.m_X == m_GuardPoint.m_X) && (m_Position.m_Y == m_GuardPoint.m_Y) && (m_Position.m_Z == m_GuardPoint.m_Z)) { @@ -502,15 +502,15 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b if ((m_Position.m_X-x == 0) && (m_Position.m_Y-y == 0)) {//spawn is at target coords if(m_Position.m_Z-z != 0) { m_Position.m_Z = z; - mlog(AI__WAYPOINTS, "Calc Position2 (%.3f, %.3f, %.3f): Jumping pure Z.", x, y, z); + Log.Out(Logs::Detail, Logs::AI, "Calc Position2 (%.3f, %.3f, %.3f): Jumping pure Z.", x, y, z); return true; } - mlog(AI__WAYPOINTS, "Calc Position2 (%.3f, %.3f, %.3f) inWater=%d: We are there.", x, y, z, inWater); + Log.Out(Logs::Detail, Logs::AI, "Calc Position2 (%.3f, %.3f, %.3f) inWater=%d: We are there.", x, y, z, inWater); return false; } else if ((ABS(m_Position.m_X - x) < 0.1) && (ABS(m_Position.m_Y - y) < 0.1)) { - mlog(AI__WAYPOINTS, "Calc Position2 (%.3f, %.3f, %.3f): X/Y difference <0.1, Jumping to target.", x, y, z); + Log.Out(Logs::Detail, Logs::AI, "Calc Position2 (%.3f, %.3f, %.3f): X/Y difference <0.1, Jumping to target.", x, y, z); if(IsNPC()) { entity_list.ProcessMove(CastToNPC(), x, y, z); @@ -536,7 +536,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b m_Position.m_Y = new_y; m_Position.m_Z = new_z; - mlog(AI__WAYPOINTS, "Calculating new position2 to (%.3f, %.3f, %.3f), old vector (%.3f, %.3f, %.3f)", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z); + Log.Out(Logs::Detail, Logs::AI, "Calculating new position2 to (%.3f, %.3f, %.3f), old vector (%.3f, %.3f, %.3f)", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z); uint8 NPCFlyMode = 0; @@ -555,7 +555,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b float newz = zone->zonemap->FindBestZ(dest, nullptr) + 2.0f; - mlog(AI__WAYPOINTS, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); + Log.Out(Logs::Detail, Logs::AI, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); if( (newz > -2000) && ABS(newz - dest.z) < RuleR(Map, FixPathingZMaxDeltaMoving)) // Sanity check. { @@ -596,7 +596,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b //pRunAnimSpeed = (int8)(speed*NPC_RUNANIM_RATIO); //speed *= NPC_SPEED_MULTIPLIER; - mlog(AI__WAYPOINTS, "Calculating new position2 to (%.3f, %.3f, %.3f), new vector (%.3f, %.3f, %.3f) rate %.3f, RAS %d", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z, speed, pRunAnimSpeed); + Log.Out(Logs::Detail, Logs::AI, "Calculating new position2 to (%.3f, %.3f, %.3f), new vector (%.3f, %.3f, %.3f) rate %.3f, RAS %d", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z, speed, pRunAnimSpeed); // -------------------------------------------------------------------------- // 2: get unit vector @@ -631,7 +631,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b m_Position.m_Z = new_z; m_Position.m_Heading = CalculateHeadingToTarget(x, y); tar_ndx=22-numsteps; - mlog(AI__WAYPOINTS, "Next position2 (%.3f, %.3f, %.3f) (%d steps)", m_Position.m_X, m_Position.m_Y, m_Position.m_Z, numsteps); + Log.Out(Logs::Detail, Logs::AI, "Next position2 (%.3f, %.3f, %.3f) (%d steps)", m_Position.m_X, m_Position.m_Y, m_Position.m_Z, numsteps); } else { @@ -643,7 +643,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b m_Position.m_Y = y; m_Position.m_Z = z; - mlog(AI__WAYPOINTS, "Only a single step to get there... jumping."); + Log.Out(Logs::Detail, Logs::AI, "Only a single step to get there... jumping."); } } @@ -662,7 +662,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b m_Position.m_Y = new_y; m_Position.m_Z = new_z; m_Position.m_Heading = CalculateHeadingToTarget(x, y); - mlog(AI__WAYPOINTS, "Next position2 (%.3f, %.3f, %.3f) (%d steps)", m_Position.m_X, m_Position.m_Y, m_Position.m_Z, numsteps); + Log.Out(Logs::Detail, Logs::AI, "Next position2 (%.3f, %.3f, %.3f) (%d steps)", m_Position.m_X, m_Position.m_Y, m_Position.m_Z, numsteps); } uint8 NPCFlyMode = 0; @@ -682,7 +682,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b float newz = zone->zonemap->FindBestZ(dest, nullptr); - mlog(AI__WAYPOINTS, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); + Log.Out(Logs::Detail, Logs::AI, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); if( (newz > -2000) && ABS(newz - dest.z) < RuleR(Map, FixPathingZMaxDeltaMoving)) // Sanity check. { @@ -740,7 +740,7 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec moved=false; } SetRunAnimSpeed(0); - mlog(AI__WAYPOINTS, "Rooted while calculating new position to (%.3f, %.3f, %.3f)", x, y, z); + Log.Out(Logs::Detail, Logs::AI, "Rooted while calculating new position to (%.3f, %.3f, %.3f)", x, y, z); return true; } @@ -754,7 +754,7 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec pRunAnimSpeed = (uint8)(speed*NPC_RUNANIM_RATIO); speed *= NPC_SPEED_MULTIPLIER; - mlog(AI__WAYPOINTS, "Calculating new position to (%.3f, %.3f, %.3f) vector (%.3f, %.3f, %.3f) rate %.3f RAS %d", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z, speed, pRunAnimSpeed); + Log.Out(Logs::Detail, Logs::AI, "Calculating new position to (%.3f, %.3f, %.3f) vector (%.3f, %.3f, %.3f) rate %.3f RAS %d", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z, speed, pRunAnimSpeed); // -------------------------------------------------------------------------- // 2: get unit vector @@ -771,7 +771,7 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec m_Position.m_X = x; m_Position.m_Y = y; m_Position.m_Z = z; - mlog(AI__WAYPOINTS, "Close enough, jumping to waypoint"); + Log.Out(Logs::Detail, Logs::AI, "Close enough, jumping to waypoint"); } else { float new_x = m_Position.m_X + m_TargetV.m_X*tar_vector; @@ -784,7 +784,7 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec m_Position.m_X = new_x; m_Position.m_Y = new_y; m_Position.m_Z = new_z; - mlog(AI__WAYPOINTS, "Next position (%.3f, %.3f, %.3f)", m_Position.m_X, m_Position.m_Y, m_Position.m_Z); + Log.Out(Logs::Detail, Logs::AI, "Next position (%.3f, %.3f, %.3f)", m_Position.m_X, m_Position.m_Y, m_Position.m_Z); } uint8 NPCFlyMode = 0; @@ -804,7 +804,7 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec float newz = zone->zonemap->FindBestZ(dest, nullptr) + 2.0f; - mlog(AI__WAYPOINTS, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); + Log.Out(Logs::Detail, Logs::AI, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); if( (newz > -2000) && ABS(newz - dest.z) < RuleR(Map, FixPathingZMaxDeltaMoving)) // Sanity check. { @@ -854,7 +854,7 @@ void NPC::AssignWaypoints(int32 grid) { std::string query = StringFormat("SELECT `type`, `type2` FROM `grid` WHERE `id` = %i AND `zoneid` = %i", grid, zone->GetZoneID()); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "MySQL Error while trying to assign grid %u to mob %s: %s", grid, name, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "MySQL Error while trying to assign grid %u to mob %s: %s", grid, name, results.ErrorMessage().c_str()); return; } @@ -875,7 +875,7 @@ void NPC::AssignWaypoints(int32 grid) { "ORDER BY `number`", grid, zone->GetZoneID()); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "MySQL Error while trying to assign waypoints from grid %u to mob %s: %s", grid, name, results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "MySQL Error while trying to assign waypoints from grid %u to mob %s: %s", grid, name, results.ErrorMessage().c_str()); return; } @@ -930,7 +930,7 @@ void Mob::SendTo(float new_x, float new_y, float new_z) { m_Position.m_X = new_x; m_Position.m_Y = new_y; m_Position.m_Z = new_z; - mlog(AI__WAYPOINTS, "Sent To (%.3f, %.3f, %.3f)", new_x, new_y, new_z); + Log.Out(Logs::Detail, Logs::AI, "Sent To (%.3f, %.3f, %.3f)", new_x, new_y, new_z); if(flymode == FlyMode1) return; @@ -946,7 +946,7 @@ void Mob::SendTo(float new_x, float new_y, float new_z) { float newz = zone->zonemap->FindBestZ(dest, nullptr); - mlog(AI__WAYPOINTS, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); + Log.Out(Logs::Detail, Logs::AI, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); if( (newz > -2000) && ABS(newz - dest.z) < RuleR(Map, FixPathingZMaxDeltaSendTo)) // Sanity check. m_Position.m_Z = newz + 1; @@ -977,7 +977,7 @@ void Mob::SendToFixZ(float new_x, float new_y, float new_z) { float newz = zone->zonemap->FindBestZ(dest, nullptr); - mlog(AI__WAYPOINTS, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); + Log.Out(Logs::Detail, Logs::AI, "BestZ returned %4.3f at %4.3f, %4.3f, %4.3f", newz,m_Position.m_X,m_Position.m_Y,m_Position.m_Z); if( (newz > -2000) && ABS(newz-dest.z) < RuleR(Map, FixPathingZMaxDeltaSendTo)) // Sanity check. m_Position.m_Z = newz + 1; @@ -990,7 +990,6 @@ int ZoneDatabase::GetHighestGrid(uint32 zoneid) { std::string query = StringFormat("SELECT COALESCE(MAX(id), 0) FROM grid WHERE zoneid = %i", zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetHighestGrid query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1007,7 +1006,6 @@ uint8 ZoneDatabase::GetGridType2(uint32 grid, uint16 zoneid) { std::string query = StringFormat("SELECT type2 FROM grid WHERE id = %i AND zoneid = %i", grid, zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetGridType2 query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1028,7 +1026,6 @@ bool ZoneDatabase::GetWaypoints(uint32 grid, uint16 zoneid, uint32 num, wplist* "WHERE gridid = %i AND number = %i AND zoneid = %i", grid, num, zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetWaypoints query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -1056,7 +1053,6 @@ void ZoneDatabase::AssignGrid(Client *client, const xy_location& location, uint3 zone->GetShortName(), (int)location.m_X, (int)location.m_Y); auto results = QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error querying spawn2 '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1070,7 +1066,6 @@ void ZoneDatabase::AssignGrid(Client *client, const xy_location& location, uint3 zone->GetShortName(), location.m_X, _GASSIGN_TOLERANCE, location.m_Y, _GASSIGN_TOLERANCE); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error querying fuzzy spawn2 '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1099,7 +1094,6 @@ void ZoneDatabase::AssignGrid(Client *client, const xy_location& location, uint3 results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error updating spawn2 '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1137,7 +1131,6 @@ void ZoneDatabase::ModifyGrid(Client *client, bool remove, uint32 id, uint8 type "VALUES (%i, %i, %i, %i)", id, zoneid, type, type2); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error creating grid entry '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1149,17 +1142,9 @@ void ZoneDatabase::ModifyGrid(Client *client, bool remove, uint32 id, uint8 type std::string query = StringFormat("DELETE FROM grid where id=%i", id); auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error deleting grid '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); - else if(client) - client->LogSQL(query.c_str()); query = StringFormat("DELETE FROM grid_entries WHERE zoneid = %i AND gridid = %i", zoneid, id); results = QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error deleting grid entries '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); - else if(client) - client->LogSQL(query.c_str()); } @@ -1173,7 +1158,6 @@ void ZoneDatabase::AddWP(Client *client, uint32 gridid, uint32 wpnum, const xyz_ gridid, zoneid, wpnum, position.m_X, position.m_Y, position.m_Z, pause, position.m_Heading); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error adding waypoint '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1199,7 +1183,6 @@ void ZoneDatabase::DeleteWaypoint(Client *client, uint32 grid_num, uint32 wp_num grid_num, zoneid, wp_num); auto results = QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error deleting waypoint '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1226,7 +1209,6 @@ uint32 ZoneDatabase::AddWPForSpawn(Client *client, uint32 spawn2id, const xyz_he auto results = QueryDatabase(query); if (!results.Success()) { // Query error - LogFile->write(EQEmuLog::Error, "Error setting pathgrid '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1245,18 +1227,11 @@ uint32 ZoneDatabase::AddWPForSpawn(Client *client, uint32 spawn2id, const xyz_he query = StringFormat("INSERT INTO grid SET id = '%i', zoneid = %i, type ='%i', type2 = '%i'", grid_num, zoneid, type1, type2); - results = QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error adding grid '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); - else if(client) - client->LogSQL(query.c_str()); + QueryDatabase(query); query = StringFormat("UPDATE spawn2 SET pathgrid = '%i' WHERE id = '%i'", grid_num, spawn2id); - results = QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error updating spawn2 pathing '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); - else if(client) - client->LogSQL(query.c_str()); + QueryDatabase(query); + } else // NPC had a grid assigned to it createdNewGrid = false; @@ -1266,7 +1241,6 @@ uint32 ZoneDatabase::AddWPForSpawn(Client *client, uint32 spawn2id, const xyz_he results = QueryDatabase(query); if(!results.Success()) { // Query error - LogFile->write(EQEmuLog::Error, "Error getting next waypoint id '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1280,10 +1254,6 @@ uint32 ZoneDatabase::AddWPForSpawn(Client *client, uint32 spawn2id, const xyz_he "VALUES (%i, %i, %i, %f, %f, %f, %i, %f)", grid_num, zoneid, next_wp_num, position.m_X, position.m_Y, position.m_Z, pause, position.m_Heading); results = QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error adding grid entry '%s': '%s'", query.c_str(), results.ErrorMessage().c_str()); - else if(client) - client->LogSQL(query.c_str()); return createdNewGrid? grid_num: 0; } @@ -1293,7 +1263,6 @@ uint32 ZoneDatabase::GetFreeGrid(uint16 zoneid) { std::string query = StringFormat("SELECT max(id) FROM grid WHERE zoneid = %i", zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetFreeGrid query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -1313,7 +1282,6 @@ int ZoneDatabase::GetHighestWaypoint(uint32 zoneid, uint32 gridid) { "WHERE zoneid = %i AND gridid = %i", zoneid, gridid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetHighestWaypoint query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index 834f56a0c..e3cee409b 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" #include #include #include @@ -131,7 +131,7 @@ void WorldServer::OnConnected() { SendPacket(pack); safe_delete(pack); } - +/* Zone Process Packets from World */ void WorldServer::Process() { WorldConnection::Process(); @@ -140,8 +140,7 @@ void WorldServer::Process() { ServerPacket *pack = 0; while((pack = tcpc.PopPacket())) { - _log(ZONE__WORLD_TRACE,"Got 0x%04x from world:",pack->opcode); - _hex(ZONE__WORLD_TRACE,pack->pBuffer,pack->size); + Log.Out(Logs::Detail, Logs::Zone_Server, "Got 0x%04x from world:", pack->opcode); switch(pack->opcode) { case 0: { break; @@ -155,12 +154,12 @@ void WorldServer::Process() { if (pack->size != sizeof(ServerConnectInfo)) break; ServerConnectInfo* sci = (ServerConnectInfo*) pack->pBuffer; - _log(ZONE__WORLD,"World indicated port %d for this zone.",sci->port); + Log.Out(Logs::Detail, Logs::Zone_Server, "World assigned Port: %d for this zone.", sci->port); ZoneConfig::SetZonePort(sci->port); break; } case ServerOP_ZAAuthFailed: { - std::cout << "World server responded 'Not Authorized', disabling reconnect" << std::endl; + Log.Out(Logs::Detail, Logs::Zone_Server, "World server responded 'Not Authorized', disabling reconnect"); pTryReconnect = false; Disconnect(); break; @@ -386,15 +385,12 @@ void WorldServer::Process() { } } else { - #ifdef _EQDEBUG - _log(ZONE__WORLD, "Error: WhoAllReturnStruct did not point to a valid client! " - "id=%i, playerineqstring=%i, playersinzonestring=%i. Dumping WhoAllReturnStruct:", + Log.Out(Logs::Detail, Logs::None, "[CLIENT] id=%i, playerineqstring=%i, playersinzonestring=%i. Dumping WhoAllReturnStruct:", wars->id, wars->playerineqstring, wars->playersinzonestring); - #endif } } else - _log(ZONE__WORLD_ERR, "WhoAllReturnStruct: Could not get return struct!"); + Log.Out(Logs::General, Logs::Error, "WhoAllReturnStruct: Could not get return struct!"); break; } case ServerOP_EmoteMessage: { @@ -681,13 +677,12 @@ void WorldServer::Process() { //pendingrezexp is the amount of XP on the corpse. Setting it to a value >= 0 //also serves to inform Client::OPRezzAnswer to expect a packet. client->SetPendingRezzData(srs->exp, srs->dbid, srs->rez.spellid, srs->rez.corpse_name); - _log(SPELLS__REZ, "OP_RezzRequest in zone %s for %s, spellid:%i", + Log.Out(Logs::Detail, Logs::Spells, "OP_RezzRequest in zone %s for %s, spellid:%i", zone->GetShortName(), client->GetName(), srs->rez.spellid); EQApplicationPacket* outapp = new EQApplicationPacket(OP_RezzRequest, sizeof(Resurrect_Struct)); memcpy(outapp->pBuffer, &srs->rez, sizeof(Resurrect_Struct)); client->QueuePacket(outapp); - _pkt(SPELLS__REZ, outapp); safe_delete(outapp); break; } @@ -697,10 +692,10 @@ void WorldServer::Process() { // to the zone that the corpse is in. Corpse* corpse = entity_list.GetCorpseByName(srs->rez.corpse_name); if (corpse && corpse->IsCorpse()) { - _log(SPELLS__REZ, "OP_RezzComplete received in zone %s for corpse %s", + Log.Out(Logs::Detail, Logs::Spells, "OP_RezzComplete received in zone %s for corpse %s", zone->GetShortName(), srs->rez.corpse_name); - _log(SPELLS__REZ, "Found corpse. Marking corpse as rezzed."); + Log.Out(Logs::Detail, Logs::Spells, "Found corpse. Marking corpse as rezzed."); // I don't know why Rezzed is not set to true in CompleteRezz(). corpse->IsRezzed(true); corpse->CompleteResurrection(); @@ -751,7 +746,7 @@ void WorldServer::Process() { } case ServerOP_SyncWorldTime: { if(zone!=0) { - std::cout << "Received Message SyncWorldTime" << std::endl; + Log.Out(Logs::Moderate, Logs::Zone_Server, "%s Received Message SyncWorldTime", __FUNCTION__); eqTimeOfDay* newtime = (eqTimeOfDay*) pack->pBuffer; zone->zone_time.setEQTimeOfDay(newtime->start_eqtime, newtime->start_realtime); EQApplicationPacket* outapp = new EQApplicationPacket(OP_TimeOfDay, sizeof(TimeOfDay_Struct)); @@ -772,7 +767,7 @@ void WorldServer::Process() { eqTime.minute, (eqTime.hour >= 13) ? "pm" : "am" ); - std::cout << "Time Broadcast Packet: " << timeMessage << std::endl; + Log.Out(Logs::General, Logs::Zone_Server, "Time Broadcast Packet: %s", timeMessage); zone->GotCurTime(true); //} //Test @@ -1384,7 +1379,7 @@ void WorldServer::Process() { if(NewCorpse) NewCorpse->Spawn(); else - LogFile->write(EQEmuLog::Error,"Unable to load player corpse id %u for zone %s.", s->player_corpse_id, zone->GetShortName()); + Log.Out(Logs::General, Logs::Error, "Unable to load player corpse id %u for zone %s.", s->player_corpse_id, zone->GetShortName()); break; } @@ -1753,6 +1748,10 @@ void WorldServer::Process() { RuleManager::Instance()->LoadRules(&database, RuleManager::Instance()->GetActiveRuleset()); break; } + case ServerOP_ReloadLogs: { + database.LoadLogSettings(Log.log_settings); + break; + } case ServerOP_CameraShake: { if(zone) @@ -1977,7 +1976,7 @@ bool WorldServer::SendVoiceMacro(Client* From, uint32 Type, char* Target, uint32 bool WorldServer::RezzPlayer(EQApplicationPacket* rpack, uint32 rezzexp, uint32 dbid, uint16 opcode) { - _log(SPELLS__REZ, "WorldServer::RezzPlayer rezzexp is %i (0 is normal for RezzComplete", rezzexp); + Log.Out(Logs::Detail, Logs::Spells, "WorldServer::RezzPlayer rezzexp is %i (0 is normal for RezzComplete", rezzexp); ServerPacket* pack = new ServerPacket(ServerOP_RezzPlayer, sizeof(RezzPlayer_Struct)); RezzPlayer_Struct* sem = (RezzPlayer_Struct*) pack->pBuffer; sem->rezzopcode = opcode; @@ -1986,9 +1985,9 @@ bool WorldServer::RezzPlayer(EQApplicationPacket* rpack, uint32 rezzexp, uint32 sem->dbid = dbid; bool ret = SendPacket(pack); if (ret) - _log(SPELLS__REZ, "Sending player rezz packet to world spellid:%i", sem->rez.spellid); + Log.Out(Logs::Detail, Logs::Spells, "Sending player rezz packet to world spellid:%i", sem->rez.spellid); else - _log(SPELLS__REZ, "NOT Sending player rezz packet to world"); + Log.Out(Logs::Detail, Logs::Spells, "NOT Sending player rezz packet to world"); safe_delete(pack); return ret; @@ -2008,14 +2007,14 @@ void WorldServer::HandleReloadTasks(ServerPacket *pack) { ReloadTasks_Struct* rts = (ReloadTasks_Struct*) pack->pBuffer; - _log(TASKS__GLOBALLOAD, "Zone received ServerOP_ReloadTasks from World, Command %i", rts->Command); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Zone received ServerOP_ReloadTasks from World, Command %i", rts->Command); switch(rts->Command) { case RELOADTASKS: entity_list.SaveAllClientsTaskState(); if(rts->Parameter == 0) { - _log(TASKS__GLOBALLOAD, "Reload ALL tasks"); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload ALL tasks"); safe_delete(taskmanager); taskmanager = new TaskManager; taskmanager->LoadTasks(); @@ -2024,7 +2023,7 @@ void WorldServer::HandleReloadTasks(ServerPacket *pack) entity_list.ReloadAllClientsTaskState(); } else { - _log(TASKS__GLOBALLOAD, "Reload only task %i", rts->Parameter); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload only task %i", rts->Parameter); taskmanager->LoadTasks(rts->Parameter); entity_list.ReloadAllClientsTaskState(rts->Parameter); } @@ -2033,23 +2032,23 @@ void WorldServer::HandleReloadTasks(ServerPacket *pack) case RELOADTASKPROXIMITIES: if(zone) { - _log(TASKS__GLOBALLOAD, "Reload task proximities"); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload task proximities"); taskmanager->LoadProximities(zone->GetZoneID()); } break; case RELOADTASKGOALLISTS: - _log(TASKS__GLOBALLOAD, "Reload task goal lists"); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload task goal lists"); taskmanager->ReloadGoalLists(); break; case RELOADTASKSETS: - _log(TASKS__GLOBALLOAD, "Reload task sets"); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload task sets"); taskmanager->LoadTaskSets(); break; default: - _log(TASKS__GLOBALLOAD, "Unhandled ServerOP_ReloadTasks command %i", rts->Command); + Log.Out(Logs::General, Logs::Tasks, "[GLOBALLOAD] Unhandled ServerOP_ReloadTasks command %i", rts->Command); } @@ -2064,7 +2063,7 @@ uint32 WorldServer::NextGroupID() { if(cur_groupid >= last_groupid) { //this is an error... This means that 50 groups were created before //1 packet could make the zone->world->zone trip... so let it error. - _log(ZONE__WORLD_ERR, "Ran out of group IDs before the server sent us more."); + Log.Out(Logs::General, Logs::Error, "Ran out of group IDs before the server sent us more."); return(0); } if(cur_groupid > (last_groupid - /*50*/995)) { diff --git a/zone/zone.cpp b/zone/zone.cpp index 23bc03ad6..2cb78b302 100644 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -30,13 +30,13 @@ #include "../common/unix.h" #endif -#include "../common/debug.h" +#include "../common/global_define.h" #include "../common/features.h" #include "../common/rulesys.h" #include "../common/seperator.h" #include "../common/string_util.h" +#include "../common/eqemu_logsys.h" -#include "client_logs.h" #include "guild_mgr.h" #include "map.h" #include "net.h" @@ -52,12 +52,18 @@ #include "zone.h" #include "zone_config.h" +#include +#include +#include + #ifdef _WINDOWS #define snprintf _snprintf #define strncasecmp _strnicmp #define strcasecmp _stricmp #endif + + extern bool staticzone; extern NetConnection net; extern PetitionList petition_list; @@ -83,7 +89,7 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { return false; } - LogFile->write(EQEmuLog::Status, "Booting %s (%d:%d)", zonename, iZoneID, iInstanceID); + Log.Out(Logs::General, Logs::Status, "Booting %s (%d:%d)", zonename, iZoneID, iInstanceID); numclients = 0; zone = new Zone(iZoneID, iInstanceID, zonename); @@ -110,13 +116,13 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { log_levels[i]=0; //set to zero on a bogue char } zone->loglevelvar = log_levels[0]; - LogFile->write(EQEmuLog::Status, "General logging level: %i", zone->loglevelvar); + Log.Out(Logs::General, Logs::Status, "General logging level: %i", zone->loglevelvar); zone->merchantvar = log_levels[1]; - LogFile->write(EQEmuLog::Status, "Merchant logging level: %i", zone->merchantvar); + Log.Out(Logs::General, Logs::Status, "Merchant logging level: %i", zone->merchantvar); zone->tradevar = log_levels[2]; - LogFile->write(EQEmuLog::Status, "Trade logging level: %i", zone->tradevar); + Log.Out(Logs::General, Logs::Status, "Trade logging level: %i", zone->tradevar); zone->lootvar = log_levels[3]; - LogFile->write(EQEmuLog::Status, "Loot logging level: %i", zone->lootvar); + Log.Out(Logs::General, Logs::Status, "Loot logging level: %i", zone->lootvar); } else { zone->loglevelvar = uint8(atoi(tmp)); //continue supporting only command logging (for now) @@ -124,7 +130,7 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { zone->tradevar = 0; zone->lootvar = 0; } - } + } ZoneLoaded = true; @@ -132,17 +138,21 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { if(iInstanceID != 0) { ServerPacket *pack = new ServerPacket(ServerOP_AdventureZoneData, sizeof(uint16)); - *((uint16*)pack->pBuffer) = iInstanceID; + *((uint16*)pack->pBuffer) = iInstanceID; worldserver.SendPacket(pack); delete pack; } - LogFile->write(EQEmuLog::Normal, "---- Zone server %s, listening on port:%i ----", zonename, ZoneConfig::get()->ZonePort); - LogFile->write(EQEmuLog::Status, "Zone Bootup: %s (%i: %i)", zonename, iZoneID, iInstanceID); + Log.Out(Logs::General, Logs::Normal, "---- Zone server %s, listening on port:%i ----", zonename, ZoneConfig::get()->ZonePort); + Log.Out(Logs::General, Logs::Status, "Zone Bootup: %s (%i: %i)", zonename, iZoneID, iInstanceID); parse->Init(); UpdateWindowTitle(); zone->GetTimeSync(); + /* Set Logging */ + + Log.StartFileLogs(StringFormat("%s_version_%u_inst_id_%u_port_%u", zone->GetShortName(), zone->GetInstanceVersion(), zone->GetInstanceID(), ZoneConfig::get()->ZonePort)); + return true; } @@ -156,11 +166,11 @@ bool Zone::LoadZoneObjects() { zoneid, instanceversion); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error Loading Objects from DB: %s",results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Loading Objects from DB: %s",results.ErrorMessage().c_str()); return false; } - LogFile->write(EQEmuLog::Status, "Loading Objects from DB..."); + Log.Out(Logs::General, Logs::Status, "Loading Objects from DB..."); for (auto row = results.begin(); row != results.end(); ++row) { if (atoi(row[9]) == 0) { @@ -277,7 +287,7 @@ bool Zone::LoadGroundSpawns() { memset(&groundspawn, 0, sizeof(groundspawn)); int gsindex=0; - LogFile->write(EQEmuLog::Status, "Loading Ground Spawns from DB..."); + Log.Out(Logs::General, Logs::Status, "Loading Ground Spawns from DB..."); database.LoadGroundSpawns(zoneid, GetInstanceVersion(), &groundspawn); uint32 ix=0; char* name=0; @@ -391,7 +401,7 @@ uint32 Zone::GetTempMerchantQuantity(uint32 NPCID, uint32 Slot) { } void Zone::LoadTempMerchantData() { - LogFile->write(EQEmuLog::Status, "Loading Temporary Merchant Lists..."); + Log.Out(Logs::General, Logs::Status, "Loading Temporary Merchant Lists..."); std::string query = StringFormat( "SELECT " "DISTINCT ml.npcid, " @@ -409,7 +419,6 @@ void Zone::LoadTempMerchantData() { "ORDER BY ml.slot ", GetShortName(), GetInstanceVersion()); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadTempMerchantData query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return; } std::map >::iterator cur; @@ -442,7 +451,6 @@ void Zone::LoadNewMerchantData(uint32 merchantid) { "classes_required, probability FROM merchantlist WHERE merchantid=%d ORDER BY slot", merchantid); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadNewMerchantData query '%s' %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -463,7 +471,7 @@ void Zone::LoadNewMerchantData(uint32 merchantid) { } void Zone::GetMerchantDataForZoneLoad() { - LogFile->write(EQEmuLog::Status, "Loading Merchant Lists..."); + Log.Out(Logs::General, Logs::Status, "Loading Merchant Lists..."); std::string query = StringFormat( "SELECT " "DISTINCT ml.merchantid, " @@ -486,7 +494,7 @@ void Zone::GetMerchantDataForZoneLoad() { std::map >::iterator cur; uint32 npcid = 0; if (results.RowCount() == 0) { - LogFile->write(EQEmuLog::Debug, "No Merchant Data found for %s.", GetShortName()); + Log.Out(Logs::General, Logs::None, "No Merchant Data found for %s.", GetShortName()); return; } for (auto row = results.begin(); row != results.end(); ++row) { @@ -536,7 +544,7 @@ void Zone::LoadMercTemplates(){ "`merc_stance_entries` ORDER BY `class_id`, `proficiency_id`, `stance_id`"; auto results = database.QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::LoadMercTemplates()"); + Log.Out(Logs::General, Logs::Error, "Error in ZoneDatabase::LoadMercTemplates()"); else { for (auto row = results.begin(); row != results.end(); ++row) { MercStanceInfo tempMercStanceInfo; @@ -559,7 +567,7 @@ void Zone::LoadMercTemplates(){ "ORDER BY MTyp.race_id, MS.class_id, MTyp.proficiency_id;"; results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::LoadMercTemplates()"); + Log.Out(Logs::General, Logs::Error, "Error in ZoneDatabase::LoadMercTemplates()"); return; } @@ -603,7 +611,7 @@ void Zone::LoadLevelEXPMods(){ const std::string query = "SELECT level, exp_mod, aa_exp_mod FROM level_exp_mods"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::LoadEXPLevelMods()"); + Log.Out(Logs::General, Logs::Error, "Error in ZoneDatabase::LoadEXPLevelMods()"); return; } @@ -627,7 +635,7 @@ void Zone::LoadMercSpells(){ "ORDER BY msl.class_id, msl.proficiency_id, msle.spell_type, msle.minlevel, msle.slot;"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadMercSpells()"); + Log.Out(Logs::General, Logs::Error, "Error in Zone::LoadMercSpells()"); return; } @@ -649,7 +657,7 @@ void Zone::LoadMercSpells(){ } if(MERC_DEBUG > 0) - LogFile->write(EQEmuLog::Debug, "Mercenary Debug: Loaded %i merc spells.", merc_spells_list[1].size() + merc_spells_list[2].size() + merc_spells_list[9].size() + merc_spells_list[12].size()); + Log.Out(Logs::General, Logs::None, "Mercenary Debug: Loaded %i merc spells.", merc_spells_list[1].size() + merc_spells_list[2].size() + merc_spells_list[9].size() + merc_spells_list[12].size()); } @@ -688,11 +696,11 @@ void Zone::Shutdown(bool quite) } zone->ldon_trap_entry_list.clear(); - LogFile->write(EQEmuLog::Status, "Zone Shutdown: %s (%i)", zone->GetShortName(), zone->GetZoneID()); + Log.Out(Logs::General, Logs::Status, "Zone Shutdown: %s (%i)", zone->GetShortName(), zone->GetZoneID()); petition_list.ClearPetitions(); zone->GotCurTime(false); if (!quite) - LogFile->write(EQEmuLog::Normal, "Zone shutdown: going to sleep"); + Log.Out(Logs::General, Logs::Normal, "Zone shutdown: going to sleep"); ZoneLoaded = false; zone->ResetAuth(); @@ -700,23 +708,25 @@ void Zone::Shutdown(bool quite) entity_list.ClearAreas(); parse->ReloadQuests(true); UpdateWindowTitle(); + + Log.CloseFileLogs(); } void Zone::LoadZoneDoors(const char* zone, int16 version) { - LogFile->write(EQEmuLog::Status, "Loading doors for %s ...", zone); + Log.Out(Logs::General, Logs::Status, "Loading doors for %s ...", zone); uint32 maxid; int32 count = database.GetDoorsCount(&maxid, zone, version); if(count < 1) { - LogFile->write(EQEmuLog::Status, "... No doors loaded."); + Log.Out(Logs::General, Logs::Status, "... No doors loaded."); return; } Door *dlist = new Door[count]; if(!database.LoadDoors(count, dlist, zone, version)) { - LogFile->write(EQEmuLog::Error, "... Failed to load doors."); + Log.Out(Logs::General, Logs::Error, "... Failed to load doors."); delete[] dlist; return; } @@ -774,12 +784,12 @@ Zone::Zone(uint32 in_zoneid, uint32 in_instanceid, const char* in_short_name) database.GetZoneLongName(short_name, &long_name, file_name, &m_SafePoint.m_X, &m_SafePoint.m_Y, &m_SafePoint.m_Z, &pgraveyard_id, &pMaxClients); if(graveyard_id() > 0) { - LogFile->write(EQEmuLog::Debug, "Graveyard ID is %i.", graveyard_id()); + Log.Out(Logs::General, Logs::None, "Graveyard ID is %i.", graveyard_id()); bool GraveYardLoaded = database.GetZoneGraveyard(graveyard_id(), &pgraveyard_zoneid, &m_Graveyard.m_X, &m_Graveyard.m_Y, &m_Graveyard.m_Z, &m_Graveyard.m_Heading); if(GraveYardLoaded) - LogFile->write(EQEmuLog::Debug, "Loaded a graveyard for zone %s: graveyard zoneid is %u at %s.", short_name, graveyard_zoneid(), to_string(m_Graveyard).c_str()); + Log.Out(Logs::General, Logs::None, "Loaded a graveyard for zone %s: graveyard zoneid is %u at %s.", short_name, graveyard_zoneid(), to_string(m_Graveyard).c_str()); else - LogFile->write(EQEmuLog::Error, "Unable to load the graveyard id %i for zone %s.", graveyard_id(), short_name); + Log.Out(Logs::General, Logs::Error, "Unable to load the graveyard id %i for zone %s.", graveyard_id(), short_name); } if (long_name == 0) { long_name = strcpy(new char[18], "Long zone missing"); @@ -787,7 +797,7 @@ Zone::Zone(uint32 in_zoneid, uint32 in_instanceid, const char* in_short_name) autoshutdown_timer.Start(AUTHENTICATION_TIMEOUT * 1000, false); Weather_Timer = new Timer(60000); Weather_Timer->Start(); - LogFile->write(EQEmuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", short_name, Weather_Timer->GetRemainingTime()/1000); + Log.Out(Logs::General, Logs::None, "The next weather check for zone: %s will be in %i seconds.", short_name, Weather_Timer->GetRemainingTime()/1000); zone_weather = 0; weather_intensity = 0; blocked_spells = nullptr; @@ -861,9 +871,6 @@ Zone::~Zone() { } safe_delete_array(aas); } -#ifdef CLIENT_LOGS - client_logs.clear(); -#endif safe_delete(GuildBanks); } @@ -872,56 +879,56 @@ Zone::~Zone() { bool Zone::Init(bool iStaticZone) { SetStaticZone(iStaticZone); - LogFile->write(EQEmuLog::Status, "Loading spawn conditions..."); + Log.Out(Logs::General, Logs::Status, "Loading spawn conditions..."); if(!spawn_conditions.LoadSpawnConditions(short_name, instanceid)) { - LogFile->write(EQEmuLog::Error, "Loading spawn conditions failed, continuing without them."); + Log.Out(Logs::General, Logs::Error, "Loading spawn conditions failed, continuing without them."); } - LogFile->write(EQEmuLog::Status, "Loading static zone points..."); + Log.Out(Logs::General, Logs::Status, "Loading static zone points..."); if (!database.LoadStaticZonePoints(&zone_point_list, short_name, GetInstanceVersion())) { - LogFile->write(EQEmuLog::Error, "Loading static zone points failed."); + Log.Out(Logs::General, Logs::Error, "Loading static zone points failed."); return false; } - LogFile->write(EQEmuLog::Status, "Loading spawn groups..."); + Log.Out(Logs::General, Logs::Status, "Loading spawn groups..."); if (!database.LoadSpawnGroups(short_name, GetInstanceVersion(), &spawn_group_list)) { - LogFile->write(EQEmuLog::Error, "Loading spawn groups failed."); + Log.Out(Logs::General, Logs::Error, "Loading spawn groups failed."); return false; } - LogFile->write(EQEmuLog::Status, "Loading spawn2 points..."); + Log.Out(Logs::General, Logs::Status, "Loading spawn2 points..."); if (!database.PopulateZoneSpawnList(zoneid, spawn2_list, GetInstanceVersion())) { - LogFile->write(EQEmuLog::Error, "Loading spawn2 points failed."); + Log.Out(Logs::General, Logs::Error, "Loading spawn2 points failed."); return false; } - LogFile->write(EQEmuLog::Status, "Loading player corpses..."); + Log.Out(Logs::General, Logs::Status, "Loading player corpses..."); if (!database.LoadCharacterCorpses(zoneid, instanceid)) { - LogFile->write(EQEmuLog::Error, "Loading player corpses failed."); + Log.Out(Logs::General, Logs::Error, "Loading player corpses failed."); return false; } - LogFile->write(EQEmuLog::Status, "Loading traps..."); + Log.Out(Logs::General, Logs::Status, "Loading traps..."); if (!database.LoadTraps(short_name, GetInstanceVersion())) { - LogFile->write(EQEmuLog::Error, "Loading traps failed."); + Log.Out(Logs::General, Logs::Error, "Loading traps failed."); return false; } - LogFile->write(EQEmuLog::Status, "Loading adventure flavor text..."); + Log.Out(Logs::General, Logs::Status, "Loading adventure flavor text..."); LoadAdventureFlavor(); - LogFile->write(EQEmuLog::Status, "Loading ground spawns..."); + Log.Out(Logs::General, Logs::Status, "Loading ground spawns..."); if (!LoadGroundSpawns()) { - LogFile->write(EQEmuLog::Error, "Loading ground spawns failed. continuing."); + Log.Out(Logs::General, Logs::Error, "Loading ground spawns failed. continuing."); } - LogFile->write(EQEmuLog::Status, "Loading World Objects from DB..."); + Log.Out(Logs::General, Logs::Status, "Loading World Objects from DB..."); if (!LoadZoneObjects()) { - LogFile->write(EQEmuLog::Error, "Loading World Objects failed. continuing."); + Log.Out(Logs::General, Logs::Error, "Loading World Objects failed. continuing."); } //load up the zone's doors (prints inside) @@ -978,10 +985,10 @@ bool Zone::Init(bool iStaticZone) { } } - LogFile->write(EQEmuLog::Status, "Loading timezone data..."); + Log.Out(Logs::General, Logs::Status, "Loading timezone data..."); zone->zone_time.setEQTimeZone(database.GetZoneTZ(zoneid, GetInstanceVersion())); - LogFile->write(EQEmuLog::Status, "Init Finished: ZoneID = %d, Time Offset = %d", zoneid, zone->zone_time.getEQTimeZone()); + Log.Out(Logs::General, Logs::Status, "Init Finished: ZoneID = %d, Time Offset = %d", zoneid, zone->zone_time.getEQTimeZone()); LoadTickItems(); @@ -992,32 +999,32 @@ bool Zone::Init(bool iStaticZone) { } void Zone::ReloadStaticData() { - LogFile->write(EQEmuLog::Status, "Reloading Zone Static Data..."); + Log.Out(Logs::General, Logs::Status, "Reloading Zone Static Data..."); - LogFile->write(EQEmuLog::Status, "Reloading static zone points..."); + Log.Out(Logs::General, Logs::Status, "Reloading static zone points..."); zone_point_list.Clear(); if (!database.LoadStaticZonePoints(&zone_point_list, GetShortName(), GetInstanceVersion())) { - LogFile->write(EQEmuLog::Error, "Loading static zone points failed."); + Log.Out(Logs::General, Logs::Error, "Loading static zone points failed."); } - LogFile->write(EQEmuLog::Status, "Reloading traps..."); + Log.Out(Logs::General, Logs::Status, "Reloading traps..."); entity_list.RemoveAllTraps(); if (!database.LoadTraps(GetShortName(), GetInstanceVersion())) { - LogFile->write(EQEmuLog::Error, "Reloading traps failed."); + Log.Out(Logs::General, Logs::Error, "Reloading traps failed."); } - LogFile->write(EQEmuLog::Status, "Reloading ground spawns..."); + Log.Out(Logs::General, Logs::Status, "Reloading ground spawns..."); if (!LoadGroundSpawns()) { - LogFile->write(EQEmuLog::Error, "Reloading ground spawns failed. continuing."); + Log.Out(Logs::General, Logs::Error, "Reloading ground spawns failed. continuing."); } entity_list.RemoveAllObjects(); - LogFile->write(EQEmuLog::Status, "Reloading World Objects from DB..."); + Log.Out(Logs::General, Logs::Status, "Reloading World Objects from DB..."); if (!LoadZoneObjects()) { - LogFile->write(EQEmuLog::Error, "Reloading World Objects failed. continuing."); + Log.Out(Logs::General, Logs::Error, "Reloading World Objects failed. continuing."); } entity_list.RemoveAllDoors(); @@ -1033,7 +1040,7 @@ void Zone::ReloadStaticData() { if (!LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion(), true)) // try loading the zone name... LoadZoneCFG(zone->GetFileName(), zone->GetInstanceVersion()); // if that fails, try the file name, then load defaults - LogFile->write(EQEmuLog::Status, "Zone Static Data Reloaded."); + Log.Out(Logs::General, Logs::Status, "Zone Static Data Reloaded."); } bool Zone::LoadZoneCFG(const char* filename, uint16 instance_id, bool DontLoadDefault) @@ -1045,7 +1052,7 @@ bool Zone::LoadZoneCFG(const char* filename, uint16 instance_id, bool DontLoadDe if(!database.GetZoneCFG(database.GetZoneID(filename), 0, &newzone_data, can_bind, can_combat, can_levitate, can_castoutdoor, is_city, is_hotzone, allow_mercs, zone_type, default_ruleset, &map_name)) { - LogFile->write(EQEmuLog::Error, "Error loading the Zone Config."); + Log.Out(Logs::General, Logs::Error, "Error loading the Zone Config."); return false; } } @@ -1060,7 +1067,7 @@ bool Zone::LoadZoneCFG(const char* filename, uint16 instance_id, bool DontLoadDe if(!database.GetZoneCFG(database.GetZoneID(filename), 0, &newzone_data, can_bind, can_combat, can_levitate, can_castoutdoor, is_city, is_hotzone, allow_mercs, zone_type, default_ruleset, &map_name)) { - LogFile->write(EQEmuLog::Error, "Error loading the Zone Config."); + Log.Out(Logs::General, Logs::Error, "Error loading the Zone Config."); return false; } } @@ -1071,7 +1078,7 @@ bool Zone::LoadZoneCFG(const char* filename, uint16 instance_id, bool DontLoadDe strcpy(newzone_data.zone_long_name, GetLongName()); strcpy(newzone_data.zone_short_name2, GetShortName()); - LogFile->write(EQEmuLog::Status, "Successfully loaded Zone Config."); + Log.Out(Logs::General, Logs::Status, "Successfully loaded Zone Config."); return true; } @@ -1376,11 +1383,11 @@ void Zone::ChangeWeather() weathertimer = weatherTimerRule*1000; Weather_Timer->Start(weathertimer); } - LogFile->write(EQEmuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", zone->GetShortName(), Weather_Timer->GetRemainingTime()/1000); + Log.Out(Logs::General, Logs::None, "The next weather check for zone: %s will be in %i seconds.", zone->GetShortName(), Weather_Timer->GetRemainingTime()/1000); } else { - LogFile->write(EQEmuLog::Debug, "The weather for zone: %s has changed. Old weather was = %i. New weather is = %i The next check will be in %i seconds. Rain chance: %i, Rain duration: %i, Snow chance %i, Snow duration: %i", zone->GetShortName(), tmpOldWeather, zone_weather,Weather_Timer->GetRemainingTime()/1000,rainchance,rainduration,snowchance,snowduration); + Log.Out(Logs::General, Logs::None, "The weather for zone: %s has changed. Old weather was = %i. New weather is = %i The next check will be in %i seconds. Rain chance: %i, Rain duration: %i, Snow chance %i, Snow duration: %i", zone->GetShortName(), tmpOldWeather, zone_weather,Weather_Timer->GetRemainingTime()/1000,rainchance,rainduration,snowchance,snowduration); this->weatherSend(); } } @@ -1465,7 +1472,7 @@ void Zone::Repop(uint32 delay) { quest_manager.ClearAllTimers(); if (!database.PopulateZoneSpawnList(zoneid, spawn2_list, GetInstanceVersion(), delay)) - LogFile->write(EQEmuLog::Debug, "Error in Zone::Repop: database.PopulateZoneSpawnList failed"); + Log.Out(Logs::General, Logs::None, "Error in Zone::Repop: database.PopulateZoneSpawnList failed"); initgrids_timer.Start(); @@ -1549,8 +1556,8 @@ ZonePoint* Zone::GetClosestZonePoint(const xyz_location& location, uint32 to, Cl { if(client) client->CheatDetected(MQZoneUnknownDest, location.m_X, location.m_Y, location.m_Z); // Someone is trying to use /zone - LogFile->write(EQEmuLog::Status, "WARNING: Closest zone point for zone id %d is %f, you might need to update your zone_points table if you dont arrive at the right spot.", to, closest_dist); - LogFile->write(EQEmuLog::Status, ". %s", to_string(location).c_str()); + Log.Out(Logs::General, Logs::Status, "WARNING: Closest zone point for zone id %d is %f, you might need to update your zone_points table if you dont arrive at the right spot.", to, closest_dist); + Log.Out(Logs::General, Logs::Status, ". %s", to_string(location).c_str()); } if(closest_dist > max_distance2) @@ -1618,7 +1625,6 @@ bool ZoneDatabase::LoadStaticZonePoints(LinkedList* zone_point_list, "ORDER BY number", zonename, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error1 in LoadStaticZonePoints query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -1827,7 +1833,7 @@ void Zone::LoadBlockedSpells(uint32 zoneid) blocked_spells = new ZoneSpellsBlocked[totalBS]; if(!database.LoadBlockedSpells(totalBS, blocked_spells, zoneid)) { - LogFile->write(EQEmuLog::Error, "... Failed to load blocked spells."); + Log.Out(Logs::General, Logs::Error, "... Failed to load blocked spells."); ClearBlockedSpells(); } } @@ -1954,7 +1960,6 @@ void Zone::LoadLDoNTraps() const std::string query = "SELECT id, type, spell_id, skill, locked FROM ldon_trap_templates"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadLDoNTraps: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -1975,7 +1980,6 @@ void Zone::LoadLDoNTrapEntries() const std::string query = "SELECT id, trap_id FROM ldon_trap_entries"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadLDoNTrapEntries: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2017,7 +2021,6 @@ void Zone::LoadVeteranRewards() "ORDER by claim_id, reward_slot"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadVeteranRewards: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2063,7 +2066,6 @@ void Zone::LoadAlternateCurrencies() const std::string query = "SELECT id, item_id FROM alternate_currency"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadAlternateCurrencies: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2111,7 +2113,6 @@ void Zone::LoadAdventureFlavor() const std::string query = "SELECT id, text FROM adventure_template_entry_flavor"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadAdventureFlavor: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2186,7 +2187,6 @@ void Zone::LoadNPCEmotes(LinkedList* NPCEmoteList) const std::string query = "SELECT emoteid, event_, type, text FROM npc_emotes"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadNPCEmotes: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2220,7 +2220,6 @@ void Zone::LoadTickItems() const std::string query = "SELECT it_itemid, it_chance, it_level, it_qglobal, it_bagslot FROM item_tick"; auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in Zone::LoadTickItems: %s (%s)", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2270,3 +2269,4 @@ void Zone::UpdateHotzone() is_hotzone = atoi(row[0]) == 0 ? false: true; } + diff --git a/zone/zone.h b/zone/zone.h index ce6b61d23..37f3a7547 100644 --- a/zone/zone.h +++ b/zone/zone.h @@ -67,6 +67,16 @@ struct item_tick_struct { std::string qglobal; }; +// static uint32 gmsay_log_message_colors[EQEmuLogSys::MaxLogID] = { +// 15, // "Status", - Yellow +// 15, // "Normal", - Yellow +// 3, // "Error", - Red +// 14, // "Debug", - Light Green +// 4, // "Quest", +// 5, // "Command", +// 3 // "Crash" +// }; + class Client; class Map; class Mob; @@ -256,6 +266,8 @@ public: // random object that provides random values for the zone EQEmu::Random random; + static void GMSayHookCallBackProcess(uint16 log_category, std::string& message){ entity_list.MessageStatus(0, 80, Log.GetGMSayColorFromCategory(log_category), "%s", message.c_str()); } + //MODDING HOOKS void mod_init(); void mod_repop(); diff --git a/zone/zone_logsys.cpp b/zone/zone_logsys.cpp deleted file mode 100644 index 50362c6b1..000000000 --- a/zone/zone_logsys.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* EQEMu: Everquest Server Emulator - Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY except by those people which sell it, which - are required to give you total support for your newly bought product; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "../common/debug.h" -#include "../common/logsys.h" -#include "../common/base_packet.h" - -#include "mob.h" - -#include - -void log_message_mob(LogType type, Mob *who, const char *fmt, ...) { - if(!who->IsLoggingEnabled()) - return; //could prolly put this in the macro, but it feels even dirtier than prototyping this in common - - char prefix_buffer[256]; - snprintf(prefix_buffer, 255, "[%s] %s: ", log_type_info[type].name, who->GetName()); - prefix_buffer[255] = '\0'; - - va_list args; - va_start(args, fmt); - LogFile->writePVA(EQEmuLog::Debug, prefix_buffer, fmt, args); - va_end(args); -} - -void log_message_mobVA(LogType type, Mob *who, const char *fmt, va_list args) { - if(!who->IsLoggingEnabled()) - return; //could prolly put this in the macro, but it feels even dirtier than prototyping this in common - - char prefix_buffer[256]; - snprintf(prefix_buffer, 255, "[%s] %s: ", log_type_info[type].name, who->GetName()); - prefix_buffer[255] = '\0'; - - LogFile->writePVA(EQEmuLog::Debug, prefix_buffer, fmt, args); -} - -void log_hex_mob(LogType type, Mob *who, const char *data, uint32 length, uint8 padding) { - if(!who->IsLoggingEnabled()) - return; //could prolly put this in the macro, but it feels even dirtier than prototyping this in common - - log_hex(type,data,length,padding); -} - -void log_packet_mob(LogType type, Mob *who, const BasePacket *p) { - if(!who->IsLoggingEnabled()) - return; //could prolly put this in the macro, but it feels even dirtier than prototyping this in common - - char buffer[80]; - p->build_header_dump(buffer); - log_message(type,"[%s] %s: %s", log_type_info[type].name, who->GetName(), buffer); - log_hex(type,(const char *)p->pBuffer,p->size); -} - diff --git a/zone/zonedb.cpp b/zone/zonedb.cpp index 606b049ef..e30cd7935 100644 --- a/zone/zonedb.cpp +++ b/zone/zonedb.cpp @@ -1,5 +1,5 @@ - +#include "../common/eqemu_logsys.h" #include "../common/extprofile.h" #include "../common/item.h" #include "../common/rulesys.h" @@ -86,7 +86,6 @@ bool ZoneDatabase::SaveZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct zoneid, instance_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in SaveZoneCFG query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return false; } @@ -112,7 +111,6 @@ bool ZoneDatabase::GetZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct "FROM zone WHERE zoneidnumber = %i AND version = %i", zoneid, instance_id); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetZoneCFG query %s: %s", query.c_str(), results.ErrorMessage().c_str()); strcpy(*map_filename, "default"); return false; } @@ -201,7 +199,6 @@ void ZoneDatabase::UpdateSpawn2Timeleft(uint32 id, uint16 instance_id, uint32 ti "AND instance_id = %lu",(unsigned long)id, (unsigned long)instance_id); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in UpdateTimeLeft query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -212,7 +209,6 @@ void ZoneDatabase::UpdateSpawn2Timeleft(uint32 id, uint16 instance_id, uint32 ti (unsigned long)timeleft, (unsigned long)instance_id); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in UpdateTimeLeft query %s: %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -225,7 +221,6 @@ uint32 ZoneDatabase::GetSpawnTimeLeft(uint32 id, uint16 instance_id) (unsigned long)id, (unsigned long)zone->GetInstanceID()); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in GetSpawnTimeLeft query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -253,10 +248,7 @@ uint32 ZoneDatabase::GetSpawnTimeLeft(uint32 id, uint16 instance_id) void ZoneDatabase::UpdateSpawn2Status(uint32 id, uint8 new_status) { std::string query = StringFormat("UPDATE spawn2 SET enabled = %i WHERE id = %lu", new_status, (unsigned long)id); - auto results = QueryDatabase(query); - if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in UpdateSpawn2Status query %s: %s", query.c_str(), results.ErrorMessage().c_str()); - + QueryDatabase(query); } bool ZoneDatabase::logevents(const char* accountname,uint32 accountid,uint8 status,const char* charname, const char* target,const char* descriptiontype, const char* description,int event_nid){ @@ -279,7 +271,6 @@ bool ZoneDatabase::logevents(const char* accountname,uint32 accountid,uint8 stat safe_delete_array(targetarr); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in logevents" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -325,10 +316,7 @@ void ZoneDatabase::UpdateBug(BugStruct* bug) { safe_delete_array(bugtext); safe_delete_array(uitext); safe_delete_array(targettext); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in UpdateBug '" << query << "' " << results.ErrorMessage() << std::endl; - + QueryDatabase(query); } void ZoneDatabase::UpdateBug(PetitionBug_Struct* bug){ @@ -342,10 +330,7 @@ void ZoneDatabase::UpdateBug(PetitionBug_Struct* bug){ "VALUES('%s', '%s', '%s', %i)", "Petition", bug->name, bugtext, 25); safe_delete_array(bugtext); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in UpdateBug '" << query << "' " << results.ErrorMessage() << std::endl; - + QueryDatabase(query); } bool ZoneDatabase::SetSpecialAttkFlag(uint8 id, const char* flag) { @@ -426,7 +411,7 @@ void ZoneDatabase::GetEventLogs(const char* name,char* target,uint32 account_id, void ZoneDatabase::LoadWorldContainer(uint32 parentid, ItemInst* container) { if (!container) { - LogFile->write(EQEmuLog::Error, "Programming error: LoadWorldContainer passed nullptr pointer"); + Log.Out(Logs::General, Logs::Error, "Programming error: LoadWorldContainer passed nullptr pointer"); return; } @@ -434,7 +419,7 @@ void ZoneDatabase::LoadWorldContainer(uint32 parentid, ItemInst* container) "FROM object_contents WHERE parentid = %i", parentid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in DB::LoadWorldContainer: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in DB::LoadWorldContainer: %s", results.ErrorMessage().c_str()); return; } @@ -499,7 +484,7 @@ void ZoneDatabase::SaveWorldContainer(uint32 zone_id, uint32 parent_id, const It augslot[0], augslot[1], augslot[2], augslot[3], augslot[4], augslot[5]); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::SaveWorldContainer: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in ZoneDatabase::SaveWorldContainer: %s", results.ErrorMessage().c_str()); } @@ -511,7 +496,7 @@ void ZoneDatabase::DeleteWorldContainer(uint32 parent_id, uint32 zone_id) std::string query = StringFormat("DELETE FROM object_contents WHERE parentid = %i AND zoneid = %i", parent_id, zone_id); auto results = QueryDatabase(query); if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::DeleteWorldContainer: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error in ZoneDatabase::DeleteWorldContainer: %s", results.ErrorMessage().c_str()); } @@ -523,14 +508,14 @@ Trader_Struct* ZoneDatabase::LoadTraderItem(uint32 char_id) std::string query = StringFormat("SELECT * FROM trader WHERE char_id = %i ORDER BY slot_id LIMIT 80", char_id); auto results = QueryDatabase(query); if (!results.Success()) { - _log(TRADING__CLIENT, "Failed to load trader information!\n"); + Log.Out(Logs::Detail, Logs::Trading, "Failed to load trader information!\n"); return loadti; } loadti->Code = BazaarTrader_ShowItems; for (auto row = results.begin(); row != results.end(); ++row) { if (atoi(row[5]) >= 80 || atoi(row[4]) < 0) { - _log(TRADING__CLIENT, "Bad Slot number when trying to load trader information!\n"); + Log.Out(Logs::Detail, Logs::Trading, "Bad Slot number when trying to load trader information!\n"); continue; } @@ -548,13 +533,13 @@ TraderCharges_Struct* ZoneDatabase::LoadTraderItemWithCharges(uint32 char_id) std::string query = StringFormat("SELECT * FROM trader WHERE char_id=%i ORDER BY slot_id LIMIT 80", char_id); auto results = QueryDatabase(query); if (!results.Success()) { - _log(TRADING__CLIENT, "Failed to load trader information!\n"); + Log.Out(Logs::Detail, Logs::Trading, "Failed to load trader information!\n"); return loadti; } for (auto row = results.begin(); row != results.end(); ++row) { if (atoi(row[5]) >= 80 || atoi(row[5]) < 0) { - _log(TRADING__CLIENT, "Bad Slot number when trying to load trader information!\n"); + Log.Out(Logs::Detail, Logs::Trading, "Bad Slot number when trying to load trader information!\n"); continue; } @@ -574,7 +559,7 @@ ItemInst* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { return nullptr; if (results.RowCount() == 0) { - _log(TRADING__CLIENT, "Bad result from query\n"); fflush(stdout); + Log.Out(Logs::Detail, Logs::Trading, "Bad result from query\n"); fflush(stdout); return nullptr; } @@ -587,7 +572,7 @@ ItemInst* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { const Item_Struct *item = database.GetItem(ItemID); if(!item) { - _log(TRADING__CLIENT, "Unable to create item\n"); + Log.Out(Logs::Detail, Logs::Trading, "Unable to create item\n"); fflush(stdout); return nullptr; } @@ -597,7 +582,7 @@ ItemInst* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { ItemInst* inst = database.CreateItem(item); if(!inst) { - _log(TRADING__CLIENT, "Unable to create item instance\n"); + Log.Out(Logs::Detail, Logs::Trading, "Unable to create item instance\n"); fflush(stdout); return nullptr; } @@ -619,25 +604,25 @@ void ZoneDatabase::SaveTraderItem(uint32 CharID, uint32 ItemID, uint32 SerialNum CharID, ItemID, SerialNumber, Charges, ItemCost, Slot); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to save trader item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to save trader item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); } void ZoneDatabase::UpdateTraderItemCharges(int CharID, uint32 SerialNumber, int32 Charges) { - _log(TRADING__CLIENT, "ZoneDatabase::UpdateTraderItemCharges(%i, %i, %i)", CharID, SerialNumber, Charges); + Log.Out(Logs::Detail, Logs::Trading, "ZoneDatabase::UpdateTraderItemCharges(%i, %i, %i)", CharID, SerialNumber, Charges); std::string query = StringFormat("UPDATE trader SET charges = %i WHERE char_id = %i AND serialnumber = %i", Charges, CharID, SerialNumber); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to update charges for trader item: %i for char_id: %i, the error was: %s\n", + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to update charges for trader item: %i for char_id: %i, the error was: %s\n", SerialNumber, CharID, results.ErrorMessage().c_str()); } void ZoneDatabase::UpdateTraderItemPrice(int CharID, uint32 ItemID, uint32 Charges, uint32 NewPrice) { - _log(TRADING__CLIENT, "ZoneDatabase::UpdateTraderPrice(%i, %i, %i, %i)", CharID, ItemID, Charges, NewPrice); + Log.Out(Logs::Detail, Logs::Trading, "ZoneDatabase::UpdateTraderPrice(%i, %i, %i, %i)", CharID, ItemID, Charges, NewPrice); const Item_Struct *item = database.GetItem(ItemID); @@ -645,12 +630,12 @@ void ZoneDatabase::UpdateTraderItemPrice(int CharID, uint32 ItemID, uint32 Charg return; if(NewPrice == 0) { - _log(TRADING__CLIENT, "Removing Trader items from the DB for CharID %i, ItemID %i", CharID, ItemID); + Log.Out(Logs::Detail, Logs::Trading, "Removing Trader items from the DB for CharID %i, ItemID %i", CharID, ItemID); std::string query = StringFormat("DELETE FROM trader WHERE char_id = %i AND item_id = %i",CharID, ItemID); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to remove trader item(s): %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to remove trader item(s): %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); return; } @@ -661,7 +646,7 @@ void ZoneDatabase::UpdateTraderItemPrice(int CharID, uint32 ItemID, uint32 Charg NewPrice, CharID, ItemID, Charges); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to update price for trader item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to update price for trader item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); return; } @@ -671,7 +656,7 @@ void ZoneDatabase::UpdateTraderItemPrice(int CharID, uint32 ItemID, uint32 Charg NewPrice, CharID, ItemID); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to update price for trader item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to update price for trader item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); } void ZoneDatabase::DeleteTraderItem(uint32 char_id){ @@ -680,7 +665,7 @@ void ZoneDatabase::DeleteTraderItem(uint32 char_id){ const std::string query = "DELETE FROM trader"; auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to delete all trader items data, the error was: %s\n", results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to delete all trader items data, the error was: %s\n", results.ErrorMessage().c_str()); return; } @@ -688,7 +673,7 @@ void ZoneDatabase::DeleteTraderItem(uint32 char_id){ std::string query = StringFormat("DELETE FROM trader WHERE char_id = %i", char_id); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to delete trader item data for char_id: %i, the error was: %s\n", char_id, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to delete trader item data for char_id: %i, the error was: %s\n", char_id, results.ErrorMessage().c_str()); } void ZoneDatabase::DeleteTraderItem(uint32 CharID,uint16 SlotID) { @@ -696,7 +681,7 @@ void ZoneDatabase::DeleteTraderItem(uint32 CharID,uint16 SlotID) { std::string query = StringFormat("DELETE FROM trader WHERE char_id = %i And slot_id = %i", CharID, SlotID); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to delete trader item data for char_id: %i, the error was: %s\n",CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to delete trader item data for char_id: %i, the error was: %s\n",CharID, results.ErrorMessage().c_str()); } void ZoneDatabase::DeleteBuyLines(uint32 CharID) { @@ -705,7 +690,7 @@ void ZoneDatabase::DeleteBuyLines(uint32 CharID) { const std::string query = "DELETE FROM buyer"; auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to delete all buyer items data, the error was: %s\n",results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to delete all buyer items data, the error was: %s\n",results.ErrorMessage().c_str()); return; } @@ -713,7 +698,7 @@ void ZoneDatabase::DeleteBuyLines(uint32 CharID) { std::string query = StringFormat("DELETE FROM buyer WHERE charid = %i", CharID); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to delete buyer item data for charid: %i, the error was: %s\n",CharID,results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to delete buyer item data for charid: %i, the error was: %s\n",CharID,results.ErrorMessage().c_str()); } @@ -722,7 +707,7 @@ void ZoneDatabase::AddBuyLine(uint32 CharID, uint32 BuySlot, uint32 ItemID, cons CharID, BuySlot, ItemID, ItemName, Quantity, Price); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to save buline item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to save buline item: %i for char_id: %i, the error was: %s\n", ItemID, CharID, results.ErrorMessage().c_str()); } @@ -730,7 +715,7 @@ void ZoneDatabase::RemoveBuyLine(uint32 CharID, uint32 BuySlot) { std::string query = StringFormat("DELETE FROM buyer WHERE charid = %i AND buyslot = %i", CharID, BuySlot); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to delete buyslot %i for charid: %i, the error was: %s\n", BuySlot, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to delete buyslot %i for charid: %i, the error was: %s\n", BuySlot, CharID, results.ErrorMessage().c_str()); } @@ -743,7 +728,7 @@ void ZoneDatabase::UpdateBuyLine(uint32 CharID, uint32 BuySlot, uint32 Quantity) std::string query = StringFormat("UPDATE buyer SET quantity = %i WHERE charid = %i AND buyslot = %i", Quantity, CharID, BuySlot); auto results = QueryDatabase(query); if (!results.Success()) - _log(TRADING__CLIENT, "Failed to update quantity in buyslot %i for charid: %i, the error was: %s\n", BuySlot, CharID, results.ErrorMessage().c_str()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Failed to update quantity in buyslot %i for charid: %i, the error was: %s\n", BuySlot, CharID, results.ErrorMessage().c_str()); } @@ -1226,7 +1211,7 @@ bool ZoneDatabase::LoadCharacterBindPoint(uint32 character_id, PlayerProfile_Str bool ZoneDatabase::SaveCharacterLanguage(uint32 character_id, uint32 lang_id, uint32 value){ std::string query = StringFormat("REPLACE INTO `character_languages` (id, lang_id, value) VALUES (%u, %u, %u)", character_id, lang_id, value); QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterLanguage for character ID: %i, lang_id:%u value:%u done", character_id, lang_id, value); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterLanguage for character ID: %i, lang_id:%u value:%u done", character_id, lang_id, value); return true; } @@ -1238,10 +1223,10 @@ bool ZoneDatabase::SaveCharacterBindPoint(uint32 character_id, uint32 zone_id, u /* Save Home Bind Point */ std::string query = StringFormat("REPLACE INTO `character_bind` (id, zone_id, instance_id, x, y, z, heading, is_home)" " VALUES (%u, %u, %u, %f, %f, %f, %f, %i)", character_id, zone_id, instance_id, position.m_X, position.m_Y, position.m_Z, position.m_Heading, is_home); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterBindPoint for character ID: %i zone_id: %u instance_id: %u position: %s ishome: %u", character_id, zone_id, instance_id, to_string(position).c_str(), is_home); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterBindPoint for character ID: %i zone_id: %u instance_id: %u position: %s ishome: %u", character_id, zone_id, instance_id, to_string(position).c_str(), is_home); auto results = QueryDatabase(query); if (!results.RowsAffected()) { - LogFile->write(EQEmuLog::Debug, "ERROR Bind Home Save: %s. %s", results.ErrorMessage().c_str(), query.c_str()); + Log.Out(Logs::General, Logs::None, "ERROR Bind Home Save: %s. %s", results.ErrorMessage().c_str(), query.c_str()); } return true; } @@ -1252,20 +1237,20 @@ bool ZoneDatabase::SaveCharacterMaterialColor(uint32 character_id, uint32 slot_i uint8 blue = (color & 0x000000FF); std::string query = StringFormat("REPLACE INTO `character_material` (id, slot, red, green, blue, color, use_tint) VALUES (%u, %u, %u, %u, %u, %u, 255)", character_id, slot_id, red, green, blue, color); auto results = QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterMaterialColor for character ID: %i, slot_id: %u color: %u done", character_id, slot_id, color); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterMaterialColor for character ID: %i, slot_id: %u color: %u done", character_id, slot_id, color); return true; } bool ZoneDatabase::SaveCharacterSkill(uint32 character_id, uint32 skill_id, uint32 value){ std::string query = StringFormat("REPLACE INTO `character_skills` (id, skill_id, value) VALUES (%u, %u, %u)", character_id, skill_id, value); auto results = QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterSkill for character ID: %i, skill_id:%u value:%u done", character_id, skill_id, value); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterSkill for character ID: %i, skill_id:%u value:%u done", character_id, skill_id, value); return true; } bool ZoneDatabase::SaveCharacterDisc(uint32 character_id, uint32 slot_id, uint32 disc_id){ std::string query = StringFormat("REPLACE INTO `character_disciplines` (id, slot_id, disc_id) VALUES (%u, %u, %u)", character_id, slot_id, disc_id); auto results = QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterDisc for character ID: %i, slot:%u disc_id:%u done", character_id, slot_id, disc_id); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterDisc for character ID: %i, slot:%u disc_id:%u done", character_id, slot_id, disc_id); return true; } @@ -1277,7 +1262,7 @@ bool ZoneDatabase::SaveCharacterTribute(uint32 character_id, PlayerProfile_Struc if (pp->tributes[i].tribute > 0 && pp->tributes[i].tribute != TRIBUTE_NONE){ std::string query = StringFormat("REPLACE INTO `character_tribute` (id, tier, tribute) VALUES (%u, %u, %u)", character_id, pp->tributes[i].tier, pp->tributes[i].tribute); QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterTribute for character ID: %i, tier:%u tribute:%u done", character_id, pp->tributes[i].tier, pp->tributes[i].tribute); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterTribute for character ID: %i, tier:%u tribute:%u done", character_id, pp->tributes[i].tier, pp->tributes[i].tribute); } } return true; @@ -1288,15 +1273,13 @@ bool ZoneDatabase::SaveCharacterBandolier(uint32 character_id, uint8 bandolier_i DoEscapeString(bandolier_name_esc, bandolier_name, strlen(bandolier_name)); std::string query = StringFormat("REPLACE INTO `character_bandolier` (id, bandolier_id, bandolier_slot, item_id, icon, bandolier_name) VALUES (%u, %u, %u, %u, %u,'%s')", character_id, bandolier_id, bandolier_slot, item_id, icon, bandolier_name_esc); auto results = QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterBandolier for character ID: %i, bandolier_id: %u, bandolier_slot: %u item_id: %u, icon:%u band_name:%s done", character_id, bandolier_id, bandolier_slot, item_id, icon, bandolier_name); - if (!results.RowsAffected()){ std::cout << "ERROR Bandolier Save: " << results.ErrorMessage() << "\n\n" << query << "\n" << std::endl; } + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterBandolier for character ID: %i, bandolier_id: %u, bandolier_slot: %u item_id: %u, icon:%u band_name:%s done", character_id, bandolier_id, bandolier_slot, item_id, icon, bandolier_name); return true; } bool ZoneDatabase::SaveCharacterPotionBelt(uint32 character_id, uint8 potion_id, uint32 item_id, uint32 icon) { std::string query = StringFormat("REPLACE INTO `character_potionbelt` (id, potion_id, item_id, icon) VALUES (%u, %u, %u, %u)", character_id, potion_id, item_id, icon); auto results = QueryDatabase(query); - if (!results.RowsAffected()){ std::cout << "ERROR Potionbelt Save: " << results.ErrorMessage() << "\n\n" << query << "\n" << std::endl; } return true; } @@ -1603,7 +1586,7 @@ bool ZoneDatabase::SaveCharacterData(uint32 character_id, uint32 account_id, Pla m_epp->expended_aa ); auto results = database.QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "ZoneDatabase::SaveCharacterData %i, done... Took %f seconds", character_id, ((float)(std::clock() - t)) / CLOCKS_PER_SEC); + Log.Out(Logs::General, Logs::None, "ZoneDatabase::SaveCharacterData %i, done... Took %f seconds", character_id, ((float)(std::clock() - t)) / CLOCKS_PER_SEC); return true; } @@ -1644,7 +1627,7 @@ bool ZoneDatabase::SaveCharacterCurrency(uint32 character_id, PlayerProfile_Stru pp->currentEbonCrystals, pp->careerEbonCrystals); auto results = database.QueryDatabase(query); - LogFile->write(EQEmuLog::Debug, "Saving Currency for character ID: %i, done", character_id); + Log.Out(Logs::General, Logs::None, "Saving Currency for character ID: %i, done", character_id); return true; } @@ -1653,7 +1636,7 @@ bool ZoneDatabase::SaveCharacterAA(uint32 character_id, uint32 aa_id, uint32 cur " VALUES (%u, %u, %u)", character_id, aa_id, current_level); auto results = QueryDatabase(rquery); - LogFile->write(EQEmuLog::Debug, "Saving AA for character ID: %u, aa_id: %u current_level: %u", character_id, aa_id, current_level); + Log.Out(Logs::General, Logs::None, "Saving AA for character ID: %u, aa_id: %u current_level: %u", character_id, aa_id, current_level); return true; } @@ -1774,7 +1757,6 @@ const NPCType* ZoneDatabase::GetNPCType (uint32 id) { auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error loading NPCs from database. Bad query: " << results.ErrorMessage() << std::endl; return nullptr; } @@ -2034,7 +2016,6 @@ const NPCType* ZoneDatabase::GetMercType(uint32 id, uint16 raceid, uint32 client auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error loading Mercenaries from database. Bad query: " << results.ErrorMessage() << std::endl; return nullptr; } @@ -2345,7 +2326,7 @@ void ZoneDatabase::SaveMercBuffs(Merc *merc) { std::string query = StringFormat("DELETE FROM merc_buffs WHERE MercId = %u", merc->GetMercID()); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error While Deleting Merc Buffs before save: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error While Deleting Merc Buffs before save: %s", results.ErrorMessage().c_str()); return; } @@ -2371,7 +2352,7 @@ void ZoneDatabase::SaveMercBuffs(Merc *merc) { buffs[buffCount].caston_z, buffs[buffCount].ExtraDIChance); results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error Saving Merc Buffs: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Saving Merc Buffs: %s", results.ErrorMessage().c_str()); break; } } @@ -2390,7 +2371,7 @@ void ZoneDatabase::LoadMercBuffs(Merc *merc) { merc->GetMercID()); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error Loading Merc Buffs: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Loading Merc Buffs: %s", results.ErrorMessage().c_str()); return; } @@ -2435,7 +2416,7 @@ void ZoneDatabase::LoadMercBuffs(Merc *merc) { query = StringFormat("DELETE FROM merc_buffs WHERE MercId = %u", merc->GetMercID()); results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "Error Loading Merc Buffs: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Loading Merc Buffs: %s", results.ErrorMessage().c_str()); } @@ -2451,14 +2432,14 @@ bool ZoneDatabase::DeleteMerc(uint32 merc_id) { auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error Deleting Merc Buffs: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Deleting Merc Buffs: %s", results.ErrorMessage().c_str()); } query = StringFormat("DELETE FROM mercs WHERE MercID = '%u'", merc_id); results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error Deleting Merc: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Deleting Merc: %s", results.ErrorMessage().c_str()); return false; } @@ -2476,7 +2457,7 @@ void ZoneDatabase::LoadMercEquipment(Merc *merc) { merc->GetLevel(), merc->GetLevel()); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error Loading Merc Inventory: %s", results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "Error Loading Merc Inventory: %s", results.ErrorMessage().c_str()); return; } @@ -2498,7 +2479,6 @@ uint8 ZoneDatabase::GetGridType(uint32 grid, uint32 zoneid ) { std::string query = StringFormat("SELECT type FROM grid WHERE id = %i AND zoneid = %i", grid, zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetGridType query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2514,18 +2494,12 @@ void ZoneDatabase::SaveMerchantTemp(uint32 npcid, uint32 slot, uint32 item, uint std::string query = StringFormat("REPLACE INTO merchantlist_temp (npcid, slot, itemid, charges) " "VALUES(%d, %d, %d, %d)", npcid, slot, item, charges); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in SaveMerchantTemp query '" << query << "' " << results.ErrorMessage() << std::endl; + QueryDatabase(query); } void ZoneDatabase::DeleteMerchantTemp(uint32 npcid, uint32 slot){ - std::string query = StringFormat("DELETE FROM merchantlist_temp WHERE npcid=%d AND slot=%d", npcid, slot); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in DeleteMerchantTemp query '" << query << "' " << results.ErrorMessage() << std::endl; - + QueryDatabase(query); } bool ZoneDatabase::UpdateZoneSafeCoords(const char* zonename, const xyz_location& location) { @@ -2545,7 +2519,6 @@ uint8 ZoneDatabase::GetUseCFGSafeCoords() const std::string query = "SELECT value FROM variables WHERE varname='UseCFGSafeCoords'"; auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetUseCFGSafeCoords query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2565,7 +2538,6 @@ uint32 ZoneDatabase::GetZoneTZ(uint32 zoneid, uint32 version) { zoneid, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetZoneTZ query '" << query << "' " << results.ErrorMessage() << std::endl; return 0; } @@ -2583,7 +2555,6 @@ bool ZoneDatabase::SetZoneTZ(uint32 zoneid, uint32 version, uint32 tz) { tz, zoneid, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetZoneTZ query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2613,7 +2584,6 @@ void ZoneDatabase::RefreshGroupFromDB(Client *client){ auto results = QueryDatabase(query); if (!results.Success()) { - printf("Error in group update query: %s\n", results.ErrorMessage().c_str()); } else { @@ -2651,7 +2621,6 @@ uint8 ZoneDatabase::GroupCount(uint32 groupid) { std::string query = StringFormat("SELECT count(charid) FROM group_id WHERE groupid = %d", groupid); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::GroupCount query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -2670,7 +2639,6 @@ uint8 ZoneDatabase::RaidGroupCount(uint32 raidid, uint32 groupid) { auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in ZoneDatabase::RaidGroupCount query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return 0; } @@ -2687,7 +2655,6 @@ int32 ZoneDatabase::GetBlockedSpellsCount(uint32 zoneid) std::string query = StringFormat("SELECT count(*) FROM blocked_spells WHERE zoneid = %d", zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in GetBlockedSpellsCount query '" << query << "' " << results.ErrorMessage() << std::endl; return -1; } @@ -2701,13 +2668,12 @@ int32 ZoneDatabase::GetBlockedSpellsCount(uint32 zoneid) bool ZoneDatabase::LoadBlockedSpells(int32 blockedSpellsCount, ZoneSpellsBlocked* into, uint32 zoneid) { - LogFile->write(EQEmuLog::Status, "Loading Blocked Spells from database..."); + Log.Out(Logs::General, Logs::Status, "Loading Blocked Spells from database..."); std::string query = StringFormat("SELECT id, spellid, type, x, y, z, x_diff, y_diff, z_diff, message " "FROM blocked_spells WHERE zoneid = %d ORDER BY id ASC", zoneid); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in LoadBlockedSpells query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -2739,7 +2705,6 @@ int ZoneDatabase::getZoneShutDownDelay(uint32 zoneID, uint32 version) "ORDER BY version DESC", zoneID, version); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in getZoneShutDownDelay query '" << query << "' " << results.ErrorMessage().c_str() << std::endl; return (RuleI(Zone, AutoShutdownDelay)); } @@ -2768,10 +2733,7 @@ uint32 ZoneDatabase::GetKarma(uint32 acct_id) void ZoneDatabase::UpdateKarma(uint32 acct_id, uint32 amount) { std::string query = StringFormat("UPDATE account SET karma = %i WHERE id = %i", amount, acct_id); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in UpdateKarma query '" << query << "' " << results.ErrorMessage().c_str() << std::endl; - + QueryDatabase(query); } void ZoneDatabase::ListAllInstances(Client* client, uint32 charid) @@ -2814,9 +2776,7 @@ void ZoneDatabase::InsertDoor(uint32 ddoordbid, uint16 ddoorid, const char* ddoo ddoordbid, ddoorid, zone->GetShortName(), zone->GetInstanceVersion(), ddoor_name, position.m_X, position.m_Y, position.m_Z, position.m_Heading, dopentype, dguildid, dlockpick, dkeyitem, ddoor_param, dinvert, dincline, dsize); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in InsertDoor" << query << "' " << results.ErrorMessage() << std::endl; + QueryDatabase(query); } void ZoneDatabase::LoadAltCurrencyValues(uint32 char_id, std::map ¤cy) { @@ -2826,7 +2786,6 @@ void ZoneDatabase::LoadAltCurrencyValues(uint32 char_id, std::mapwrite(EQEmuLog::Error, "Error in LoadAltCurrencyValues query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -2865,10 +2824,7 @@ void ZoneDatabase::SaveBuffs(Client *client) { buffs[index].magic_rune, buffs[index].persistant_buff, buffs[index].dot_rune, buffs[index].caston_x, buffs[index].caston_y, buffs[index].caston_z, buffs[index].ExtraDIChance); - auto results = QueryDatabase(query); - if (!results.Success()) - LogFile->write(EQEmuLog::Error, "Error in SaveBuffs query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); - + QueryDatabase(query); } } @@ -2886,7 +2842,6 @@ void ZoneDatabase::LoadBuffs(Client *client) { "FROM `character_buffs` WHERE `character_id` = '%u'", client->CharacterID()); auto results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadBuffs query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -3040,10 +2995,7 @@ void ZoneDatabase::RemoveTempFactions(Client *client) { std::string query = StringFormat("DELETE FROM faction_values " "WHERE temp = 1 AND char_id = %u", client->CharacterID()); - auto results = QueryDatabase(query); - if (!results.Success()) - std::cerr << "Error in RemoveTempFactions query '" << query << "' " << results.ErrorMessage() << std::endl; - + QueryDatabase(query); } void ZoneDatabase::LoadPetInfo(Client *client) { @@ -3060,7 +3012,6 @@ void ZoneDatabase::LoadPetInfo(Client *client) { "WHERE `char_id` = %u", client->CharacterID()); auto results = database.QueryDatabase(query); if(!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadPetInfo query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -3088,7 +3039,6 @@ void ZoneDatabase::LoadPetInfo(Client *client) { "WHERE `char_id` = %u", client->CharacterID()); results = QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadPetInfo query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -3129,7 +3079,6 @@ void ZoneDatabase::LoadPetInfo(Client *client) { "WHERE `char_id`=%u",client->CharacterID()); results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "Error in LoadPetInfo query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } @@ -3259,7 +3208,6 @@ bool ZoneDatabase::SetCharacterFactionLevel(uint32 char_id, int32 faction_id, in char_id, faction_id); auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetCharacterFactionLevel query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3276,7 +3224,6 @@ bool ZoneDatabase::SetCharacterFactionLevel(uint32 char_id, int32 faction_id, in "VALUES (%i, %i, %i, %i)", char_id, faction_id, value, temp); results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in SetCharacterFactionLevel query '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3292,7 +3239,6 @@ bool ZoneDatabase::LoadFactionData() std::string query = "SELECT MAX(id) FROM faction_list"; auto results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in LoadFactionData '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3309,7 +3255,6 @@ bool ZoneDatabase::LoadFactionData() query = "SELECT id, name, base FROM faction_list"; results = QueryDatabase(query); if (!results.Success()) { - std::cerr << "Error in LoadFactionData '" << query << "' " << results.ErrorMessage() << std::endl; return false; } @@ -3737,7 +3682,7 @@ Corpse* ZoneDatabase::SummonBuriedCharacterCorpses(uint32 char_id, uint32 dest_z corpse->SetDecayTimer(RuleI(Character, CorpseDecayTimeMS)); corpse->Spawn(); if (!UnburyCharacterCorpse(corpse->GetCorpseDBID(), dest_zone_id, dest_instance_id, position)) - LogFile->write(EQEmuLog::Error, "Unable to unbury a summoned player corpse for character id %u.", char_id); + Log.Out(Logs::General, Logs::Error, "Unable to unbury a summoned player corpse for character id %u.", char_id); } return corpse; @@ -3776,7 +3721,7 @@ bool ZoneDatabase::SummonAllCharacterCorpses(uint32 char_id, uint32 dest_zone_id ++CorpseCount; } else{ - LogFile->write(EQEmuLog::Error, "Unable to construct a player corpse for character id %u.", char_id); + Log.Out(Logs::General, Logs::Error, "Unable to construct a player corpse for character id %u.", char_id); } } diff --git a/zone/zonedb.h b/zone/zonedb.h index ade485326..4e4d7018d 100644 --- a/zone/zonedb.h +++ b/zone/zonedb.h @@ -5,6 +5,7 @@ #include "../common/eq_packet_structs.h" #include "position.h" #include "../common/faction.h" +#include "../common/eqemu_logsys.h" class Client; class Corpse; diff --git a/zone/zoning.cpp b/zone/zoning.cpp index b5d6d5d25..32278fd0e 100644 --- a/zone/zoning.cpp +++ b/zone/zoning.cpp @@ -16,7 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" +#include "../common/global_define.h" +#include "../common/eqemu_logsys.h" #include "../common/rulesys.h" #include "../common/string_util.h" @@ -43,12 +44,12 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { zoning = true; if (app->size != sizeof(ZoneChange_Struct)) { - LogFile->write(EQEmuLog::Debug, "Wrong size: OP_ZoneChange, size=%d, expected %d", app->size, sizeof(ZoneChange_Struct)); + Log.Out(Logs::General, Logs::None, "Wrong size: OP_ZoneChange, size=%d, expected %d", app->size, sizeof(ZoneChange_Struct)); return; } #if EQDEBUG >= 5 - LogFile->write(EQEmuLog::Debug, "Zone request from %s", GetName()); + Log.Out(Logs::General, Logs::None, "Zone request from %s", GetName()); DumpPacket(app); #endif ZoneChange_Struct* zc=(ZoneChange_Struct*)app->pBuffer; @@ -96,7 +97,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { CheatDetected(MQZone, zc->x, zc->y, zc->z); Message(13, "Invalid unsolicited zone request."); - LogFile->write(EQEmuLog::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%d'.", GetName(), target_zone_id); + Log.Out(Logs::General, Logs::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%d'.", GetName(), target_zone_id); SendZoneCancel(zc); return; } @@ -128,7 +129,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { //if we didnt get a zone point, or its to a different zone, //then we assume this is invalid. if(!zone_point || zone_point->target_zone_id != target_zone_id) { - LogFile->write(EQEmuLog::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%d'.", GetName(), target_zone_id); + Log.Out(Logs::General, Logs::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%d'.", GetName(), target_zone_id); CheatDetected(MQGate, zc->x, zc->y, zc->z); SendZoneCancel(zc); return; @@ -159,7 +160,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { if(target_zone_name == nullptr) { //invalid zone... Message(13, "Invalid target zone ID."); - LogFile->write(EQEmuLog::Error, "Zoning %s: Unable to get zone name for zone id '%d'.", GetName(), target_zone_id); + Log.Out(Logs::General, Logs::Error, "Zoning %s: Unable to get zone name for zone id '%d'.", GetName(), target_zone_id); SendZoneCancel(zc); return; } @@ -172,7 +173,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { if(!database.GetSafePoints(target_zone_name, database.GetInstanceVersion(target_instance_id), &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, flag_needed)) { //invalid zone... Message(13, "Invalid target zone while getting safe points."); - LogFile->write(EQEmuLog::Error, "Zoning %s: Unable to get safe coordinates for zone '%s'.", GetName(), target_zone_name); + Log.Out(Logs::General, Logs::Error, "Zoning %s: Unable to get safe coordinates for zone '%s'.", GetName(), target_zone_name); SendZoneCancel(zc); return; } @@ -192,7 +193,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { switch(zone_mode) { case EvacToSafeCoords: case ZoneToSafeCoords: - LogFile->write(EQEmuLog::Debug, "Zoning %s to safe coords (%f,%f,%f) in %s (%d)", GetName(), safe_x, safe_y, safe_z, target_zone_name, target_zone_id); + Log.Out(Logs::General, Logs::None, "Zoning %s to safe coords (%f,%f,%f) in %s (%d)", GetName(), safe_x, safe_y, safe_z, target_zone_name, target_zone_id); dest_x = safe_x; dest_y = safe_y; dest_z = safe_z; @@ -252,7 +253,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { //could not find a valid reason for them to be zoning, stop it. CheatDetected(MQZoneUnknownDest, 0.0, 0.0, 0.0); - LogFile->write(EQEmuLog::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%s'. Not near a zone point.", GetName(), target_zone_name); + Log.Out(Logs::General, Logs::Error, "Zoning %s: Invalid unsolicited zone request to zone id '%s'. Not near a zone point.", GetName(), target_zone_name); SendZoneCancel(zc); return; default: @@ -287,7 +288,7 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) { //we have successfully zoned DoZoneSuccess(zc, target_zone_id, target_instance_id, dest_x, dest_y, dest_z, dest_h, ignorerestrictions); } else { - LogFile->write(EQEmuLog::Error, "Zoning %s: Rules prevent this char from zoning into '%s'", GetName(), target_zone_name); + Log.Out(Logs::General, Logs::Error, "Zoning %s: Rules prevent this char from zoning into '%s'", GetName(), target_zone_name); SendZoneError(zc, myerror); } } @@ -311,7 +312,7 @@ void Client::SendZoneCancel(ZoneChange_Struct *zc) { void Client::SendZoneError(ZoneChange_Struct *zc, int8 err) { - LogFile->write(EQEmuLog::Error, "Zone %i is not available because target wasn't found or character insufficent level", zc->zoneID); + Log.Out(Logs::General, Logs::Error, "Zone %i is not available because target wasn't found or character insufficent level", zc->zoneID); SetPortExemption(true); @@ -346,7 +347,7 @@ void Client::DoZoneSuccess(ZoneChange_Struct *zc, uint16 zone_id, uint32 instanc if(this->GetPet()) entity_list.RemoveFromHateLists(this->GetPet()); - LogFile->write(EQEmuLog::Status, "Zoning '%s' to: %s (%i) - (%i) x=%f, y=%f, z=%f", m_pp.name, database.GetZoneName(zone_id), zone_id, instance_id, dest_x, dest_y, dest_z); + Log.Out(Logs::General, Logs::Status, "Zoning '%s' to: %s (%i) - (%i) x=%f, y=%f, z=%f", m_pp.name, database.GetZoneName(zone_id), zone_id, instance_id, dest_x, dest_y, dest_z); //set the player's coordinates in the new zone so they have them //when they zone into it @@ -469,7 +470,7 @@ void Client::ProcessMovePC(uint32 zoneID, uint32 instance_id, float x, float y, ZonePC(zoneID, instance_id, x, y, z, heading, ignorerestrictions, zm); break; default: - LogFile->write(EQEmuLog::Error, "Client::ProcessMovePC received a reguest to perform an unsupported client zone operation."); + Log.Out(Logs::General, Logs::Error, "Client::ProcessMovePC received a reguest to perform an unsupported client zone operation."); break; } } @@ -529,19 +530,19 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z heading = m_pp.binds[0].heading; zonesummon_ignorerestrictions = 1; - LogFile->write(EQEmuLog::Debug, "Player %s has died and will be zoned to bind point in zone: %s at LOC x=%f, y=%f, z=%f, heading=%f", GetName(), pZoneName, m_pp.binds[0].x, m_pp.binds[0].y, m_pp.binds[0].z, m_pp.binds[0].heading); + Log.Out(Logs::General, Logs::None, "Player %s has died and will be zoned to bind point in zone: %s at LOC x=%f, y=%f, z=%f, heading=%f", GetName(), pZoneName, m_pp.binds[0].x, m_pp.binds[0].y, m_pp.binds[0].z, m_pp.binds[0].heading); break; case SummonPC: m_ZoneSummonLocation = m_Position = xyz_location(x, y, z); SetHeading(heading); break; case Rewind: - LogFile->write(EQEmuLog::Debug, "%s has requested a /rewind from %f, %f, %f, to %f, %f, %f in %s", GetName(), m_Position.m_X, m_Position.m_Y, m_Position.m_Z, m_RewindLocation.m_X, m_RewindLocation.m_Y, m_RewindLocation.m_Z, zone->GetShortName()); + Log.Out(Logs::General, Logs::None, "%s has requested a /rewind from %f, %f, %f, to %f, %f, %f in %s", GetName(), m_Position.m_X, m_Position.m_Y, m_Position.m_Z, m_RewindLocation.m_X, m_RewindLocation.m_Y, m_RewindLocation.m_Z, zone->GetShortName()); m_ZoneSummonLocation = m_Position = xyz_location(x, y, z); SetHeading(heading); break; default: - LogFile->write(EQEmuLog::Error, "Client::ZonePC() received a reguest to perform an unsupported client zone operation."); + Log.Out(Logs::General, Logs::Error, "Client::ZonePC() received a reguest to perform an unsupported client zone operation."); ReadyToZone = false; break; } @@ -669,7 +670,7 @@ void Client::ZonePC(uint32 zoneID, uint32 instance_id, float x, float y, float z safe_delete(outapp); } - _log(NET__DEBUG, "Player %s has requested a zoning to LOC x=%f, y=%f, z=%f, heading=%f in zoneid=%i", GetName(), x, y, z, heading, zoneID); + Log.Out(Logs::Detail, Logs::None, "Player %s has requested a zoning to LOC x=%f, y=%f, z=%f, heading=%f in zoneid=%i", GetName(), x, y, z, heading, zoneID); //Clear zonesummon variables if we're zoning to our own zone //Client wont generate a zone change packet to the server in this case so //They aren't needed and it keeps behavior on next zone attempt from being undefined. @@ -756,7 +757,7 @@ void Client::SetZoneFlag(uint32 zone_id) { std::string query = StringFormat("INSERT INTO zone_flags (charID,zoneID) VALUES(%d,%d)", CharacterID(), zone_id); auto results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "MySQL Error while trying to set zone flag for %s: %s", GetName(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "MySQL Error while trying to set zone flag for %s: %s", GetName(), results.ErrorMessage().c_str()); } void Client::ClearZoneFlag(uint32 zone_id) { @@ -769,7 +770,7 @@ void Client::ClearZoneFlag(uint32 zone_id) { std::string query = StringFormat("DELETE FROM zone_flags WHERE charID=%d AND zoneID=%d", CharacterID(), zone_id); auto results = database.QueryDatabase(query); if(!results.Success()) - LogFile->write(EQEmuLog::Error, "MySQL Error while trying to clear zone flag for %s: %s", GetName(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "MySQL Error while trying to clear zone flag for %s: %s", GetName(), results.ErrorMessage().c_str()); } @@ -779,7 +780,7 @@ void Client::LoadZoneFlags() { std::string query = StringFormat("SELECT zoneID from zone_flags WHERE charID=%d", CharacterID()); auto results = database.QueryDatabase(query); if (!results.Success()) { - LogFile->write(EQEmuLog::Error, "MySQL Error while trying to load zone flags for %s: %s", GetName(), results.ErrorMessage().c_str()); + Log.Out(Logs::General, Logs::Error, "MySQL Error while trying to load zone flags for %s: %s", GetName(), results.ErrorMessage().c_str()); return; } @@ -842,23 +843,23 @@ bool Client::CanBeInZone() { char flag_needed[128]; if(!database.GetSafePoints(zone->GetShortName(), zone->GetInstanceVersion(), &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, flag_needed)) { //this should not happen... - _log(CLIENT__ERROR, "Unable to query zone info for ourself '%s'", zone->GetShortName()); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Unable to query zone info for ourself '%s'", zone->GetShortName()); return(false); } if(GetLevel() < minlevel) { - _log(CLIENT__ERROR, "Character does not meet min level requirement (%d < %d)!", GetLevel(), minlevel); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Character does not meet min level requirement (%d < %d)!", GetLevel(), minlevel); return(false); } if(Admin() < minstatus) { - _log(CLIENT__ERROR, "Character does not meet min status requirement (%d < %d)!", Admin(), minstatus); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Character does not meet min status requirement (%d < %d)!", Admin(), minstatus); return(false); } if(flag_needed[0] != '\0') { //the flag needed string is not empty, meaning a flag is required. if(Admin() < minStatusToIgnoreZoneFlags && !HasZoneFlag(zone->GetZoneID())) { - _log(CLIENT__ERROR, "Character does not have the flag to be in this zone (%s)!", flag_needed); + Log.Out(Logs::Detail, Logs::None, "[CLIENT] Character does not have the flag to be in this zone (%s)!", flag_needed); return(false); } }