Compare commits

...

8 Commits

Author SHA1 Message Date
Alex
f698bf682f
Merge 04d947a40ec51bc952e83c152316e7fdfa88a8e1 into 9b3f9f356db1ed29ca8a098cad3682d041b0c5fd 2025-12-08 05:17:24 +00:00
KimLS
04d947a40e Newer versions of libmariadb default to tls forced on, return to the default of not forcing that.
auto_login were breaking on linux builds
loginserver wasn't setting proper openssl compile flag
2025-12-07 21:17:13 -08:00
KimLS
1db4882cda Fix client files, loginserver and tests 2025-12-07 19:40:35 -08:00
KimLS
ccb3cef3d7 fix zone 2025-12-07 19:37:23 -08:00
KimLS
1f37254f1a add fixes for other servers 2025-12-07 18:28:46 -08:00
KimLS
32e04ea74c Fix world, separate out data_buckets. 2025-12-07 17:13:01 -08:00
KimLS
6027c56d9e Going through and cleaning up the build. 2025-12-07 16:35:58 -08:00
dependabot[bot]
9b3f9f356d
Bump golang.org/x/crypto in /utils/scripts/build/should-release (#5032)
Some checks failed
Build / Linux (push) Has been cancelled
Build / Windows (push) Has been cancelled
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.36.0 to 0.45.0.
- [Commits](https://github.com/golang/crypto/compare/v0.36.0...v0.45.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.45.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 19:44:17 +01:00
36 changed files with 626 additions and 277 deletions

View File

@ -37,21 +37,10 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
option(EQEMU_BUILD_PCH "Build with precompiled headers (Windows)" ON)
option(EQEMU_ADD_PROFILER "Link with Google perftools profiler" OFF)
option(USE_MAP_MMFS "Use memory-mapped files for maps" OFF)
# Requires libgoogle-perftools-dev google-perftools packages for linux (debian)
if(EQEMU_ADD_PROFILER)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed,-lprofiler,--as-needed")
endif()
if(USE_MAP_MMFS)
add_definitions(-DUSE_MAP_MMFS)
endif()
if(MSVC)
add_compile_options(/bigobj)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -DNOMINMAX -DCRASH_LOGGING -D_HAS_AUTO_PTR_ETC)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS NOMINMAX CRASH_LOGGING _HAS_AUTO_PTR_ETC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
option(EQEMU_DISABLE_MSVC_WARNINGS "Disable MSVC compile warnings." ON)
@ -59,26 +48,22 @@ if(MSVC)
add_compile_options(/W0 /wd4005 /wd4996 /nologo /Os)
endif()
else()
add_definitions(-DHAS_UNION_SEMUN)
add_compile_definitions(HAS_UNION_SEMUN)
endif()
#FreeBSD support
if(UNIX)
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
add_definitions(-DFREEBSD)
add_definitions(-D_GLIBCXX_USE_C99)
add_compile_definitions(FREEBSD)
add_compile_definitions(_GLIBCXX_USE_C99)
set(FREEBSD TRUE)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_definitions(-DDARWIN)
add_compile_definitions(DARWIN)
set(DARWIN TRUE)
endif()
endif()
add_definitions(-DGLM_FORCE_RADIANS)
add_definitions(-DGLM_FORCE_CTOR_INIT)
add_definitions(-DGLM_ENABLE_EXPERIMENTAL)
find_package(Boost REQUIRED COMPONENTS dynamic_bitset foreach tuple)
find_package(cereal CONFIG REQUIRED)
find_package(fmt CONFIG REQUIRED)
@ -133,75 +118,22 @@ message(STATUS "PERL_LIBRARIES: ${PERL_LIBRARIES}")
message(STATUS "PERL_VERSION: ${PERL_VERSION}")
message(STATUS "**************************************************")
include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/websocketpp")
add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
#options
option(EQEMU_COMMANDS_LOGGING "Enable GM Command logs" ON)
option(EQEMU_BUILD_SERVER "Build the game server." ON)
option(EQEMU_BUILD_LOGIN "Build the login server." ON)
option(EQEMU_BUILD_TESTS "Build utility tests." OFF)
option(EQEMU_BUILD_CLIENT_FILES "Build Client Import/Export Data Programs." ON)
option(EQEMU_PREFER_LUA "Build with normal Lua even if LuaJIT is found." OFF)
#PRNG options
option(EQEMU_ADDITIVE_LFIB_PRNG "Use Additive LFib for PRNG." OFF)
mark_as_advanced(EQEMU_ADDITIVE_LFIB_PRNG)
option(EQEMU_BIASED_INT_DIST "Use biased int dist instead of uniform." OFF)
mark_as_advanced(EQEMU_BIASED_INT_DIST)
set(EQEMU_CUSTOM_PRNG_ENGINE "" CACHE STRING "Custom random engine. (ex. std::default_random_engine)")
mark_as_advanced(EQEMU_CUSTOM_PRNG_ENGINE)
if(CMAKE_COMPILER_IS_GNUCXX)
option(EQEMU_SFMT19937 "Use GCC's extention for SIMD Fast MT19937." OFF)
mark_as_advanced(EQEMU_SFMT19937)
endif()
if(EQEMU_ADDITIVE_LFIB_PRNG)
add_definitions(-DUSE_ADDITIVE_LFIB_PRNG)
if(EQEMU_SFMT19937)
message(STATUS "SFMT19937 and ADDITITVE_LFIB_PRNG both set, SFMT19937 ignored.")
set(EQEMU_SFMT19937 OFF)
endif()
if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "")
message(STATUS "CUSTOM_PRNG_ENGINE and ADDITITVE_LFIB_PRNG both set, CUSTOM_PRNG_ENGINE ignored.")
set(EQEMU_CUSTOM_PRNG_ENGINE "")
endif()
endif()
if(EQEMU_SFMT19937)
add_definitions(-DUSE_SFMT19937)
if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "")
message(STATUS "CUSTOM_PRNG_ENGINE and SFMT19937 both set, CUSTOM_PRNG_ENGINE ignored.")
set(EQEMU_CUSTOM_PRNG_ENGINE "")
endif()
endif()
if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "")
add_definitions(-DUSE_CUSTOM_PRNG_ENGINE=${EQEMU_CUSTOM_PRNG_ENGINE})
endif()
if(EQEMU_BIASED_INT_DIST)
add_definitions(-DBIASED_INT_DIST)
endif()
if(EQEMU_COMMANDS_LOGGING)
add_definitions(-DCOMMANDS_LOGGING)
endif()
if(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.1")
add_compile_definitions(CPPHTTPLIB_OPENSSL_SUPPORT)
endif()
if(PerlLibs_FOUND)
set(PERL_LIBRARY_TYPE " Perl")
set(PERL_LIBRARY_ENABLED ON)
set(PERL_LIBRARY_LIBS ${PERL_LIBRARY})
set(PERL_LIBRARY_INCLUDE ${PERL_INCLUDE_PATH})
option(EQEMU_BUILD_PERL "Build Perl parser." ON)
if(EQEMU_BUILD_PERL)
set(PERL_LIBRARY_TYPE " Perl")
else()
set(PERL_LIBRARY_TYPE " Missing")
endif()
else()
set(PERL_LIBRARY_TYPE "Disabled")
set(PERL_LIBRARY_ENABLED OFF)
endif()
message(STATUS "")
@ -215,55 +147,14 @@ message(STATUS "* Perl: ${PERL_LIBRARY_TYPE} *")
message(STATUS "* zlib: ZLIB *")
message(STATUS "**************************************************")
option(EQEMU_BUILD_LUA "Build Lua parser." ON)
if(EQEMU_BUILD_LUA)
add_definitions(-DLUA_EQEMU)
include_directories(SYSTEM "${LUAJIT_INCLUDE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind")
option(EQEMU_SANITIZE_LUA_LIBS "Sanitize Lua Libraries (Remove OS and IO standard libraries from being able to run)." ON)
if(EQEMU_SANITIZE_LUA_LIBS)
add_definitions(-DSANITIZE_LUA_LIBS)
endif()
endif()
set(SERVER_LIBS common)
if(PERL_LIBRARY_ENABLED)
option(EQEMU_BUILD_PERL "Build Perl parser." ON)
if(EQEMU_BUILD_PERL)
set(SERVER_LIBS ${SERVER_LIBS} ${PERL_LIBRARY_LIBS} perlbind)
INCLUDE_DIRECTORIES(SYSTEM "${PERL_LIBRARY_INCLUDE}" "${CMAKE_CURRENT_SOURCE_DIR}/libs/perlbind/include")
add_definitions(-DEMBPERL)
add_definitions(-DEMBPERL_PLUGIN)
add_definitions(-DPERLBIND_NO_STRICT_SCALAR_TYPES)
endif()
endif()
# silence obnoxious deprecation message
add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
if(WIN32)
set(SERVER_LIBS ${SERVER_LIBS} "ws2_32" "psapi" "iphlpapi" "userenv")
endif()
if(UNIX)
set(SERVER_LIBS ${SERVER_LIBS} ${CMAKE_DL_LIBS} "z" "m" "pthread")
if(NOT DARWIN)
set(SERVER_LIBS ${SERVER_LIBS} "rt")
endif()
# Freebsd provides uuids in the C library
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set(SERVER_LIBS ${SERVER_LIBS} "uuid")
endif()
endif()
set(ZONE_LIBS ${ZONE_LIBS} ${SERVER_LIBS})
if(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS)
if(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS OR EQEMU_BUILD_CLIENT_FILES)
add_subdirectory(common)
add_subdirectory(libs)
else()
message(FATAL_ERROR "No targets were selected to build, we must build at least one target.")
endif()
if(EQEMU_BUILD_SERVER)

View File

@ -11,6 +11,6 @@ add_executable(export_client_files ${export_sources} ${export_headers})
install(TARGETS export_client_files RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
target_link_libraries(export_client_files ${SERVER_LIBS})
target_link_libraries(export_client_files common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -11,6 +11,6 @@ add_executable(import_client_files ${import_sources} ${import_headers})
install(TARGETS import_client_files RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
target_link_libraries(import_client_files ${SERVER_LIBS})
target_link_libraries(import_client_files common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -20,6 +20,7 @@ set(common_sources
database/database_update_manifest_custom.cpp
database/database_update_manifest_bots.cpp
database/database_update.cpp
data_bucket.cpp
dbcore.cpp
deity.cpp
dynamic_zone_base.cpp
@ -554,6 +555,7 @@ set(common_headers
database.h
database_schema.h
database/database_update.h
data_bucket.cpp
dbcore.h
deity.h
discord/discord.h
@ -817,6 +819,407 @@ source_group(Patches FILES
patches/uf_limits.cpp
)
source_group(Repositories FILES
# Criteria
repositories/criteria/content_filter_criteria.h
repositories/base/base_grid_repository.h
repositories/base/base_grid_entries_repository.h
# Base Repositories
repositories/base/base_aa_ability_repository.h
repositories/base/base_aa_ranks_repository.h
repositories/base/base_aa_rank_effects_repository.h
repositories/base/base_aa_rank_prereqs_repository.h
repositories/base/base_account_repository.h
repositories/base/base_account_flags_repository.h
repositories/base/base_account_ip_repository.h
repositories/base/base_account_rewards_repository.h
repositories/base/base_adventure_details_repository.h
repositories/base/base_adventure_members_repository.h
repositories/base/base_adventure_stats_repository.h
repositories/base/base_adventure_template_repository.h
repositories/base/base_adventure_template_entry_repository.h
repositories/base/base_adventure_template_entry_flavor_repository.h
repositories/base/base_alternate_currency_repository.h
repositories/base/base_auras_repository.h
repositories/base/base_base_data_repository.h
repositories/base/base_blocked_spells_repository.h
repositories/base/base_books_repository.h
repositories/base/base_bugs_repository.h
repositories/base/base_bug_reports_repository.h
repositories/base/base_buyer_repository.h
repositories/base/base_buyer_trade_items_repository.h
repositories/base/base_character_activities_repository.h
repositories/base/base_character_alternate_abilities_repository.h
repositories/base/base_character_alt_currency_repository.h
repositories/base/base_character_auras_repository.h
repositories/base/base_character_bandolier_repository.h
repositories/base/base_character_bind_repository.h
repositories/base/base_character_buffs_repository.h
repositories/base/base_character_corpses_repository.h
repositories/base/base_character_corpse_items_repository.h
repositories/base/base_character_currency_repository.h
repositories/base/base_character_data_repository.h
repositories/base/base_character_disciplines_repository.h
repositories/base/base_character_evolving_items_repository.h
repositories/base/base_character_expedition_lockouts_repository.h
repositories/base/base_character_exp_modifiers_repository.h
repositories/base/base_character_inspect_messages_repository.h
repositories/base/base_character_instance_safereturns_repository.h
repositories/base/base_character_item_recast_repository.h
repositories/base/base_character_languages_repository.h
repositories/base/base_character_leadership_abilities_repository.h
repositories/base/base_character_material_repository.h
repositories/base/base_character_memmed_spells_repository.h
repositories/base/base_character_parcels_repository.h
repositories/base/base_character_parcels_containers_repository.h
repositories/base/base_character_peqzone_flags_repository.h
repositories/base/base_character_pet_buffs_repository.h
repositories/base/base_character_pet_info_repository.h
repositories/base/base_character_pet_inventory_repository.h
repositories/base/base_character_potionbelt_repository.h
repositories/base/base_character_skills_repository.h
repositories/base/base_character_spells_repository.h
repositories/base/base_character_tasks_repository.h
repositories/base/base_character_task_timers_repository.h
repositories/base/base_char_create_combinations_repository.h
repositories/base/base_char_create_point_allocations_repository.h
repositories/base/base_char_recipe_list_repository.h
repositories/base/base_chatchannels_repository.h
repositories/base/base_chatchannel_reserved_names_repository.h
repositories/base/base_completed_shared_tasks_repository.h
repositories/base/base_completed_shared_task_activity_state_repository.h
repositories/base/base_completed_shared_task_members_repository.h
repositories/base/base_completed_tasks_repository.h
repositories/base/base_content_flags_repository.h
repositories/base/base_damageshieldtypes_repository.h
repositories/base/base_data_buckets_repository.h
repositories/base/base_db_str_repository.h
repositories/base/base_discord_webhooks_repository.h
repositories/base/base_discovered_items_repository.h
repositories/base/base_doors_repository.h
repositories/base/base_dynamic_zones_repository.h
repositories/base/base_dynamic_zone_lockouts_repository.h
repositories/base/base_dynamic_zone_members_repository.h
repositories/base/base_dynamic_zone_templates_repository.h
repositories/base/base_faction_association_repository.h
repositories/base/base_faction_base_data_repository.h
repositories/base/base_faction_list_repository.h
repositories/base/base_faction_list_mod_repository.h
repositories/base/base_faction_values_repository.h
repositories/base/base_fishing_repository.h
repositories/base/base_forage_repository.h
repositories/base/base_friends_repository.h
repositories/base/base_global_loot_repository.h
repositories/base/base_gm_ips_repository.h
repositories/base/base_graveyard_repository.h
repositories/base/base_ground_spawns_repository.h
repositories/base/base_group_id_repository.h
repositories/base/base_group_leaders_repository.h
repositories/base/base_guilds_repository.h
repositories/base/base_guild_ranks_repository.h
repositories/base/base_guild_permissions_repository.h
repositories/base/base_guild_members_repository.h
repositories/base/base_guild_bank_repository.h
repositories/base/base_guild_relations_repository.h
repositories/base/base_horses_repository.h
repositories/base/base_instance_list_repository.h
repositories/base/base_instance_list_player_repository.h
repositories/base/base_inventory_repository.h
repositories/base/base_inventory_snapshots_repository.h
repositories/base/base_ip_exemptions_repository.h
repositories/base/base_items_repository.h
repositories/base/base_items_evolving_details_repository.h
repositories/base/base_ldon_trap_entries_repository.h
repositories/base/base_ldon_trap_templates_repository.h
repositories/base/base_level_exp_mods_repository.h
repositories/base/base_lfguild_repository.h
repositories/base/base_login_accounts_repository.h
repositories/base/base_login_api_tokens_repository.h
repositories/base/base_login_server_admins_repository.h
repositories/base/base_login_server_list_types_repository.h
repositories/base/base_login_world_servers_repository.h
repositories/base/base_logsys_categories_repository.h
repositories/base/base_lootdrop_repository.h
repositories/base/base_lootdrop_entries_repository.h
repositories/base/base_loottable_repository.h
repositories/base/base_loottable_entries_repository.h
repositories/base/base_mail_repository.h
repositories/base/base_merchantlist_repository.h
repositories/base/base_merchantlist_temp_repository.h
repositories/base/base_name_filter_repository.h
repositories/base/base_npc_emotes_repository.h
repositories/base/base_npc_faction_repository.h
repositories/base/base_npc_faction_entries_repository.h
repositories/base/base_npc_scale_global_base_repository.h
repositories/base/base_npc_spells_repository.h
repositories/base/base_npc_spells_effects_repository.h
repositories/base/base_npc_spells_effects_entries_repository.h
repositories/base/base_npc_spells_entries_repository.h
repositories/base/base_npc_types_repository.h
repositories/base/base_npc_types_tint_repository.h
repositories/base/base_object_repository.h
repositories/base/base_object_contents_repository.h
repositories/base/base_perl_event_export_settings_repository.h
repositories/base/base_petitions_repository.h
repositories/base/base_pets_repository.h
repositories/base/base_pets_beastlord_data_repository.h
repositories/base/base_pets_equipmentset_repository.h
repositories/base/base_pets_equipmentset_entries_repository.h
repositories/base/base_player_titlesets_repository.h
repositories/base/base_player_event_aa_purchase_repository.h
repositories/base/base_player_event_killed_npc_repository.h
repositories/base/base_player_event_killed_named_npc_repository.h
repositories/base/base_player_event_killed_raid_npc_repository.h
repositories/base/base_player_event_log_settings_repository.h
repositories/base/base_player_event_logs_repository.h
repositories/base/base_player_event_loot_items_repository.h
repositories/base/base_player_event_merchant_purchase_repository.h
repositories/base/base_player_event_merchant_sell_repository.h
repositories/base/base_player_event_npc_handin_repository.h
repositories/base/base_player_event_npc_handin_entries_repository.h
repositories/base/base_player_event_speech_repository.h
repositories/base/base_player_event_trade_repository.h
repositories/base/base_player_event_trade_entries_repository.h
repositories/base/base_quest_globals_repository.h
repositories/base/base_raid_details_repository.h
repositories/base/base_raid_members_repository.h
repositories/base/base_reports_repository.h
repositories/base/base_respawn_times_repository.h
repositories/base/base_rule_sets_repository.h
repositories/base/base_rule_values_repository.h
repositories/base/base_saylink_repository.h
repositories/base/base_server_scheduled_events_repository.h
repositories/base/base_shared_tasks_repository.h
repositories/base/base_shared_task_activity_state_repository.h
repositories/base/base_shared_task_dynamic_zones_repository.h
repositories/base/base_shared_task_members_repository.h
repositories/base/base_skill_caps_repository.h
repositories/base/base_spawn2_repository.h
repositories/base/base_spawnentry_repository.h
repositories/base/base_spawngroup_repository.h
repositories/base/base_spawn_conditions_repository.h
repositories/base/base_spawn_condition_values_repository.h
repositories/base/base_spawn_events_repository.h
repositories/base/base_spells_new_repository.h
repositories/base/base_spell_buckets_repository.h
repositories/base/base_spell_globals_repository.h
repositories/base/base_starting_items_repository.h
repositories/base/base_start_zones_repository.h
repositories/base/base_tasks_repository.h
repositories/base/base_tasksets_repository.h
repositories/base/base_task_activities_repository.h
repositories/base/base_timers_repository.h
repositories/base/base_titles_repository.h
repositories/base/base_trader_repository.h
repositories/base/base_tradeskill_recipe_repository.h
repositories/base/base_tradeskill_recipe_entries_repository.h
repositories/base/base_traps_repository.h
repositories/base/base_tributes_repository.h
repositories/base/base_tribute_levels_repository.h
repositories/base/base_veteran_reward_templates_repository.h
repositories/base/base_zone_repository.h
repositories/base/base_zone_points_repository.h
# Extended Repositories
repositories/aa_ability_repository.h
repositories/aa_ranks_repository.h
repositories/aa_rank_effects_repository.h
repositories/aa_rank_prereqs_repository.h
repositories/account_repository.h
repositories/account_flags_repository.h
repositories/account_ip_repository.h
repositories/account_rewards_repository.h
repositories/adventure_details_repository.h
repositories/adventure_members_repository.h
repositories/adventure_stats_repository.h
repositories/adventure_template_repository.h
repositories/adventure_template_entry_repository.h
repositories/adventure_template_entry_flavor_repository.h
repositories/alternate_currency_repository.h
repositories/auras_repository.h
repositories/base_data_repository.h
repositories/blocked_spells_repository.h
repositories/books_repository.h
repositories/bugs_repository.h
repositories/bug_reports_repository.h
repositories/buyer_buy_lines_repository.h
repositories/buyer_trade_items_repository.h
repositories/character_activities_repository.h
repositories/character_alternate_abilities_repository.h
repositories/character_alt_currency_repository.h
repositories/character_auras_repository.h
repositories/character_bandolier_repository.h
repositories/character_bind_repository.h
repositories/character_buffs_repository.h
repositories/character_corpses_repository.h
repositories/character_corpse_items_repository.h
repositories/character_currency_repository.h
repositories/character_data_repository.h
repositories/character_disciplines_repository.h
repositories/character_evolving_items_repository.h
repositories/character_expedition_lockouts_repository.h
repositories/character_exp_modifiers_repository.h
repositories/character_inspect_messages_repository.h
repositories/character_instance_safereturns_repository.h
repositories/character_item_recast_repository.h
repositories/character_languages_repository.h
repositories/character_leadership_abilities_repository.h
repositories/character_material_repository.h
repositories/character_memmed_spells_repository.h
repositories/character_parcels_repository.h
repositories/character_parcels_containers_repository.h
repositories/character_peqzone_flags_repository.h
repositories/character_pet_buffs_repository.h
repositories/character_pet_info_repository.h
repositories/character_pet_inventory_repository.h
repositories/character_potionbelt_repository.h
repositories/character_skills_repository.h
repositories/character_spells_repository.h
repositories/character_tasks_repository.h
repositories/character_task_timers_repository.h
repositories/char_create_combinations_repository.h
repositories/char_create_point_allocations_repository.h
repositories/char_recipe_list_repository.h
repositories/chatchannels_repository.h
repositories/chatchannel_reserved_names_repository.h
repositories/completed_shared_tasks_repository.h
repositories/completed_shared_task_activity_state_repository.h
repositories/completed_shared_task_members_repository.h
repositories/completed_tasks_repository.h
repositories/content_flags_repository.h
repositories/damageshieldtypes_repository.h
repositories/data_buckets_repository.h
repositories/db_str_repository.h
repositories/discord_webhooks_repository.h
repositories/discovered_items_repository.h
repositories/doors_repository.h
repositories/dynamic_zones_repository.h
repositories/dynamic_zone_lockouts_repository.h
repositories/dynamic_zone_members_repository.h
repositories/dynamic_zone_templates_repository.h
repositories/faction_association_repository.h
repositories/faction_base_data_repository.h
repositories/faction_list_repository.h
repositories/faction_list_mod_repository.h
repositories/faction_values_repository.h
repositories/fishing_repository.h
repositories/forage_repository.h
repositories/friends_repository.h
repositories/global_loot_repository.h
repositories/gm_ips_repository.h
repositories/graveyard_repository.h
repositories/ground_spawns_repository.h
repositories/group_id_repository.h
repositories/group_leaders_repository.h
repositories/guilds_repository.h
repositories/guild_ranks_repository.h
repositories/guild_permissions_repository.h
repositories/guild_members_repository.h
repositories/guild_bank_repository.h
repositories/guild_relations_repository.h
repositories/horses_repository.h
repositories/instance_list_repository.h
repositories/instance_list_player_repository.h
repositories/inventory_repository.h
repositories/inventory_snapshots_repository.h
repositories/ip_exemptions_repository.h
repositories/items_repository.h
repositories/items_evolving_details_repository.h
repositories/ldon_trap_entries_repository.h
repositories/ldon_trap_templates_repository.h
repositories/level_exp_mods_repository.h
repositories/lfguild_repository.h
repositories/login_accounts_repository.h
repositories/login_api_tokens_repository.h
repositories/login_server_admins_repository.h
repositories/login_server_list_types_repository.h
repositories/login_world_servers_repository.h
repositories/logsys_categories_repository.h
repositories/lootdrop_repository.h
repositories/lootdrop_entries_repository.h
repositories/loottable_repository.h
repositories/loottable_entries_repository.h
repositories/mail_repository.h
repositories/merchantlist_repository.h
repositories/merchantlist_temp_repository.h
repositories/name_filter_repository.h
repositories/npc_emotes_repository.h
repositories/npc_faction_repository.h
repositories/npc_faction_entries_repository.h
repositories/npc_scale_global_base_repository.h
repositories/npc_spells_repository.h
repositories/npc_spells_effects_repository.h
repositories/npc_spells_effects_entries_repository.h
repositories/npc_spells_entries_repository.h
repositories/npc_types_repository.h
repositories/npc_types_tint_repository.h
repositories/object_repository.h
repositories/object_contents_repository.h
repositories/perl_event_export_settings_repository.h
repositories/petitions_repository.h
repositories/pets_repository.h
repositories/pets_beastlord_data_repository.h
repositories/pets_equipmentset_repository.h
repositories/pets_equipmentset_entries_repository.h
repositories/player_titlesets_repository.h
repositories/player_event_aa_purchase_repository.h
repositories/player_event_killed_npc_repository.h
repositories/player_event_killed_named_npc_repository.h
repositories/player_event_killed_raid_npc_repository.h
repositories/player_event_log_settings_repository.h
repositories/player_event_logs_repository.h
repositories/player_event_loot_items_repository.h
repositories/player_event_merchant_purchase_repository.h
repositories/player_event_merchant_sell_repository.h
repositories/player_event_npc_handin_repository.h
repositories/player_event_npc_handin_entries_repository.h
repositories/player_event_speech_repository.h
repositories/player_event_trade_repository.h
repositories/player_event_trade_entries_repository.h
repositories/quest_globals_repository.h
repositories/raid_details_repository.h
repositories/raid_members_repository.h
repositories/reports_repository.h
repositories/respawn_times_repository.h
repositories/rule_sets_repository.h
repositories/rule_values_repository.h
repositories/saylink_repository.h
repositories/server_scheduled_events_repository.h
repositories/shared_tasks_repository.h
repositories/shared_task_activity_state_repository.h
repositories/shared_task_dynamic_zones_repository.h
repositories/shared_task_members_repository.h
repositories/skill_caps_repository.h
repositories/spawn2_repository.h
repositories/spawnentry_repository.h
repositories/spawngroup_repository.h
repositories/spawn_conditions_repository.h
repositories/spawn_condition_values_repository.h
repositories/spawn_events_repository.h
repositories/spells_new_repository.h
repositories/spell_buckets_repository.h
repositories/spell_globals_repository.h
repositories/starting_items_repository.h
repositories/start_zones_repository.h
repositories/tasks_repository.h
repositories/tasksets_repository.h
repositories/task_activities_repository.h
repositories/timers_repository.h
repositories/titles_repository.h
repositories/trader_repository.h
repositories/tradeskill_recipe_repository.h
repositories/tradeskill_recipe_entries_repository.h
repositories/traps_repository.h
repositories/tributes_repository.h
repositories/tribute_levels_repository.h
repositories/veteran_reward_templates_repository.h
repositories/zone_repository.h
repositories/zone_points_repository.h
)
source_group(StackWalker FILES
StackWalker/StackWalker.h
StackWalker/StackWalker.cpp
@ -830,12 +1233,65 @@ source_group(Util FILES
util/uuid.h
)
option(EQEMU_ADD_PROFILER "Link with Google perftools profiler" OFF)
#PRNG options
option(EQEMU_ADDITIVE_LFIB_PRNG "Use Additive LFib for PRNG." OFF)
mark_as_advanced(EQEMU_ADDITIVE_LFIB_PRNG)
option(EQEMU_BIASED_INT_DIST "Use biased int dist instead of uniform." OFF)
mark_as_advanced(EQEMU_BIASED_INT_DIST)
set(EQEMU_CUSTOM_PRNG_ENGINE "" CACHE STRING "Custom random engine. (ex. std::default_random_engine)")
mark_as_advanced(EQEMU_CUSTOM_PRNG_ENGINE)
if(CMAKE_COMPILER_IS_GNUCXX)
option(EQEMU_SFMT19937 "Use GCC's extention for SIMD Fast MT19937." OFF)
mark_as_advanced(EQEMU_SFMT19937)
endif()
include_directories(Patches SocketLib StackWalker)
add_library(common ${common_sources} ${common_headers} ${repositories})
target_compile_definitions(common PUBLIC BOOST_BIND_GLOBAL_PLACEHOLDERS GLM_FORCE_RADIANS GLM_FORCE_CTOR_INIT GLM_ENABLE_EXPERIMENTAL)
target_include_directories(common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../submodules/websocketpp")
target_link_libraries(common PUBLIC cereal::cereal fmt::fmt unofficial::libmariadb $<IF:$<TARGET_EXISTS:libuv::uv_a>,libuv::uv_a,libuv::uv> OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)
# Requires libgoogle-perftools-dev google-perftools packages for linux (debian)
if(EQEMU_ADD_PROFILER)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed,-lprofiler,--as-needed")
endif()
if(EQEMU_ADDITIVE_LFIB_PRNG)
target_compile_definitions(common PUBLIC USE_ADDITIVE_LFIB_PRNG)
if(EQEMU_SFMT19937)
message(STATUS "SFMT19937 and ADDITITVE_LFIB_PRNG both set, SFMT19937 ignored.")
set(EQEMU_SFMT19937 OFF)
endif()
if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "")
message(STATUS "CUSTOM_PRNG_ENGINE and ADDITITVE_LFIB_PRNG both set, CUSTOM_PRNG_ENGINE ignored.")
set(EQEMU_CUSTOM_PRNG_ENGINE "")
endif()
endif()
if(EQEMU_SFMT19937)
target_compile_definitions(common PUBLIC USE_SFMT19937)
if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "")
message(STATUS "CUSTOM_PRNG_ENGINE and SFMT19937 both set, CUSTOM_PRNG_ENGINE ignored.")
set(EQEMU_CUSTOM_PRNG_ENGINE "")
endif()
endif()
if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "")
target_compile_definitions(common PUBLIC USE_CUSTOM_PRNG_ENGINE=${EQEMU_CUSTOM_PRNG_ENGINE})
endif()
if(EQEMU_BIASED_INT_DIST)
target_compile_definitions(common PUBLIC BIASED_INT_DIST)
endif()
if(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.1")
target_compile_definitions(common PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT)
endif()
if(UNIX)
set_source_files_properties("SocketLib/Mime.cpp" PROPERTY COMPILE_FLAGS -Wno-unused-result)
set_source_files_properties("patches/sod.cpp" "patches/sof.cpp" "patches/rof.cpp" "patches/rof2.cpp" "patches/uf.cpp" PROPERTIES COMPILE_FLAGS -O0)

View File

@ -9,17 +9,7 @@ using json = nlohmann::json;
const std::string NESTED_KEY_DELIMITER = ".";
std::vector<DataBucketsRepository::DataBuckets> g_data_bucket_cache = {};
#if defined(ZONE)
#include "../zone/zonedb.h"
extern ZoneDatabase database;
#elif defined(WORLD)
#include "../world/worlddb.h"
extern WorldDatabase database;
#else
#error "You must define either ZONE or WORLD"
#endif
void DataBucket::SetData(const std::string &bucket_key, const std::string &bucket_value, std::string expires_time)
void DataBucket::SetData(SharedDatabase* database, const std::string &bucket_key, const std::string &bucket_value, std::string expires_time)
{
auto k = DataBucketKey{
.key = bucket_key,
@ -27,10 +17,10 @@ void DataBucket::SetData(const std::string &bucket_key, const std::string &bucke
.expires = expires_time,
};
DataBucket::SetData(k);
DataBucket::SetData(database, k);
}
void DataBucket::SetData(const DataBucketKey &k_)
void DataBucket::SetData(SharedDatabase *database, const DataBucketKey &k_)
{
DataBucketKey k = k_; // copy the key so we can modify it
bool is_nested = k.key.find(NESTED_KEY_DELIMITER) != std::string::npos;
@ -39,7 +29,7 @@ void DataBucket::SetData(const DataBucketKey &k_)
}
auto b = DataBucketsRepository::NewEntity();
auto r = GetData(k, true);
auto r = GetData(database, k, true);
// if we have an entry, use it
if (r.id > 0) {
b = r;
@ -149,10 +139,10 @@ void DataBucket::SetData(const DataBucketKey &k_)
}
}
DataBucketsRepository::UpdateOne(database, b);
DataBucketsRepository::UpdateOne(*database, b);
}
else {
b = DataBucketsRepository::InsertOne(database, b);
b = DataBucketsRepository::InsertOne(*database, b);
// add to cache if it doesn't exist
if (CanCache(k) && !ExistsInCache(b)) {
@ -162,9 +152,9 @@ void DataBucket::SetData(const DataBucketKey &k_)
}
}
std::string DataBucket::GetData(const std::string &bucket_key)
std::string DataBucket::GetData(SharedDatabase* database, const std::string &bucket_key)
{
return GetData(DataBucketKey{.key = bucket_key}).value;
return GetData(database, DataBucketKey{.key = bucket_key}).value;
}
DataBucketsRepository::DataBuckets DataBucket::ExtractNestedValue(
@ -214,7 +204,7 @@ DataBucketsRepository::DataBuckets DataBucket::ExtractNestedValue(
// if the bucket doesn't exist, it will be added to the cache as a miss
// if ignore_misses_cache is true, the bucket will not be added to the cache as a miss
// the only place we should be ignoring the misses cache is on the initial read during SetData
DataBucketsRepository::DataBuckets DataBucket::GetData(const DataBucketKey &k_, bool ignore_misses_cache)
DataBucketsRepository::DataBuckets DataBucket::GetData(SharedDatabase* database, const DataBucketKey &k_, bool ignore_misses_cache)
{
DataBucketKey k = k_; // Copy the key so we can modify it
@ -244,7 +234,7 @@ DataBucketsRepository::DataBuckets DataBucket::GetData(const DataBucketKey &k_,
if (CheckBucketMatch(e, k)) {
if (e.expires > 0 && e.expires < std::time(nullptr)) {
LogDataBuckets("Attempted to read expired key [{}] removing from cache", e.key_);
DeleteData(k);
DeleteData(database, k);
return DataBucketsRepository::NewEntity();
}
@ -261,7 +251,7 @@ DataBucketsRepository::DataBuckets DataBucket::GetData(const DataBucketKey &k_,
// Fetch the value from the database
auto r = DataBucketsRepository::GetWhere(
database,
*database,
fmt::format(
" {} `key` = '{}' LIMIT 1",
DataBucket::GetScopedDbFilters(k),
@ -310,7 +300,7 @@ DataBucketsRepository::DataBuckets DataBucket::GetData(const DataBucketKey &k_,
// If the entry has expired, delete it
if (bucket.expires > 0 && bucket.expires < static_cast<long long>(std::time(nullptr))) {
DeleteData(k);
DeleteData(database, k);
return DataBucketsRepository::NewEntity();
}
@ -337,22 +327,22 @@ DataBucketsRepository::DataBuckets DataBucket::GetData(const DataBucketKey &k_,
return bucket;
}
std::string DataBucket::GetDataExpires(const std::string &bucket_key)
std::string DataBucket::GetDataExpires(SharedDatabase* database, const std::string &bucket_key)
{
return GetDataExpires(DataBucketKey{.key = bucket_key});
return GetDataExpires(database, DataBucketKey{.key = bucket_key});
}
std::string DataBucket::GetDataRemaining(const std::string &bucket_key)
std::string DataBucket::GetDataRemaining(SharedDatabase* database, const std::string &bucket_key)
{
return GetDataRemaining(DataBucketKey{.key = bucket_key});
return GetDataRemaining(database, DataBucketKey{.key = bucket_key});
}
bool DataBucket::DeleteData(const std::string &bucket_key)
bool DataBucket::DeleteData(SharedDatabase* database, const std::string &bucket_key)
{
return DeleteData(DataBucketKey{.key = bucket_key});
return DeleteData(database, DataBucketKey{.key = bucket_key});
}
bool DataBucket::DeleteData(const DataBucketKey &k)
bool DataBucket::DeleteData(SharedDatabase* database, const DataBucketKey &k)
{
bool is_nested_key = k.key.find(NESTED_KEY_DELIMITER) != std::string::npos;
@ -374,7 +364,7 @@ bool DataBucket::DeleteData(const DataBucketKey &k)
// Regular key deletion, no nesting involved
return DataBucketsRepository::DeleteWhere(
database,
*database,
fmt::format("{} `key` = '{}'", DataBucket::GetScopedDbFilters(k), k.key)
);
}
@ -384,7 +374,7 @@ bool DataBucket::DeleteData(const DataBucketKey &k)
DataBucketKey top_level_k = k;
top_level_k.key = top_level_key;
auto r = GetData(top_level_k);
auto r = GetData(database, top_level_k);
if (r.id == 0 || r.value.empty() || !Strings::IsValidJson(r.value)) {
LogDataBuckets("Attempted to delete nested key [{}] but parent key [{}] does not exist or is invalid JSON", k.key, top_level_key);
return false;
@ -444,14 +434,14 @@ bool DataBucket::DeleteData(const DataBucketKey &k)
}
return DataBucketsRepository::DeleteWhere(
database,
*database,
fmt::format("{} `key` = '{}'", DataBucket::GetScopedDbFilters(k), top_level_key)
);
}
// Otherwise, update the existing JSON without the deleted key
r.value = json_value.dump();
DataBucketsRepository::UpdateOne(database, r);
DataBucketsRepository::UpdateOne(*database, r);
// Update cache
if (CanCache(k)) {
@ -466,7 +456,7 @@ bool DataBucket::DeleteData(const DataBucketKey &k)
return true;
}
std::string DataBucket::GetDataExpires(const DataBucketKey &k)
std::string DataBucket::GetDataExpires(SharedDatabase* database, const DataBucketKey &k)
{
LogDataBuckets(
"Getting bucket expiration key [{}] bot_id [{}] account_id [{}] character_id [{}] npc_id [{}]",
@ -477,7 +467,7 @@ std::string DataBucket::GetDataExpires(const DataBucketKey &k)
k.npc_id
);
auto r = GetData(k);
auto r = GetData(database, k);
if (r.id == 0) {
return {};
}
@ -485,7 +475,7 @@ std::string DataBucket::GetDataExpires(const DataBucketKey &k)
return std::to_string(r.expires);
}
std::string DataBucket::GetDataRemaining(const DataBucketKey &k)
std::string DataBucket::GetDataRemaining(SharedDatabase* database, const DataBucketKey &k)
{
LogDataBuckets(
"Getting bucket remaining key [{}] bot_id [{}] account_id [{}] character_id [{}] npc_id [{}] bot_id [{}] zone_id [{}] instance_id [{}]",
@ -499,7 +489,7 @@ std::string DataBucket::GetDataRemaining(const DataBucketKey &k)
k.instance_id
);
auto r = GetData(k);
auto r = GetData(database, k);
if (r.id == 0) {
return "0";
}
@ -565,10 +555,10 @@ bool DataBucket::CheckBucketMatch(const DataBucketsRepository::DataBuckets &dbe,
);
}
void DataBucket::LoadZoneCache(uint16 zone_id, uint16 instance_id)
void DataBucket::LoadZoneCache(SharedDatabase* database, uint16 zone_id, uint16 instance_id)
{
const auto &l = DataBucketsRepository::GetWhere(
database,
*database,
fmt::format(
"zone_id = {} AND instance_id = {} AND (`expires` > {} OR `expires` = 0)",
zone_id,
@ -608,7 +598,7 @@ void DataBucket::LoadZoneCache(uint16 zone_id, uint16 instance_id)
);
}
void DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Type t, std::vector<uint32> ids)
void DataBucket::BulkLoadEntitiesToCache(SharedDatabase* database, DataBucketLoadType::Type t, std::vector<uint32> ids)
{
if (ids.empty()) {
return;
@ -653,7 +643,7 @@ void DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Type t, std::vector
}
const auto &l = DataBucketsRepository::GetWhere(
database,
*database,
fmt::format(
"{} IN ({}) AND (`expires` > {} OR `expires` = 0)",
column,
@ -843,4 +833,4 @@ bool DataBucket::CanCache(const DataBucketKey &key)
}
return false;
}
}

View File

@ -5,6 +5,7 @@
#include "types.h"
#include "repositories/data_buckets_repository.h"
#include "json/json_archive_single_line.h"
#include "shareddb.h"
struct DataBucketKey {
std::string key;
@ -38,26 +39,26 @@ namespace DataBucketLoadType {
class DataBucket {
public:
// non-scoped bucket methods (for global buckets)
static void SetData(const std::string &bucket_key, const std::string &bucket_value, std::string expires_time = "");
static bool DeleteData(const std::string &bucket_key);
static std::string GetData(const std::string &bucket_key);
static std::string GetDataExpires(const std::string &bucket_key);
static std::string GetDataRemaining(const std::string &bucket_key);
static void SetData(SharedDatabase *database, const std::string &bucket_key, const std::string &bucket_value, std::string expires_time = "");
static bool DeleteData(SharedDatabase *database, const std::string &bucket_key);
static std::string GetData(SharedDatabase *database, const std::string &bucket_key);
static std::string GetDataExpires(SharedDatabase *database, const std::string &bucket_key);
static std::string GetDataRemaining(SharedDatabase *database, const std::string &bucket_key);
// scoped bucket methods
static void SetData(const DataBucketKey &k_);
static bool DeleteData(const DataBucketKey &k);
static DataBucketsRepository::DataBuckets GetData(const DataBucketKey &k_, bool ignore_misses_cache = false);
static std::string GetDataExpires(const DataBucketKey &k);
static std::string GetDataRemaining(const DataBucketKey &k);
static void SetData(SharedDatabase *database, const DataBucketKey &k_);
static bool DeleteData(SharedDatabase *database, const DataBucketKey &k);
static DataBucketsRepository::DataBuckets GetData(SharedDatabase *database, const DataBucketKey &k_, bool ignore_misses_cache = false);
static std::string GetDataExpires(SharedDatabase *database, const DataBucketKey &k);
static std::string GetDataRemaining(SharedDatabase *database, const DataBucketKey &k);
static std::string GetScopedDbFilters(const DataBucketKey &k);
// bucket repository versus key matching
static bool CheckBucketMatch(const DataBucketsRepository::DataBuckets &dbe, const DataBucketKey &k);
static bool ExistsInCache(const DataBucketsRepository::DataBuckets &entry);
static void LoadZoneCache(uint16 zone_id, uint16 instance_id);
static void BulkLoadEntitiesToCache(DataBucketLoadType::Type t, std::vector<uint32> ids);
static void LoadZoneCache(SharedDatabase* database, uint16 zone_id, uint16 instance_id);
static void BulkLoadEntitiesToCache(SharedDatabase* database, DataBucketLoadType::Type t, std::vector<uint32> ids);
static void DeleteCachedBuckets(DataBucketLoadType::Type type, uint32 id, uint32 secondary_id = 0);
static void DeleteFromMissesCache(DataBucketsRepository::DataBuckets e);

View File

@ -258,9 +258,17 @@ bool DBcore::Open(uint32 *errnum, char *errbuf)
if (pCompress) {
flags |= CLIENT_COMPRESS;
}
//todo: we need to revisit this ssl handling later
//the whole connect code is ancient and tls is starting to come as a default requirement for many db setups
if (pSSL) {
flags |= CLIENT_SSL;
}
else {
int off = 0;
mysql_options(mysql, MYSQL_OPT_SSL_ENFORCE, &off);
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &off);
}
if (mysql_real_connect(mysql, pHost, pUser, pPassword, pDatabase, pPort, 0, flags)) {
pStatus = Connected;

View File

@ -15,6 +15,6 @@ add_executable(eqlaunch ${eqlaunch_sources} ${eqlaunch_headers})
install(TARGETS eqlaunch RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
target_link_libraries(eqlaunch ${SERVER_LIBS})
target_link_libraries(eqlaunch common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -20,12 +20,9 @@ set(lb_sources
src/wrapper_base.cpp
)
set(lb_headers
)
add_library(luabind ${lb_sources} ${lb_headers})
target_link_libraries(luabind PRIVATE Boost::dynamic_bitset Boost::tuple Boost::foreach ${LUAJIT_LIBRARY})
add_library(luabind ${lb_sources})
target_include_directories(luabind PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${LUAJIT_INCLUDE_DIR})
target_link_libraries(luabind PUBLIC Boost::dynamic_bitset Boost::tuple Boost::foreach ${LUAJIT_LIBRARY})
if(UNIX)
set_source_files_properties(${lb_sources} PROPERTY COMPILE_FLAGS -Wno-deprecated-declarations)

View File

@ -2,10 +2,6 @@ cmake_minimum_required(VERSION 3.20.0)
project(perlbind LANGUAGES CXX)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".so" ".a")
find_package(PerlLibs)
set(PERLBIND_HEADERS
include/perlbind/array.h
include/perlbind/forward.h
@ -45,6 +41,8 @@ target_include_directories(perlbind PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
target_compile_definitions(perlbind PUBLIC EMBPERL EMBPERL_PLUGIN PERLBIND_NO_STRICT_SCALAR_TYPES)
option(PERLBIND_BUILD_TESTS "Build tests" OFF)
option(PERLBIND_ENABLE_ASAN "Build with address sanitizer" OFF)

View File

@ -26,10 +26,12 @@ set(eqlogin_headers
world_server.h
)
add_compile_definitions(EQEMU_USE_OPENSSL)
add_executable(loginserver ${eqlogin_sources} ${eqlogin_headers})
install(TARGETS loginserver RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
target_link_libraries(loginserver ${SERVER_LIBS})
target_link_libraries(loginserver common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -25,6 +25,6 @@ install(TARGETS queryserv RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
add_definitions(-DQSERV)
target_link_libraries(queryserv ${SERVER_LIBS})
target_link_libraries(queryserv common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -15,6 +15,6 @@ add_executable(shared_memory ${shared_memory_sources} ${shared_memory_headers})
install(TARGETS shared_memory RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
target_link_libraries(shared_memory ${SERVER_LIBS})
target_link_libraries(shared_memory common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -21,7 +21,7 @@ set(tests_headers
add_executable(tests ${tests_sources} ${tests_headers})
target_link_libraries(tests common cppunit ${SERVER_LIBS})
target_link_libraries(tests common cppunit)
install(TARGETS tests RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

View File

@ -23,6 +23,6 @@ install(TARGETS ucs RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
add_definitions(-DUCS)
target_link_libraries(ucs ${SERVER_LIBS})
target_link_libraries(ucs common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -1,8 +1,6 @@
module should-release
go 1.23.0
toolchain go1.23.5
go 1.24.0
require (
github.com/google/go-github/v41 v41.0.0
@ -11,5 +9,5 @@ require (
require (
github.com/google/go-querystring v1.1.0 // indirect
golang.org/x/crypto v0.36.0 // indirect
golang.org/x/crypto v0.45.0 // indirect
)

View File

@ -10,8 +10,8 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=

View File

@ -7,7 +7,6 @@ set(world_sources
cliententry.cpp
clientlist.cpp
console.cpp
../common/data_bucket.cpp
dynamic_zone.cpp
dynamic_zone_manager.cpp
eql_config.cpp
@ -43,7 +42,6 @@ set(world_headers
cliententry.h
clientlist.h
console.h
../common/data_bucket.h
dynamic_zone.h
dynamic_zone_manager.h
eql_config.h
@ -82,6 +80,6 @@ endif()
add_definitions(-DWORLD)
target_link_libraries(world ${SERVER_LIBS})
target_link_libraries(world common)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -2530,9 +2530,9 @@ void Client::SendUnsupportedClientPacket(const std::string& message)
void Client::LoadDataBucketsCache()
{
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Account, {GetAccountID()});
DataBucket::BulkLoadEntitiesToCache(&database, DataBucketLoadType::Account, {GetAccountID()});
const auto ids = CharacterDataRepository::GetCharacterIDsByAccountID(database, GetAccountID());
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Client, ids);
DataBucket::BulkLoadEntitiesToCache(&database, DataBucketLoadType::Client, ids);
}
void Client::ClearDataBucketsCache()

View File

@ -23,7 +23,6 @@ set(zone_sources
client_process.cpp
combat_record.cpp
corpse.cpp
../common/data_bucket.cpp
doors.cpp
dialogue_window.cpp
dynamic_zone.cpp
@ -139,7 +138,6 @@ set(zone_headers
command.h
common.h
corpse.h
../common/data_bucket.h
doors.h
dialogue_window.h
dynamic_zone.h
@ -491,23 +489,32 @@ endif()
add_definitions(-DZONE)
# link lua_zone unity build against luabind
if(MSVC)
target_compile_options(lua_zone PRIVATE /utf-8)
endif()
target_link_libraries(lua_zone PRIVATE luabind Boost::dynamic_bitset Boost::tuple Boost::foreach unofficial::libmariadb)
if (EQEMU_BUILD_STATIC AND LUA_LIBRARY)
target_link_libraries(zone PRIVATE ${LUA_LIBRARY})
if(EQEMU_BUILD_LUA)
target_compile_definitions(lua_zone PUBLIC LUA_EQEMU)
target_link_libraries(lua_zone PRIVATE luabind Boost::dynamic_bitset Boost::tuple Boost::foreach common)
if (EQEMU_BUILD_STATIC AND LUA_LIBRARY)
target_link_libraries(zone PRIVATE ${LUA_LIBRARY})
endif()
endif()
# perl unity build links against perl_zone
target_link_libraries(perl_zone PRIVATE perlbind fmt::fmt unofficial::libmariadb ${PERL_LIBRARY_LIBS})
if (EQEMU_BUILD_STATIC AND PERL_LIBRARY)
target_link_libraries(zone PRIVATE ${PERL_LIBRARY})
if(EQEMU_BUILD_PERL)
target_link_libraries(perl_zone PRIVATE perlbind common ${PERL_LIBRARY_LIBS})
if (EQEMU_BUILD_STATIC AND PERL_LIBRARY)
target_link_libraries(zone PRIVATE ${PERL_LIBRARY})
endif()
endif()
# link zone against common libraries
target_link_libraries(zone PRIVATE lua_zone perl_zone gm_commands_zone ${ZONE_LIBS} RecastNavigation::Detour)
target_link_libraries(zone PRIVATE gm_commands_zone common RecastNavigation::Detour)
if(EQEMU_BUILD_LUA)
target_link_libraries(zone PRIVATE lua_zone)
endif()
if(EQEMU_BUILD_PERL)
target_link_libraries(zone PRIVATE perl_zone)
endif()
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

View File

@ -5901,7 +5901,7 @@ float Mob::CheckHeroicBonusesDataBuckets(std::string bucket_name)
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
if (IsOfClientBot()) {
bucket_value = DataBucket::GetData(k).value;
bucket_value = DataBucket::GetData(&database, k).value;
}
if (bucket_value.empty() || !Strings::IsNumber(bucket_value)) {

View File

@ -8224,13 +8224,13 @@ bool Bot::CheckDataBucket(std::string bucket_name, const std::string& bucket_val
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
auto b = DataBucket::GetData(k);
auto b = DataBucket::GetData(&database, k);
if (b.value.empty() && GetBotOwner()) {
// fetch from owner
k = GetBotOwner()->GetScopedBucketKeys();
k.key = bucket_name;
b = DataBucket::GetData(k);
b = DataBucket::GetData(&database, k);
if (b.value.empty()) {
return false;
}

View File

@ -116,7 +116,7 @@ void RunBenchmarkCycle(uint64_t target_rows)
break;
}
DataBucket::SetData(e);
DataBucket::SetData(&database, e);
inserted_keys.emplace_back(e);
}
@ -129,7 +129,7 @@ void RunBenchmarkCycle(uint64_t target_rows)
auto update_start = std::chrono::high_resolution_clock::now();
for (auto &key: inserted_keys) {
// 🔍 Retrieve existing bucket using scoped `GetData`
auto e = DataBucket::GetData(key);
auto e = DataBucket::GetData(&database, key);
if (e.id > 0) {
// create a new key object with the updated values
DataBucketKey bucket_entry_key{
@ -145,7 +145,7 @@ void RunBenchmarkCycle(uint64_t target_rows)
};
// 🔄 Update using DataBucket class
DataBucket::SetData(bucket_entry_key);
DataBucket::SetData(&database, bucket_entry_key);
}
}
auto update_end = std::chrono::high_resolution_clock::now();
@ -188,7 +188,7 @@ void RunBenchmarkCycle(uint64_t target_rows)
k.instance_id = entity_choice;
}
DataBucket::GetData(key);
DataBucket::GetData(&database, key);
}
auto read_cached_end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> read_cached_time = read_cached_end - read_cached_start;
@ -206,7 +206,7 @@ void RunBenchmarkCycle(uint64_t target_rows)
.character_id = 999999999, // use scoped value
};
DataBucket::GetData(k);
DataBucket::GetData(&database, k);
}
auto read_client_cache_miss_end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> read_client_cache_miss_time = read_client_cache_miss_end - read_client_cache_miss_start;
@ -260,7 +260,7 @@ void RunBenchmarkCycle(uint64_t target_rows)
k.instance_id = entity_choice;
}
DataBucket::DeleteData(k);
DataBucket::DeleteData(&database, k);
}
auto delete_end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> delete_time = delete_end - delete_start;

View File

@ -4840,7 +4840,7 @@ bool Client::IsNameChangeAllowed() {
auto k = GetScopedBucketKeys();
k.key = "name_change_allowed";
auto b = DataBucket::GetData(k);
auto b = DataBucket::GetData(&database, k);
if (!b.value.empty()) {
return true;
}
@ -4856,7 +4856,7 @@ bool Client::ClearNameChange() {
auto k = GetScopedBucketKeys();
k.key = "name_change_allowed";
DataBucket::DeleteData(k);
DataBucket::DeleteData(&database, k);
return true;
}
@ -4878,7 +4878,7 @@ void Client::GrantNameChange() {
auto k = GetScopedBucketKeys();
k.key = "name_change_allowed";
k.value = "allowed"; // potentially put a timestamp here
DataBucket::SetData(k);
DataBucket::SetData(&database, k);
InvokeChangeNameWindow(true);
}
@ -4891,7 +4891,7 @@ bool Client::IsPetNameChangeAllowed() {
DataBucketKey k = GetScopedBucketKeys();
k.key = "PetNameChangesAllowed";
auto b = DataBucket::GetData(k);
auto b = DataBucket::GetData(&database, k);
if (!b.value.empty()) {
return true;
}
@ -4915,7 +4915,7 @@ void Client::GrantPetNameChange() {
DataBucketKey k = GetScopedBucketKeys();
k.key = "PetNameChangesAllowed";
k.value = "true";
DataBucket::SetData(k);
DataBucket::SetData(&database, k);
InvokeChangePetName(true);
}
@ -4924,7 +4924,7 @@ void Client::ClearPetNameChange() {
DataBucketKey k = GetScopedBucketKeys();
k.key = "PetNameChangesAllowed";
DataBucket::DeleteData(k);
DataBucket::DeleteData(&database, k);
}
bool Client::ChangePetName(std::string new_name)
@ -9671,9 +9671,9 @@ void Client::SetDevToolsEnabled(bool in_dev_tools_enabled)
const auto dev_tools_key = fmt::format("{}-dev-tools-disabled", AccountID());
if (in_dev_tools_enabled) {
DataBucket::DeleteData(dev_tools_key);
DataBucket::DeleteData(&database, dev_tools_key);
} else {
DataBucket::SetData(dev_tools_key, "true");
DataBucket::SetData(&database, dev_tools_key, "true");
}
Client::dev_tools_enabled = in_dev_tools_enabled;
@ -9846,7 +9846,7 @@ void Client::SendToGuildHall()
uint32 expiration_time = (RuleI(Instances, GuildHallExpirationDays) * 86400);
uint16 instance_id = 0;
std::string guild_hall_instance_key = fmt::format("guild-hall-instance-{}", GuildID());
std::string instance_data = DataBucket::GetData(guild_hall_instance_key);
std::string instance_data = DataBucket::GetData(&database, guild_hall_instance_key);
if (!instance_data.empty() && Strings::ToInt(instance_data) > 0) {
instance_id = Strings::ToInt(instance_data);
}
@ -9863,6 +9863,7 @@ void Client::SendToGuildHall()
}
DataBucket::SetData(
&database,
guild_hall_instance_key,
std::to_string(instance_id),
std::to_string(expiration_time)
@ -10915,7 +10916,7 @@ void Client::SendToInstance(std::string instance_type, std::string zone_short_na
instance_identifier,
zone_short_name
);
std::string current_bucket_value = DataBucket::GetData(full_bucket_name);
std::string current_bucket_value = DataBucket::GetData(&database, full_bucket_name);
uint16 instance_id = 0;
if (current_bucket_value.length() > 0) {
@ -10931,7 +10932,7 @@ void Client::SendToInstance(std::string instance_type, std::string zone_short_na
return;
}
DataBucket::SetData(full_bucket_name, itoa(instance_id), itoa(duration));
DataBucket::SetData(&database, full_bucket_name, itoa(instance_id), itoa(duration));
}
AssignToInstance(instance_id);
@ -13149,7 +13150,7 @@ std::string Client::GetAccountBucket(std::string bucket_name)
k.account_id = AccountID();
k.key = bucket_name;
return DataBucket::GetData(k).value;
return DataBucket::GetData(&database, k).value;
}
void Client::SetAccountBucket(std::string bucket_name, std::string bucket_value, std::string expiration)
@ -13160,7 +13161,7 @@ void Client::SetAccountBucket(std::string bucket_name, std::string bucket_value,
k.expires = expiration;
k.value = bucket_value;
DataBucket::SetData(k);
DataBucket::SetData(&database, k);
}
void Client::DeleteAccountBucket(std::string bucket_name)
@ -13169,7 +13170,7 @@ void Client::DeleteAccountBucket(std::string bucket_name)
k.account_id = AccountID();
k.key = bucket_name;
DataBucket::DeleteData(k);
DataBucket::DeleteData(&database, k);
}
std::string Client::GetAccountBucketExpires(std::string bucket_name)
@ -13178,7 +13179,7 @@ std::string Client::GetAccountBucketExpires(std::string bucket_name)
k.account_id = AccountID();
k.key = bucket_name;
return DataBucket::GetDataExpires(k);
return DataBucket::GetDataExpires(&database, k);
}
std::string Client::GetAccountBucketRemaining(std::string bucket_name)
@ -13187,7 +13188,7 @@ std::string Client::GetAccountBucketRemaining(std::string bucket_name)
k.account_id = AccountID();
k.key = bucket_name;
return DataBucket::GetDataRemaining(k);
return DataBucket::GetDataRemaining(&database, k);
}
std::string Client::GetBandolierName(uint8 bandolier_slot)

View File

@ -1853,7 +1853,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app)
*/
if (Admin() >= EQ::DevTools::GM_ACCOUNT_STATUS_LEVEL) {
const auto dev_tools_key = fmt::format("{}-dev-tools-disabled", AccountID());
if (DataBucket::GetData(dev_tools_key) == "true") {
if (DataBucket::GetData(&database, dev_tools_key) == "true") {
dev_tools_enabled = false;
}
}

View File

@ -874,7 +874,7 @@ void Client::BulkSendMerchantInventory(int merchant_id, int npcid) {
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
auto b = DataBucket::GetData(k);
auto b = DataBucket::GetData(&database, k);
if (b.value.empty()) {
continue;
}

View File

@ -1299,7 +1299,7 @@ uint8 Client::GetCharMaxLevelFromBucket()
DataBucketKey k = GetScopedBucketKeys();
k.key = "CharMaxLevel";
auto b = DataBucket::GetData(k);
auto b = DataBucket::GetData(&database, k);
if (!b.value.empty()) {
if (Strings::IsNumber(b.value)) {
return static_cast<uint8>(Strings::ToUnsignedInt(b.value));

View File

@ -50,7 +50,7 @@ void command_databuckets(Client *c, const Seperator *sep)
!npc_id &&
!bot_id
) {
if (!DataBucket::DeleteData(key_filter)) {
if (!DataBucket::DeleteData(&database, key_filter)) {
c->Message(
Chat::White,
fmt::format(
@ -76,7 +76,7 @@ void command_databuckets(Client *c, const Seperator *sep)
k.npc_id = npc_id;
k.bot_id = bot_id;
if (!DataBucket::DeleteData(k)) {
if (!DataBucket::DeleteData(&database, k)) {
c->Message(
Chat::White,
fmt::format(
@ -123,7 +123,7 @@ void command_databuckets(Client *c, const Seperator *sep)
const std::string& expires_string = expires == 0 ? "Never" : std::to_string(expires);
DataBucket::SetData(k);
DataBucket::SetData(&database, k);
c->Message(
Chat::White,

View File

@ -58,7 +58,7 @@ void command_gmzone(Client *c, const Seperator *sep)
zone_version
);
auto existing_zone_instance = DataBucket::GetData(bucket_key);
auto existing_zone_instance = DataBucket::GetData(&database, bucket_key);
uint16 instance_id = 0;
uint32 duration = 100000000;
@ -99,6 +99,7 @@ void command_gmzone(Client *c, const Seperator *sep)
);
DataBucket::SetData(
&database,
bucket_key,
std::to_string(instance_id)
);

View File

@ -2,7 +2,7 @@
#include "../../groups.h"
#include "../../raids.h"
#include "../../raids.h"
#include "../../common/repositories/account_repository.h"
#include "../../../common/repositories/account_repository.h"
void SetAutoLogin(Client* c, const Seperator* sep)
{

View File

@ -1,5 +1,5 @@
#include "../../client.h"
#include "../../common/repositories/account_repository.h"
#include "../../../common/repositories/account_repository.h"
void ShowAutoLogin(Client* c, const Seperator* sep)
{

View File

@ -933,23 +933,23 @@ std::string lua_get_rule(std::string rule_name) {
}
std::string lua_get_data(std::string bucket_key) {
return DataBucket::GetData(bucket_key);
return DataBucket::GetData(&database, bucket_key);
}
std::string lua_get_data_expires(std::string bucket_key) {
return DataBucket::GetDataExpires(bucket_key);
return DataBucket::GetDataExpires(&database, bucket_key);
}
void lua_set_data(std::string bucket_key, std::string bucket_value) {
DataBucket::SetData(bucket_key, bucket_value);
DataBucket::SetData(&database, bucket_key, bucket_value);
}
void lua_set_data(std::string bucket_key, std::string bucket_value, std::string expires_at) {
DataBucket::SetData(bucket_key, bucket_value, expires_at);
DataBucket::SetData(&database, bucket_key, bucket_value, expires_at);
}
bool lua_delete_data(std::string bucket_key) {
return DataBucket::DeleteData(bucket_key);
return DataBucket::DeleteData(&database, bucket_key);
}
std::string lua_get_char_name_by_id(uint32 char_id) {
@ -2030,7 +2030,7 @@ void lua_rename(std::string name) {
}
std::string lua_get_data_remaining(std::string bucket_name) {
return DataBucket::GetDataRemaining(bucket_name);
return DataBucket::GetDataRemaining(&database, bucket_name);
}
const int lua_get_item_stat(uint32 item_id, std::string identifier) {

View File

@ -434,7 +434,6 @@ LuaParser::LuaParser() {
ZoneArgumentDispatch[EVENT_TIMER_RESUME] = handle_zone_timer_pause_resume_start;
ZoneArgumentDispatch[EVENT_TIMER_START] = handle_zone_timer_pause_resume_start;
ZoneArgumentDispatch[EVENT_TIMER_STOP] = handle_zone_timer_stop;
#endif
L = nullptr;
}
@ -2295,3 +2294,5 @@ void LuaParser::LoadZoneScript(std::string filename) {
void LuaParser::LoadGlobalZoneScript(std::string filename) {
LoadScript(filename, "global_zone");
}
#endif

View File

@ -8161,7 +8161,7 @@ void Mob::DeleteBucket(std::string bucket_name)
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
DataBucket::DeleteData(k);
DataBucket::DeleteData(&database, k);
}
std::string Mob::GetBucket(std::string bucket_name)
@ -8169,7 +8169,7 @@ std::string Mob::GetBucket(std::string bucket_name)
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
auto b = DataBucket::GetData(k);
auto b = DataBucket::GetData(&database, k);
if (!b.value.empty()) {
return b.value;
}
@ -8181,7 +8181,7 @@ std::string Mob::GetBucketExpires(std::string bucket_name)
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
std::string bucket_expiration = DataBucket::GetDataExpires(k);
std::string bucket_expiration = DataBucket::GetDataExpires(&database, k);
if (!bucket_expiration.empty()) {
return bucket_expiration;
}
@ -8194,7 +8194,7 @@ std::string Mob::GetBucketRemaining(std::string bucket_name)
DataBucketKey k = GetScopedBucketKeys();
k.key = bucket_name;
std::string bucket_remaining = DataBucket::GetDataRemaining(k);
std::string bucket_remaining = DataBucket::GetDataRemaining(&database, k);
if (!bucket_remaining.empty() && Strings::ToInt(bucket_remaining) > 0) {
return bucket_remaining;
}
@ -8212,7 +8212,7 @@ void Mob::SetBucket(std::string bucket_name, std::string bucket_value, std::stri
k.expires = expiration;
k.value = bucket_value;
DataBucket::SetData(k);
DataBucket::SetData(&database, k);
}
std::string Mob::GetMobDescription()
@ -8783,12 +8783,12 @@ bool Mob::LoadDataBucketsCache()
}
if (IsBot()) {
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Bot, {id});
DataBucket::BulkLoadEntitiesToCache(&database, DataBucketLoadType::Bot, {id});
}
else if (IsClient()) {
uint32 account_id = CastToClient()->AccountID();
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Account, {account_id});
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Client, {id});
DataBucket::BulkLoadEntitiesToCache(&database, DataBucketLoadType::Account, {account_id});
DataBucket::BulkLoadEntitiesToCache(&database, DataBucketLoadType::Client, {id});
}
return true;

View File

@ -6275,7 +6275,7 @@ bool Client::SpellBucketCheck(uint16 spell_id, uint32 character_id)
k.key = e.bucket_name;
const auto& b = DataBucket::GetData(k);
const auto& b = DataBucket::GetData(&database, k);
return zone->CompareDataBucket(e.bucket_comparison, e.bucket_value, b.value);
}

View File

@ -170,7 +170,7 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool is_static) {
zone->RequestUCSServerStatus();
zone->StartShutdownTimer();
DataBucket::LoadZoneCache(iZoneID, iInstanceID);
DataBucket::LoadZoneCache(&database, iZoneID, iInstanceID);
/*
* Set Logging
@ -3186,7 +3186,7 @@ std::string Zone::GetBucket(const std::string& bucket_name)
k.instance_id = instanceid;
k.key = bucket_name;
return DataBucket::GetData(k).value;
return DataBucket::GetData(&database, k).value;
}
void Zone::SetBucket(const std::string& bucket_name, const std::string& bucket_value, const std::string& expiration)
@ -3198,7 +3198,7 @@ void Zone::SetBucket(const std::string& bucket_name, const std::string& bucket_v
k.expires = expiration;
k.value = bucket_value;
DataBucket::SetData(k);
DataBucket::SetData(&database, k);
}
void Zone::DeleteBucket(const std::string& bucket_name)
@ -3208,7 +3208,7 @@ void Zone::DeleteBucket(const std::string& bucket_name)
k.instance_id = instanceid;
k.key = bucket_name;
DataBucket::DeleteData(k);
DataBucket::DeleteData(&database, k);
}
std::string Zone::GetBucketExpires(const std::string& bucket_name)
@ -3218,7 +3218,7 @@ std::string Zone::GetBucketExpires(const std::string& bucket_name)
k.instance_id = instanceid;
k.key = bucket_name;
return DataBucket::GetDataExpires(k);
return DataBucket::GetDataExpires(&database, k);
}
std::string Zone::GetBucketRemaining(const std::string& bucket_name)
@ -3228,7 +3228,7 @@ std::string Zone::GetBucketRemaining(const std::string& bucket_name)
k.instance_id = instanceid;
k.key = bucket_name;
return DataBucket::GetDataRemaining(k);
return DataBucket::GetDataRemaining(&database, k);
}
void Zone::DisableRespawnTimers()