Config File Update Initial Update

This commit is contained in:
phredi 2016-05-20 21:03:34 -05:00
parent 04f47f1e32
commit b997a040d7
50 changed files with 247 additions and 93 deletions

View File

@ -27,6 +27,7 @@
#include "../../common/rulesys.h"
#include "../../common/string_util.h"
const EQEmuConfig *Config;
EQEmuLogSys Log;
void ExportSpells(SharedDatabase *db);
@ -45,12 +46,12 @@ int main(int argc, char **argv) {
return 1;
}
const EQEmuConfig *config = EQEmuConfig::get();
Config = EQEmuConfig::get();
SharedDatabase 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)) {
if(!database.Connect(Config->DatabaseHost.c_str(), Config->DatabaseUsername.c_str(),
Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) {
Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;

View File

@ -25,6 +25,7 @@
#include "../../common/rulesys.h"
#include "../../common/string_util.h"
const EQEmuConfig *Config;
EQEmuLogSys Log;
void ImportSpells(SharedDatabase *db);
@ -43,12 +44,12 @@ int main(int argc, char **argv) {
return 1;
}
const EQEmuConfig *config = EQEmuConfig::get();
Config = EQEmuConfig::get();
SharedDatabase 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)) {
if(!database.Connect(Config->DatabaseHost.c_str(), Config->DatabaseUsername.c_str(),
Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) {
Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;

View File

@ -254,6 +254,10 @@ void EQEmuConfig::do_files(TiXmlElement *ele)
if (text) {
OpCodesFile = text;
}
text = ParseTextBlock(ele, "plugin.pl", true);
if (text) {
PluginPlFile = text;
}
}
void EQEmuConfig::do_directories(TiXmlElement *ele)
@ -262,14 +266,38 @@ void EQEmuConfig::do_directories(TiXmlElement *ele)
text = ParseTextBlock(ele, "maps", true);
if (text) {
MapDir = text;
if ( MapDir.back() != '/' )
MapDir += '/';
}
text = ParseTextBlock(ele, "quests", true);
if (text) {
QuestDir = text;
if ( QuestDir.back() != '/' )
QuestDir += '/';
}
text = ParseTextBlock(ele, "plugins", true);
if (text) {
PluginDir = text;
if ( PluginDir.back() != '/' )
PluginDir += '/';
}
text = ParseTextBlock(ele, "lua_modules", true);
if (text) {
LuaModuleDir = text;
if ( LuaModuleDir.back() != '/' )
LuaModuleDir += '/';
}
text = ParseTextBlock(ele, "patches", true);
if (text) {
PatchDir = text;
if ( PatchDir.back() != '/' )
PatchDir += '/';
}
text = ParseTextBlock(ele, "shared_memory", true);
if (text) {
SharedMemDir = text;
if ( SharedMemDir.back() != '/' )
SharedMemDir += '/';
}
}
@ -404,6 +432,9 @@ std::string EQEmuConfig::GetByName(const std::string &var_name) const
if (var_name == "OpCodesFile") {
return (OpCodesFile);
}
if (var_name == "PluginPlFile") {
return (PluginPlFile);
}
if (var_name == "MapDir") {
return (MapDir);
}
@ -413,6 +444,18 @@ std::string EQEmuConfig::GetByName(const std::string &var_name) const
if (var_name == "PluginDir") {
return (PluginDir);
}
if (var_name == "LuaModuleDir") {
return (LuaModuleDir);
}
if (var_name == "PatchDir") {
return (PatchDir);
}
if (var_name == "SharedMemDir") {
return (SharedMemDir);
}
if (var_name == "LogDir") {
return (LogDir);
}
if (var_name == "LogPrefix") {
return (LogPrefix);
}
@ -468,9 +511,14 @@ void EQEmuConfig::Dump() const
std::cout << "QSDatabasePort = " << QSDatabasePort << std::endl;
std::cout << "SpellsFile = " << SpellsFile << std::endl;
std::cout << "OpCodesFile = " << OpCodesFile << std::endl;
std::cout << "PluginPlFile = " << PluginPlFile << std::endl;
std::cout << "MapDir = " << MapDir << std::endl;
std::cout << "QuestDir = " << QuestDir << std::endl;
std::cout << "PluginDir = " << PluginDir << std::endl;
std::cout << "LuaModuleDir = " << LuaModuleDir << std::endl;
std::cout << "PatchDir = " << PatchDir << std::endl;
std::cout << "SharedMemDir = " << SharedMemDir << std::endl;
std::cout << "LogDir = " << LogDir << std::endl;
std::cout << "ZonePortLow = " << ZonePortLow << std::endl;
std::cout << "ZonePortHigh = " << ZonePortHigh << std::endl;
std::cout << "DefaultStatus = " << (int)DefaultStatus << std::endl;

View File

@ -79,11 +79,15 @@ class EQEmuConfig : public XMLParser
// From <files/>
std::string SpellsFile;
std::string OpCodesFile;
std::string PluginPlFile;
// From <directories/>
std::string MapDir;
std::string QuestDir;
std::string PluginDir;
std::string LuaModuleDir;
std::string PatchDir;
std::string SharedMemDir;
// From <launcher/>
std::string LogPrefix;
@ -153,12 +157,18 @@ class EQEmuConfig : public XMLParser
// Files
SpellsFile = "spells_us.txt";
OpCodesFile = "opcodes.conf";
PluginPlFile = "plugin.pl";
// Dirs
MapDir = "Maps";
QuestDir = "quests";
PluginDir = "plugins";
MapDir = "Maps/";
QuestDir = "quests/";
PluginDir = "plugins/";
LuaModuleDir = "lua_modules/";
PatchDir = "./";
SharedMemDir = "shared/";
LogDir = "logs/";
// Launcher
LogPrefix = "logs/zone-";
LogPrefix = "zone-";
LogSuffix = ".log";
RestartWait = 10000; //milliseconds
TerminateWait = 10000; //milliseconds

View File

@ -0,0 +1,22 @@
/* EQEMu: Everquest Server Emulator
Copyright (C) 2001-2016 EQEMu Development Team (http://eqemulator.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
*/
#include "eqemu_config.h"
extern const EQEmuConfig *Config;

View File

@ -27,7 +27,7 @@
#endif
#include "types.h"
#include "eqemu_exception.h"
#include "eqemu_config_extern.h"
namespace EQEmu {
struct IPCMutex::Implementation {
@ -41,7 +41,7 @@ namespace EQEmu {
IPCMutex::IPCMutex(std::string name) : locked_(false) {
imp_ = new Implementation;
#ifdef _WINDOWS
std::string final_name = "EQEmuMutex_";
std::string final_name = Config->SharedMemDir + "EQEmuMutex_";
final_name += name;
imp_->mut_ = CreateMutex(nullptr,
@ -52,7 +52,7 @@ namespace EQEmu {
EQ_EXCEPT("IPC Mutex", "Could not create mutex.");
}
#else
std::string final_name = name;
std::string final_name = Config->SharedMemDir + name;
final_name += ".lock";
#ifdef __DARWIN

View File

@ -67,7 +67,8 @@ namespace RoF
//create our opcode manager if we havent already
if (opcodes == nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -111,7 +112,8 @@ namespace RoF
if (opcodes != nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if (!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -21,6 +21,7 @@
#define COMMON_ROF_H
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -67,7 +67,8 @@ namespace RoF2
//create our opcode manager if we havent already
if (opcodes == nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -111,7 +112,8 @@ namespace RoF2
if (opcodes != nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if (!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -21,6 +21,7 @@
#define COMMON_ROF2_H
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -63,7 +63,8 @@ namespace SoD
//create our opcode manager if we havent already
if (opcodes == nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -107,7 +108,8 @@ namespace SoD
if (opcodes != nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if (!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -21,6 +21,7 @@
#define COMMON_SOD_H
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -63,7 +63,8 @@ namespace SoF
//create our opcode manager if we havent already
if (opcodes == nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -107,7 +108,8 @@ namespace SoF
if (opcodes != nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if (!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -21,6 +21,7 @@
#define COMMON_SOF_H
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -16,7 +16,8 @@ static Strategy struct_strategy;
void Register(EQStreamIdentifier &into) {
//create our opcode manager if we havent already
if(opcodes == NULL) {
string opfile = "patch_";
string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -51,7 +52,8 @@ void Reload() {
if(opcodes != NULL) {
//TODO: get this file name from the config file
string opfile = "patch_";
string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if(!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -2,6 +2,7 @@
#define TEMPLATE_H_
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -31,6 +31,7 @@
#include "../string_util.h"
#include "../item.h"
#include "titanium_structs.h"
#include <sstream>
@ -61,7 +62,8 @@ namespace Titanium
//create our opcode manager if we havent already
if (opcodes == nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -105,7 +107,8 @@ namespace Titanium
if (opcodes != nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if (!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -21,6 +21,7 @@
#define COMMON_TITANIUM_H
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -63,7 +63,8 @@ namespace UF
//create our opcode manager if we havent already
if (opcodes == nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
//load up the opcode manager.
@ -107,7 +108,8 @@ namespace UF
if (opcodes != nullptr) {
//TODO: get this file name from the config file
std::string opfile = "patch_";
std::string opfile = Config->PatchDir;
opfile += "patch_";
opfile += name;
opfile += ".conf";
if (!opcodes->ReloadOpcodes(opfile.c_str())) {

View File

@ -21,6 +21,7 @@
#define COMMON_UF_H
#include "../struct_strategy.h"
#include "../eqemu_config_extern.h"
class EQStreamIdentifier;

View File

@ -35,6 +35,7 @@
#include "mysql.h"
#include "rulesys.h"
#include "shareddb.h"
#include "eqemu_config_extern.h"
#include "string_util.h"
SharedDatabase::SharedDatabase()
@ -812,7 +813,7 @@ bool SharedDatabase::LoadItems(const std::string &prefix) {
try {
EQEmu::IPCMutex mutex("items");
mutex.Lock();
std::string file_name = std::string("shared/") + prefix + std::string("items");
std::string file_name = Config->SharedMemDir + prefix + std::string("items");
items_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name));
items_hash = std::unique_ptr<EQEmu::FixedMemoryHashSet<Item_Struct>>(new EQEmu::FixedMemoryHashSet<Item_Struct>(reinterpret_cast<uint8*>(items_mmf->Get()), items_mmf->Size()));
mutex.Unlock();
@ -1235,7 +1236,7 @@ bool SharedDatabase::LoadNPCFactionLists(const std::string &prefix) {
try {
EQEmu::IPCMutex mutex("faction");
mutex.Lock();
std::string file_name = std::string("shared/") + prefix + std::string("faction");
std::string file_name = Config->SharedMemDir + prefix + std::string("faction");
faction_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name));
faction_hash = std::unique_ptr<EQEmu::FixedMemoryHashSet<NPCFactionList>>(new EQEmu::FixedMemoryHashSet<NPCFactionList>(reinterpret_cast<uint8*>(faction_mmf->Get()), faction_mmf->Size()));
mutex.Unlock();
@ -1386,7 +1387,7 @@ bool SharedDatabase::LoadSkillCaps(const std::string &prefix) {
try {
EQEmu::IPCMutex mutex("skill_caps");
mutex.Lock();
std::string file_name = std::string("shared/") + prefix + std::string("skill_caps");
std::string file_name = Config->SharedMemDir + prefix + std::string("skill_caps");
skill_caps_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name));
mutex.Unlock();
} catch(std::exception &ex) {
@ -1542,7 +1543,7 @@ bool SharedDatabase::LoadSpells(const std::string &prefix, int32 *records, const
EQEmu::IPCMutex mutex("spells");
mutex.Lock();
std::string file_name = std::string("shared/") + prefix + std::string("spells");
std::string file_name = Config->SharedMemDir + prefix + std::string("spells");
spells_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name));
*records = *reinterpret_cast<uint32*>(spells_mmf->Get());
*sp = reinterpret_cast<const SPDat_Spell_Struct*>((char*)spells_mmf->Get() + 4);
@ -1745,7 +1746,7 @@ bool SharedDatabase::LoadBaseData(const std::string &prefix) {
EQEmu::IPCMutex mutex("base_data");
mutex.Lock();
std::string file_name = std::string("shared/") + prefix + std::string("base_data");
std::string file_name = Config->SharedMemDir + prefix + std::string("base_data");
base_data_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name));
mutex.Unlock();
} catch(std::exception& ex) {
@ -1983,12 +1984,12 @@ bool SharedDatabase::LoadLoot(const std::string &prefix) {
try {
EQEmu::IPCMutex mutex("loot");
mutex.Lock();
std::string file_name_lt = std::string("shared/") + prefix + std::string("loot_table");
std::string file_name_lt = Config->SharedMemDir + prefix + std::string("loot_table");
loot_table_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name_lt));
loot_table_hash = std::unique_ptr<EQEmu::FixedMemoryVariableHashSet<LootTable_Struct>>(new EQEmu::FixedMemoryVariableHashSet<LootTable_Struct>(
reinterpret_cast<uint8*>(loot_table_mmf->Get()),
loot_table_mmf->Size()));
std::string file_name_ld = std::string("shared/") + prefix + std::string("loot_drop");
std::string file_name_ld = Config->SharedMemDir + prefix + std::string("loot_drop");
loot_drop_mmf = std::unique_ptr<EQEmu::MemoryMappedFile>(new EQEmu::MemoryMappedFile(file_name_ld));
loot_drop_hash = std::unique_ptr<EQEmu::FixedMemoryVariableHashSet<LootDrop_Struct>>(new EQEmu::FixedMemoryVariableHashSet<LootDrop_Struct>(
reinterpret_cast<uint8*>(loot_drop_mmf->Get()),

View File

@ -32,6 +32,7 @@
#include <time.h>
EQEmuLogSys Log;
const EQEmuConfig *Config;
bool RunLoops = false;
@ -56,7 +57,7 @@ int main(int argc, char *argv[]) {
Log.Out(Logs::Detail, Logs::Launcher, "Loading server configuration failed.");
return 1;
}
const EQEmuConfig *Config = EQEmuConfig::get();
Config = EQEmuConfig::get();
/*
* Setup nice signal handlers

View File

@ -33,7 +33,7 @@ void LoadBaseData(SharedDatabase *database, const std::string &prefix) {
uint32 size = records * 16 * sizeof(BaseDataStruct);
std::string file_name = std::string("shared/") + prefix + std::string("base_data");
std::string file_name = Config->SharedMemDir + prefix + std::string("base_data");
EQEmu::MemoryMappedFile mmf(file_name, size);
mmf.ZeroFile();

View File

@ -20,6 +20,10 @@
#define __EQEMU_SHARED_MEMORY_BASE_DATA_H
#include <string>
#include "../common/eqemu_config.h"
extern const EQEmuConfig *Config;
class SharedDatabase;
void LoadBaseData(SharedDatabase *database, const std::string &prefix);

View File

@ -37,7 +37,7 @@ void LoadItems(SharedDatabase *database, const std::string &prefix) {
uint32 size = static_cast<uint32>(EQEmu::FixedMemoryHashSet<Item_Struct>::estimated_size(items, max_item));
std::string file_name = std::string("shared/") + prefix + std::string("items");
std::string file_name = Config->SharedMemDir + prefix + std::string("items");
EQEmu::MemoryMappedFile mmf(file_name, size);
mmf.ZeroFile();

View File

@ -20,6 +20,9 @@
#define __EQEMU_SHARED_MEMORY_ITEMS_H
#include <string>
#include "../common/eqemu_config.h"
extern const EQEmuConfig *Config;
class SharedDatabase;
void LoadItems(SharedDatabase *database, const std::string &prefix);

View File

@ -44,8 +44,8 @@ void LoadLoot(SharedDatabase *database, const std::string &prefix) {
(loot_drop_count * sizeof(LootDrop_Struct)) + //loot table headers
(loot_drop_entries_count * sizeof(LootDropEntries_Struct)); //number of loot table entries
std::string file_name_lt = std::string("shared/") + prefix + std::string("loot_table");
std::string file_name_ld = std::string("shared/") + prefix + std::string("loot_drop");
std::string file_name_lt = Config->SharedMemDir + prefix + std::string("loot_table");
std::string file_name_ld = Config->SharedMemDir + prefix + std::string("loot_drop");
EQEmu::MemoryMappedFile mmf_loot_table(file_name_lt, loot_table_size);
EQEmu::MemoryMappedFile mmf_loot_drop(file_name_ld, loot_drop_size);

View File

@ -20,6 +20,9 @@
#define __EQEMU_SHARED_MEMORY_LOOT_H
#include <string>
#include "../common/eqemu_config.h"
extern const EQEmuConfig *Config;
class SharedDatabase;
void LoadLoot(SharedDatabase *database, const std::string &prefix);

View File

@ -35,7 +35,7 @@
#include "base_data.h"
EQEmuLogSys Log;
const EQEmuConfig *Config;
int main(int argc, char **argv) {
RegisterExecutablePlatform(ExePlatformSharedMemory);
Log.LoadLogSettingsDefaults();
@ -47,12 +47,12 @@ int main(int argc, char **argv) {
return 1;
}
const EQEmuConfig *config = EQEmuConfig::get();
Config = EQEmuConfig::get();
SharedDatabase 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)) {
if(!database.Connect(Config->DatabaseHost.c_str(), Config->DatabaseUsername.c_str(),
Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) {
Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;

View File

@ -34,7 +34,7 @@ void LoadFactions(SharedDatabase *database, const std::string &prefix) {
uint32 size = static_cast<uint32>(EQEmu::FixedMemoryHashSet<NPCFactionList>::estimated_size(lists, max_list));
std::string file_name = std::string("shared/") + prefix + std::string("faction");
std::string file_name = Config->SharedMemDir + prefix + std::string("faction");
EQEmu::MemoryMappedFile mmf(file_name, size);
mmf.ZeroFile();

View File

@ -20,6 +20,9 @@
#define __EQEMU_SHARED_MEMORY_NPC_FACTION_H
#include <string>
#include "../common/eqemu_config.h"
extern const EQEmuConfig *Config;
class SharedDatabase;
void LoadFactions(SharedDatabase *database, const std::string &prefix);

View File

@ -34,7 +34,7 @@ void LoadSkillCaps(SharedDatabase *database, const std::string &prefix) {
uint32 level_count = HARD_LEVEL_CAP + 1;
uint32 size = (class_count * skill_count * level_count * sizeof(uint16));
std::string file_name = std::string("shared/") + prefix + std::string("skill_caps");
std::string file_name = Config->SharedMemDir + prefix + std::string("skill_caps");
EQEmu::MemoryMappedFile mmf(file_name, size);
mmf.ZeroFile();

View File

@ -20,6 +20,9 @@
#define __EQEMU_SHARED_MEMORY_SKILL_CAPS_H
#include <string>
#include "../common/eqemu_config.h"
extern const EQEmuConfig *Config;
class SharedDatabase;
void LoadSkillCaps(SharedDatabase *database, const std::string &prefix);

View File

@ -34,7 +34,7 @@ void LoadSpells(SharedDatabase *database, const std::string &prefix) {
uint32 size = records * sizeof(SPDat_Spell_Struct) + sizeof(uint32);
std::string file_name = std::string("shared/") + prefix + std::string("spells");
std::string file_name = Config->SharedMemDir + prefix + std::string("spells");
EQEmu::MemoryMappedFile mmf(file_name, size);
mmf.ZeroFile();

View File

@ -20,6 +20,9 @@
#define __EQEMU_SHARED_MEMORY_SPELLS_H
#include <string>
#include "../common/eqemu_config.h"
extern const EQEmuConfig *Config;
class SharedDatabase;
void LoadSpells(SharedDatabase *database, const std::string &prefix);

View File

@ -68,7 +68,7 @@
<!-- Launcher Configuration -->
<launcher>
<!-- <logprefix>logs/zone-</logprefix> -->
<!-- <logprefix>zone-</logprefix> -->
<!-- <logsuffix>.log</logsuffix> -->
<!-- <exe>zone.exe or ./zone</exe> -->
<!-- <timers restart="10000" reterminate="10000"> -->
@ -80,11 +80,15 @@
<!-- <opcodes>opcodes.conf</opcodes> -->
<!-- <logsettings>log.ini</logsettings> -->
<!-- <eqtime>eqtime.cfg</eqtime> -->
<!-- <plugin.pl>plugin.pl</plugin.pl> -->
</files>
<!-- Directory locations. Defaults shown -->
<directories>
<!-- <maps>Maps</maps> -->
<!-- <quests>quests</quests> -->
<!-- <plugins>plugins</plugins> -->
<!-- <maps>Maps/</maps> -->
<!-- <quests>quests/</quests> -->
<!-- <plugins>plugins/</plugins> -->
<!-- <lua_modules>lua_modules/</lua_modules> -->
<!-- <patches>./</patches> -->
<!-- <shared_memory>shared/</shared_memory> -->
</directories>
</server>

View File

@ -104,7 +104,7 @@ volatile bool RunLoops = true;
uint32 numclients = 0;
uint32 numzones = 0;
bool holdzones = false;
const WorldConfig *Config;
EQEmuLogSys Log;
extern ConsoleList console_list;
@ -135,7 +135,7 @@ int main(int argc, char** argv) {
Log.Out(Logs::General, Logs::World_Server, "Loading server configuration failed.");
return 1;
}
const WorldConfig *Config=WorldConfig::get();
Config=WorldConfig::get();
Log.Out(Logs::General, Logs::World_Server, "CURRENT_VERSION: %s", CURRENT_VERSION);

View File

@ -173,25 +173,27 @@ void Embperl::DoInit() {
Log.Out(Logs::General, Logs::Quests, "Loading perlemb plugins.");
try
{
eval_pv("main::eval_file('plugin', 'plugin.pl');", FALSE);
std::string perl_command;
perl_command = "main::eval_file('plugin', '" + Config->PluginPlFile + "');";
eval_pv(perl_command.c_str(), FALSE);
}
catch(const char *err)
{
Log.Out(Logs::General, Logs::Quests, "Warning - plugin.pl: %s", err);
Log.Out(Logs::General, Logs::Quests, "Warning - %s: %s", Config->PluginPlFile.c_str(), err);
}
try
{
//should probably read the directory in c, instead, so that
//I can echo filenames as I do it, but c'mon... I'm lazy and this 1 line reads in all the plugins
eval_pv(
"if(opendir(D,'plugins')) { "
std::string perl_command =
"if(opendir(D,'" + Config->PluginDir +"')) { "
" my @d = readdir(D);"
" closedir(D);"
" foreach(@d){ "
" main::eval_file('plugin','plugins/'.$_)if/\\.pl$/;"
" main::eval_file('plugin','" + Config->PluginDir + "/'.$_)if/\\.pl$/;"
" }"
"}"
,FALSE);
"}";
eval_pv(perl_command.c_str(),FALSE);
}
catch(const char *err)
{

View File

@ -10,6 +10,8 @@ Eglin
#ifdef EMBPERL
#include "zone_config.h"
#include <string>
#include <vector>
#include <map>
@ -57,6 +59,7 @@ extern "C" { //the perl headers dont do this for us...
EXTERN_C void boot_DynaLoader(pTHX_ CV* cv);
EXTERN_C void xs_init(pTHX);
extern const ZoneConfig *Config;
class Embperl
{
private:

View File

@ -33,6 +33,7 @@
#include "lua_general.h"
#include "questmgr.h"
#include "zone.h"
#include "zone_config.h"
#include "lua_parser.h"
#include "lua_encounter.h"
@ -851,7 +852,7 @@ void LuaParser::ReloadQuests() {
lua_getglobal(L, "package");
lua_getfield(L, -1, "path");
std::string module_path = lua_tostring(L,-1);
module_path += ";./lua_modules/?.lua";
module_path += ";./" + Config->LuaModuleDir + "/?.lua";
lua_pop(L, 1);
lua_pushstring(L, module_path.c_str());
lua_setfield(L, -2, "path");
@ -860,7 +861,8 @@ void LuaParser::ReloadQuests() {
MapFunctions(L);
//load init
std::string path = "quests/";
std::string path = Config->QuestDir;
path += "/";
path += QUEST_GLOBAL_DIRECTORY;
path += "/script_init.lua";
@ -876,7 +878,8 @@ void LuaParser::ReloadQuests() {
//zone init - always loads after global
if(zone) {
std::string zone_script = "quests/";
std::string zone_script = Config->QuestDir;
zone_script += "/";
zone_script += zone->GetShortName();
zone_script += "/script_init_v";
zone_script += std::to_string(zone->GetInstanceVersion());
@ -893,7 +896,8 @@ void LuaParser::ReloadQuests() {
return;
}
zone_script = "quests/";
zone_script = Config->QuestDir;
zone_script += "/";
zone_script += zone->GetShortName();
zone_script += "/script_init.lua";
f = fopen(zone_script.c_str(), "r");

View File

@ -8,6 +8,10 @@
#include <list>
#include <map>
#include "zone_config.h"
extern const ZoneConfig *Config;
struct lua_State;
class ItemInst;
class Client;

View File

@ -227,7 +227,7 @@ bool Map::CheckLoS(glm::vec3 myloc, glm::vec3 oloc) const {
}
Map *Map::LoadMapFile(std::string file) {
std::string filename = MAP_DIR;
std::string filename = Config->MapDir;
filename += "/";
std::transform(file.begin(), file.end(), file.begin(), ::tolower);
filename += file;

View File

@ -25,8 +25,12 @@
#include "position.h"
#include <stdio.h>
#include "zone_config.h"
#define BEST_Z_INVALID -99999
extern const ZoneConfig *Config;
class Map
{
public:

View File

@ -104,9 +104,9 @@ QueryServ *QServ = 0;
TaskManager *taskmanager = 0;
QuestParserCollection *parse = 0;
EQEmuLogSys Log;
const SPDat_Spell_Struct* spells;
int32 SPDAT_RECORDS = -1;
const ZoneConfig *Config;
void Shutdown();
extern void MapOpcodes();
@ -123,7 +123,7 @@ int main(int argc, char** argv) {
Log.Out(Logs::General, Logs::Error, "Loading server configuration failed.");
return 1;
}
const ZoneConfig *Config = ZoneConfig::get();
Config = ZoneConfig::get();
const char *zone_name;
uint32 instance_id = 0;
@ -195,7 +195,7 @@ int main(int argc, char** argv) {
}
worldserver.SetPassword(Config->SharedKey.c_str());
Log.Out(Logs::General, Logs::Zone_Server, "Connecting to MySQL...");
if (!database.Connect(
Config->DatabaseHost.c_str(),

View File

@ -52,7 +52,7 @@ PathManager* PathManager::LoadPathFile(const char* ZoneName)
strlwr(LowerCaseZoneName);
snprintf(ZonePathFileName, 250, MAP_DIR "/%s.path", LowerCaseZoneName);
snprintf(ZonePathFileName, 250, "%s/%s.path", Config->MapDir.c_str(),LowerCaseZoneName);
if((PathFile = fopen(ZonePathFileName, "rb")))
{

View File

@ -2,9 +2,11 @@
#define PATHING_H
#include "map.h"
#include "zone_config.h"
#include <deque>
extern const ZoneConfig *Config;
class Client;
class Mob;

View File

@ -24,6 +24,7 @@
#include "quest_interface.h"
#include "zone.h"
#include "questmgr.h"
#include "zone_config.h"
#include <stdio.h>
@ -459,7 +460,7 @@ int QuestParserCollection::EventEncounter(QuestEventID evt, std::string encounte
QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string &filename) {
//first look for /quests/zone/npcid.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/";
filename += itoa(npcid);
@ -502,7 +503,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
}
}
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/";
filename += npc_name;
@ -524,7 +525,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
}
//third look for /quests/global/npcid.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/";
filename += itoa(npcid);
@ -545,7 +546,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
}
//fourth look for /quests/global/npcname.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/";
filename += npc_name;
@ -566,7 +567,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
}
//fifth look for /quests/zone/default.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/";
filename += "default";
@ -587,7 +588,7 @@ QuestInterface *QuestParserCollection::GetQIByNPCQuest(uint32 npcid, std::string
}
//last look for /quests/global/default.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/";
filename += "default";
@ -615,7 +616,7 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
return nullptr;
//first look for /quests/zone/player_v[instance_version].ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/";
filename += "player_v";
@ -640,7 +641,7 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
}
//second look for /quests/zone/player.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/";
filename += "player";
@ -662,7 +663,7 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
}
//third look for /quests/global/player.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/";
filename += "player";
@ -687,7 +688,7 @@ QuestInterface *QuestParserCollection::GetQIByPlayerQuest(std::string &filename)
QuestInterface *QuestParserCollection::GetQIByGlobalNPCQuest(std::string &filename) {
// simply look for /quests/global/global_npc.ext
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/";
filename += "global_npc";
@ -715,7 +716,7 @@ QuestInterface *QuestParserCollection::GetQIByGlobalNPCQuest(std::string &filena
QuestInterface *QuestParserCollection::GetQIByGlobalPlayerQuest(std::string &filename) {
//first look for /quests/global/player.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/";
filename += "global_player";
@ -743,7 +744,7 @@ QuestInterface *QuestParserCollection::GetQIByGlobalPlayerQuest(std::string &fil
QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::string &filename) {
//first look for /quests/zone/spells/spell_id.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/spells/";
filename += itoa(spell_id);
@ -767,7 +768,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
}
//second look for /quests/global/spells/spell_id.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/spells/";
filename += itoa(spell_id);
@ -789,7 +790,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
}
//third look for /quests/zone/spells/default.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/spells/default";
@ -810,7 +811,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
}
//last look for /quests/global/spells/default.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/spells/default";
@ -835,7 +836,7 @@ QuestInterface *QuestParserCollection::GetQIBySpellQuest(uint32 spell_id, std::s
QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script, std::string &filename) {
//first look for /quests/zone/items/item_script.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/items/";
filename += item_script;
@ -859,7 +860,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
}
//second look for /quests/global/items/item_script.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/items/";
filename += item_script;
@ -881,7 +882,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
}
//third look for /quests/zone/items/default.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/items/default";
@ -902,7 +903,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
}
//last look for /quests/global/items/default.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/items/default";
@ -927,7 +928,7 @@ QuestInterface *QuestParserCollection::GetQIByItemQuest(std::string item_script,
QuestInterface *QuestParserCollection::GetQIByEncounterQuest(std::string encounter_name, std::string &filename) {
//first look for /quests/zone/encounters/encounter_name.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += zone->GetShortName();
filename += "/encounters/";
filename += encounter_name;
@ -951,7 +952,7 @@ QuestInterface *QuestParserCollection::GetQIByEncounterQuest(std::string encount
}
//second look for /quests/global/encounters/encounter_name.ext (precedence)
filename = "quests/";
filename = Config->QuestDir;
filename += QUEST_GLOBAL_DIRECTORY;
filename += "/encounters/";
filename += encounter_name;
@ -1077,4 +1078,4 @@ void QuestParserCollection::LoadPerlEventExportSettings(PerlEventExportSettings*
perl_event_export_settings[event_id].event_variables = atoi(row[6]);
}
}
}

View File

@ -34,12 +34,15 @@
#include "quest_interface.h"
#include "zone_config.h"
#include <list>
#include <map>
#define QuestFailedToLoad 0xFFFFFFFF
#define QuestUnloaded 0x00
extern const ZoneConfig *Config;
class Client;
class ItemInst;
class Mob;

View File

@ -12,7 +12,7 @@
WaterMap* WaterMap::LoadWaterMapfile(std::string zone_name) {
std::transform(zone_name.begin(), zone_name.end(), zone_name.begin(), ::tolower);
std::string file_path = MAP_DIR + std::string("/") + zone_name + std::string(".wtr");
std::string file_path = Config->MapDir + zone_name + std::string(".wtr");
FILE *f = fopen(file_path.c_str(), "rb");
if(f) {
char magic[10];
@ -57,4 +57,4 @@ WaterMap* WaterMap::LoadWaterMapfile(std::string zone_name) {
}
return nullptr;
}
}

View File

@ -3,8 +3,10 @@
#include "../common/types.h"
#include "position.h"
#include "zone_config.h"
#include <string>
extern const ZoneConfig *Config;
enum WaterRegionType {
RegionTypeUnsupported = -2,