mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 09:31:30 +00:00
* Plumbing * Batch processing in world * Cleanup * Cleanup * Update player_event_logs.cpp * Add player zoning event * Use generics * Comments * Add events * Add more events * AA_GAIN, AA_PURCHASE, FORAGE_SUCCESS, FORAGE_FAILURE * FISH_SUCCESS, FISH_FAILURE, ITEM_DESTROY * Add charges to ITEM_DESTROY * WENT_ONLINE, WENT_OFFLINE * LEVEL_GAIN, LEVEL_LOSS * LOOT_ITEM * MERCHANT_PURCHASE * MERCHANT_SELL * SKILL_UP * Add events * Add more events * TASK_ACCEPT, TASK_COMPLETE, and TASK_UPDATE * GROUNDSPAWN_PICKUP * SAY * REZ_ACCEPTED * COMBINE_FAILURE and COMBINE_SUCCESS * DROPPED_ITEM * DEATH * SPLIT_MONEY * TRADER_PURCHASE and TRADER_SELL * DISCOVER_ITEM * Convert GM_COMMAND to use new macro * Convert ZONING event to use macro * Revert some code changes * Revert "Revert some code changes" This reverts commit d53682f997e89a053a660761085913245db91e9d. * Add cereal generation support to repositories * TRADE * Formatting * Cleanup * Relocate discord_manager to discord folder * Discord sending plumbing * Rename UCS's Database class to UCSDatabase to be more specific and not collide with base Database class for repository usage * More discord sending plumbing * More discord message formatting work * More discord formatting work * Discord formatting of events * Format WENT_ONLINE, WENT_OFFLINE * Add merchant purchase event * Handle Discord MERCHANT_SELL formatter * Update player_event_discord_formatter.cpp * Tweaks * Implement retention truncation * Put mutex locking on batch queue, put processor on its own thread * Process on initial bootup * Implement optional QS processing, implement keepalive from world to QS * Reload player event settings when logs are reloaded in game * Set settings defaults * Update player_event_logs.cpp * Update player_event_logs.cpp * Set retention days on boot * Update player_event_logs.cpp * Player Handin Event Testing. Testing player handin stuff. * Cleanup. * Finish NPC Handin. * set a reference to the client inside of the trade object as well for plugins to process * Fix for windows _inline * Bump to cpp20 default, ignore excessive warnings on windows * Bump FMT to 6.1.2 for cpp20 compat and swap fmt::join for Strings::Join * Windows compile fixes * Update CMakeLists.txt * Update CMakeLists.txt * Update CMakeLists.txt * Create 2022_12_19_player_events_tables.sql * [Formatters] Work on Discord Formatters * Handin money. * Format header * [Formatters] Work on Discord Formatters * Format * Format * [Formatters] More Formatter work, need to test further. * [Formatters] More Work on Formatters. * Add missing #endif * [Formatters] Work on Formatters, fix Bot formatting in ^create help * NPC Handin Discord Formatter * Update player_event_logs.cpp * Discover Item Discord Formatter * Dropped Item Discord Formatter * Split Money Discord Formatter * Trader Discord Formatters * Cleanup. * Trade Event Discord Formatter Groundwork * SAY don't record GM commands * GM_Command don't record #help * Update player_event_logs.cpp * Fill in more event data * Post rebase fixes * Post rebase fix * Discord formatting adjustments * Add event deprecation or unimplemented tag support * Trade events * Add return money and sanity checks. * Update schema * Update ucs.cpp * Update client.cpp * Update 2022_12_19_player_events_tables.sql * Implement archive single line * Replace hackers table and functions with PossibleHack player event * Replace very old eventlog table since the same events are covered by player event logs * Update bot_command.cpp * Record NPC kill events ALL / Named / Raid * Add BatchEventProcessIntervalSeconds rule * Naming * Update CMakeLists.txt * Update database_schema.h * Remove logging function and methods * DB version * Cleanup SendPlayerHandinEvent --------- Co-authored-by: Kinglykrab <kinglykrab@gmail.com> Co-authored-by: Aeadoin <109764533+Aeadoin@users.noreply.github.com>
439 lines
10 KiB
C++
439 lines
10 KiB
C++
/**
|
|
* EQEmulator: Everquest Server Emulator
|
|
* Copyright (C) 2001-2019 EQEmulator Development Team (https://github.com/EQEmu/Server)
|
|
*
|
|
* 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_DATABASE_SCHEMA_H
|
|
#define EQEMU_DATABASE_SCHEMA_H
|
|
|
|
#include <vector>
|
|
#include <map>
|
|
|
|
namespace DatabaseSchema {
|
|
|
|
/**
|
|
* Character-specific tables
|
|
*
|
|
* Does not included related meta-data tables such as 'guilds', 'accounts'
|
|
* @return
|
|
*/
|
|
static std::map<std::string, std::string> GetCharacterTables()
|
|
{
|
|
return {
|
|
{"adventure_stats", "player_id"},
|
|
{"buyer", "charid"},
|
|
{"char_recipe_list", "char_id"},
|
|
{"character_activities", "charid"},
|
|
{"character_alt_currency", "char_id"},
|
|
{"character_alternate_abilities", "id"},
|
|
{"character_auras", "id"},
|
|
{"character_bandolier", "id"},
|
|
{"character_bind", "id"},
|
|
{"character_buffs", "character_id"},
|
|
{"character_corpses", "id"},
|
|
{"character_currency", "id"},
|
|
{"character_data", "id"},
|
|
{"character_disciplines", "id"},
|
|
{"character_enabledtasks", "charid"},
|
|
{"character_expedition_lockouts", "character_id"},
|
|
{"character_exp_modifiers", "character_id"},
|
|
{"character_inspect_messages", "id"},
|
|
{"character_instance_safereturns", "character_id"},
|
|
{"character_item_recast", "id"},
|
|
{"character_languages", "id"},
|
|
{"character_leadership_abilities", "id"},
|
|
{"character_material", "id"},
|
|
{"character_memmed_spells", "id"},
|
|
{"character_pet_buffs", "char_id"},
|
|
{"character_pet_info", "char_id"},
|
|
{"character_pet_inventory", "char_id"},
|
|
{"character_peqzone_flags", "id"},
|
|
{"character_potionbelt", "id"},
|
|
{"character_skills", "id"},
|
|
{"character_spells", "id"},
|
|
{"character_task_timers", "character_id"},
|
|
{"character_tasks", "charid"},
|
|
{"character_tribute", "id"},
|
|
{"completed_tasks", "charid"},
|
|
{"data_buckets", "id"},
|
|
{"faction_values", "char_id"},
|
|
{"friends", "charid"},
|
|
{"guild_members", "char_id"},
|
|
{"guilds", "id"},
|
|
{"instance_list_player", "id"},
|
|
{"inventory", "charid"},
|
|
{"inventory_snapshots", "charid"},
|
|
{"keyring", "char_id"},
|
|
{"mail", "charid"},
|
|
{"player_titlesets", "char_id"},
|
|
{"quest_globals", "charid"},
|
|
{"timers", "char_id"},
|
|
{"trader", "char_id"},
|
|
{"zone_flags", "charID"}
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @description Gets all player and meta-data tables
|
|
* @note These tables have no content in the PEQ daily dump
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetPlayerTables()
|
|
{
|
|
return {
|
|
"account",
|
|
"account_ip",
|
|
"account_flags",
|
|
"account_rewards",
|
|
"adventure_details",
|
|
"adventure_stats",
|
|
"buyer",
|
|
"char_recipe_list",
|
|
"character_activities",
|
|
"character_alt_currency",
|
|
"character_alternate_abilities",
|
|
"character_auras",
|
|
"character_bandolier",
|
|
"character_bind",
|
|
"character_buffs",
|
|
"character_corpse_items",
|
|
"character_corpses",
|
|
"character_currency",
|
|
"character_data",
|
|
"character_disciplines",
|
|
"character_enabledtasks",
|
|
"character_expedition_lockouts",
|
|
"character_exp_modifiers",
|
|
"character_inspect_messages",
|
|
"character_instance_safereturns",
|
|
"character_item_recast",
|
|
"character_languages",
|
|
"character_leadership_abilities",
|
|
"character_material",
|
|
"character_memmed_spells",
|
|
"character_pet_buffs",
|
|
"character_pet_info",
|
|
"character_pet_inventory",
|
|
"character_peqzone_flags",
|
|
"character_potionbelt",
|
|
"character_skills",
|
|
"character_spells",
|
|
"character_task_timers",
|
|
"character_tasks",
|
|
"character_tribute",
|
|
"completed_tasks",
|
|
"data_buckets",
|
|
"discovered_items",
|
|
"faction_values",
|
|
"friends",
|
|
"guild_bank",
|
|
"guild_members",
|
|
"guild_ranks",
|
|
"guild_relations",
|
|
"guilds",
|
|
"instance_list_player",
|
|
"inventory",
|
|
"inventory_snapshots",
|
|
"keyring",
|
|
"mail",
|
|
"petitions",
|
|
"player_titlesets",
|
|
"quest_globals",
|
|
"sharedbank",
|
|
"spell_buckets",
|
|
"spell_globals",
|
|
"timers",
|
|
"trader",
|
|
"trader_audit",
|
|
"zone_flags"
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Gets content tables
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetContentTables()
|
|
{
|
|
return {
|
|
"aa_ability",
|
|
"aa_rank_effects",
|
|
"aa_rank_prereqs",
|
|
"aa_ranks",
|
|
"adventure_template",
|
|
"adventure_template_entry",
|
|
"adventure_template_entry_flavor",
|
|
"alternate_currency",
|
|
"auras",
|
|
"base_data",
|
|
"blocked_spells",
|
|
"books",
|
|
"char_create_combinations",
|
|
"char_create_point_allocations",
|
|
"damageshieldtypes",
|
|
"doors",
|
|
"dynamic_zone_templates",
|
|
"faction_association",
|
|
"faction_base_data",
|
|
"faction_list",
|
|
"faction_list_mod",
|
|
"fishing",
|
|
"forage",
|
|
"global_loot",
|
|
"graveyard",
|
|
"grid",
|
|
"grid_entries",
|
|
"ground_spawns",
|
|
"horses",
|
|
"items",
|
|
"ldon_trap_entries",
|
|
"ldon_trap_templates",
|
|
"lootdrop",
|
|
"lootdrop_entries",
|
|
"loottable",
|
|
"loottable_entries",
|
|
"merchantlist",
|
|
"npc_emotes",
|
|
"npc_faction",
|
|
"npc_faction_entries",
|
|
"npc_scale_global_base",
|
|
"npc_spells",
|
|
"npc_spells_effects",
|
|
"npc_spells_effects_entries",
|
|
"npc_spells_entries",
|
|
"npc_types",
|
|
"npc_types_tint",
|
|
"object",
|
|
"pets",
|
|
"pets_beastlord_data",
|
|
"pets_equipmentset",
|
|
"pets_equipmentset_entries",
|
|
"skill_caps",
|
|
"spawn2",
|
|
"spawn_conditions",
|
|
"spawnentry",
|
|
"spawngroup",
|
|
"spells_new",
|
|
"start_zones",
|
|
"starting_items",
|
|
"task_activities",
|
|
"tasks",
|
|
"tasksets",
|
|
"tradeskill_recipe",
|
|
"tradeskill_recipe_entries",
|
|
"traps",
|
|
"tribute_levels",
|
|
"tributes",
|
|
"veteran_reward_templates",
|
|
"zone",
|
|
"zone_points",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Gets server tables
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetServerTables()
|
|
{
|
|
return {
|
|
"chatchannels",
|
|
"command_settings",
|
|
"content_flags",
|
|
"db_str",
|
|
"eqtime",
|
|
"launcher",
|
|
"launcher_zones",
|
|
"spawn_condition_values",
|
|
"spawn_events",
|
|
"level_exp_mods",
|
|
"logsys_categories",
|
|
"name_filter",
|
|
"perl_event_export_settings",
|
|
"profanity_list",
|
|
"rule_sets",
|
|
"titles",
|
|
"rule_values",
|
|
"variables",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Gets QueryServer tables
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetQueryServerTables()
|
|
{
|
|
return {
|
|
"qs_merchant_transaction_record",
|
|
"qs_merchant_transaction_record_entries",
|
|
"qs_player_aa_rate_hourly",
|
|
"qs_player_delete_record",
|
|
"qs_player_delete_record_entries",
|
|
"qs_player_events",
|
|
"qs_player_handin_record",
|
|
"qs_player_handin_record_entries",
|
|
"qs_player_move_record",
|
|
"qs_player_move_record_entries",
|
|
"qs_player_npc_kill_record",
|
|
"qs_player_npc_kill_record_entries",
|
|
"qs_player_speech",
|
|
"qs_player_trade_record",
|
|
"qs_player_trade_record_entries",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Gets state tables
|
|
* Tables that keep track of server state
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetStateTables()
|
|
{
|
|
return {
|
|
"adventure_members",
|
|
"banned_ips",
|
|
"bug_reports",
|
|
"bugs",
|
|
"completed_shared_task_activity_state",
|
|
"completed_shared_task_members",
|
|
"completed_shared_tasks",
|
|
"discord_webhooks",
|
|
"dynamic_zone_members",
|
|
"dynamic_zones",
|
|
"expedition_lockouts",
|
|
"expeditions",
|
|
"gm_ips",
|
|
"group_id",
|
|
"group_leaders",
|
|
"instance_list",
|
|
"ip_exemptions",
|
|
"item_tick",
|
|
"lfguild",
|
|
"merc_buffs",
|
|
"merchantlist_temp",
|
|
"mercs",
|
|
"object_contents",
|
|
"raid_details",
|
|
"raid_leaders",
|
|
"raid_members",
|
|
"reports",
|
|
"respawn_times",
|
|
"saylink",
|
|
"server_scheduled_events",
|
|
"player_event_log_settings",
|
|
"player_event_logs"
|
|
"shared_task_activity_state",
|
|
"shared_task_dynamic_zones",
|
|
"shared_task_members",
|
|
"shared_tasks",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Gets login tables
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetLoginTables()
|
|
{
|
|
return {
|
|
"login_accounts",
|
|
"login_api_tokens",
|
|
"login_server_admins",
|
|
"login_server_list_types",
|
|
"login_world_servers",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Gets login tables
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetVersionTables()
|
|
{
|
|
return {
|
|
"db_version",
|
|
"inventory_versions",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @description Gets all player bot tables
|
|
* @note These tables have no content in the PEQ daily dump
|
|
*
|
|
* @return
|
|
*/
|
|
static std::vector<std::string> GetBotTables()
|
|
{
|
|
return {
|
|
"bot_buffs",
|
|
"bot_command_settings",
|
|
"bot_create_combinations",
|
|
"bot_data",
|
|
"bot_group_members",
|
|
"bot_groups",
|
|
"bot_guild_members",
|
|
"bot_heal_rotation_members",
|
|
"bot_heal_rotation_targets",
|
|
"bot_heal_rotations",
|
|
"bot_inspect_messages",
|
|
"bot_inventories",
|
|
"bot_owner_options",
|
|
"bot_pet_buffs",
|
|
"bot_pet_inventories",
|
|
"bot_pets",
|
|
"bot_spell_casting_chances",
|
|
"bot_spell_settings",
|
|
"bot_spells_entries",
|
|
"bot_stances",
|
|
"bot_timers"
|
|
};
|
|
}
|
|
|
|
static std::vector<std::string> GetMercTables()
|
|
{
|
|
return {
|
|
"merc_armorinfo",
|
|
"merc_inventory",
|
|
"merc_merchant_entries",
|
|
"merc_merchant_template_entries",
|
|
"merc_merchant_templates",
|
|
"merc_name_types",
|
|
"merc_npc_types",
|
|
"merc_spell_list_entries",
|
|
"merc_spell_lists",
|
|
"merc_stance_entries",
|
|
"merc_stats",
|
|
"merc_subtypes",
|
|
"merc_templates",
|
|
"merc_types",
|
|
"merc_weaponinfo"
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
#endif //EQEMU_DATABASE_SCHEMA_H
|