mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-12-20 03:36:43 -06:00
Compare commits
5 Commits
cmake-pack
...
add-sqlite
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7d01dbb82 | ||
|
|
ec4ec2133b | ||
|
|
218a3f2d0d | ||
|
|
9e242995e9 | ||
|
|
0aa1f70540 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -6,10 +6,6 @@ docker/configs
|
||||
# Third party libraries
|
||||
thirdparty/mysql/
|
||||
thirdparty/mysql_linux/
|
||||
thirdparty/backtrace/
|
||||
thirdparty/magic_enum/
|
||||
thirdparty/recastnavigation/
|
||||
thirdparty/tinyxml2/
|
||||
CMakeVariables.txt
|
||||
|
||||
# Build folders
|
||||
|
||||
12
.gitmodules
vendored
12
.gitmodules
vendored
@@ -1,7 +1,19 @@
|
||||
[submodule "thirdparty/cpp-httplib"]
|
||||
path = thirdparty/cpp-httplib
|
||||
url = https://github.com/yhirose/cpp-httplib
|
||||
[submodule "thirdparty/tinyxml2"]
|
||||
path = thirdparty/tinyxml2
|
||||
url = https://github.com/leethomason/tinyxml2
|
||||
[submodule "thirdparty/recastnavigation"]
|
||||
path = thirdparty/recastnavigation
|
||||
url = https://github.com/recastnavigation/recastnavigation
|
||||
[submodule "thirdparty/libbcrypt"]
|
||||
path = thirdparty/libbcrypt
|
||||
url = https://github.com/trusch/libbcrypt.git
|
||||
[submodule "thirdparty/mariadb-connector-cpp"]
|
||||
path = thirdparty/mariadb-connector-cpp
|
||||
url = https://github.com/mariadb-corporation/mariadb-connector-cpp.git
|
||||
ignore = dirty
|
||||
[submodule "thirdparty/magic_enum"]
|
||||
path = thirdparty/magic_enum
|
||||
url = https://github.com/Neargye/magic_enum.git
|
||||
|
||||
@@ -109,53 +109,6 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
find_package(MariaDB)
|
||||
|
||||
# Fetch third party dependencies
|
||||
set(DLU_THIRDPARTY_SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty)
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
backtrace
|
||||
SYSTEM
|
||||
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/backtrace
|
||||
GIT_REPOSITORY https://github.com/ianlancetaylor/libbacktrace.git
|
||||
)
|
||||
FetchContent_Declare(
|
||||
bcrypt
|
||||
SYSTEM
|
||||
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/libbcrypt
|
||||
GIT_REPOSITORY https://github.com/trusch/libbcrypt.git
|
||||
GIT_TAG d6523c370de6e724ce4ec703e2449b5b028ea3b1
|
||||
)
|
||||
FetchContent_Declare(
|
||||
magic_enum
|
||||
SYSTEM
|
||||
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/magic_enum
|
||||
GIT_REPOSITORY https://github.com/Neargye/magic_enum.git
|
||||
GIT_TAG v0.9.7
|
||||
)
|
||||
FetchContent_Declare(
|
||||
Recast
|
||||
SYSTEM
|
||||
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/recastnavigation
|
||||
GIT_REPOSITORY https://github.com/recastnavigation/recastnavigation.git
|
||||
GIT_TAG v1.6.0
|
||||
)
|
||||
FetchContent_Declare(
|
||||
tinyxml2
|
||||
SYSTEM
|
||||
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/tinyxml2
|
||||
GIT_REPOSITORY https://github.com/leethomason/tinyxml2.git
|
||||
GIT_TAG 9.0.0
|
||||
)
|
||||
FetchContent_MakeAvailable(magic_enum Recast tinyxml2)
|
||||
|
||||
# Turn off tinyxml2 testing
|
||||
set(tinyxml2_BUILD_TESTING OFF)
|
||||
|
||||
include(CMakePrintHelpers)
|
||||
cmake_print_properties(TARGETS magic_enum Recast tinyxml2 PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
|
||||
# Create a /resServer directory
|
||||
make_directory(${CMAKE_BINARY_DIR}/resServer)
|
||||
|
||||
@@ -298,7 +251,10 @@ include_directories(
|
||||
"tests/dGameTests/dComponentsTests"
|
||||
|
||||
SYSTEM
|
||||
"thirdparty/magic_enum/include/magic_enum"
|
||||
"thirdparty/raknet/Source"
|
||||
"thirdparty/tinyxml2"
|
||||
"thirdparty/recastnavigation"
|
||||
"thirdparty/SQLite"
|
||||
"thirdparty/cpplinq"
|
||||
"thirdparty/cpp-httplib"
|
||||
@@ -316,7 +272,7 @@ if(MSVC)
|
||||
# add_compile_options("/W4")
|
||||
# Want to enable warnings eventually, but WAY too much noise right now
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
||||
add_compile_options("-Wuninitialized" "-Wold-style-cast" "-Wstrict-aliasing")
|
||||
add_compile_options("-Wuninitialized" "-Wold-style-cast")
|
||||
else()
|
||||
message(WARNING "Unknown compiler: '${CMAKE_CXX_COMPILER_ID}' - No warning flags enabled.")
|
||||
endif()
|
||||
@@ -385,7 +341,7 @@ target_precompile_headers(
|
||||
|
||||
target_precompile_headers(
|
||||
tinyxml2 PRIVATE
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:${tinyxml2_SOURCE_DIR}/tinyxml2.h>"
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:${PROJECT_SOURCE_DIR}/thirdparty/tinyxml2/tinyxml2.h>"
|
||||
)
|
||||
|
||||
if(${ENABLE_TESTING})
|
||||
|
||||
@@ -70,6 +70,5 @@ else ()
|
||||
endif ()
|
||||
|
||||
target_link_libraries(dCommon
|
||||
PUBLIC magic_enum
|
||||
PRIVATE ZLIB::ZLIB bcrypt tinyxml2
|
||||
INTERFACE dDatabase)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
namespace MessageType {
|
||||
enum class Game : uint16_t {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
namespace MessageType {
|
||||
enum class World : uint32_t {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define __STRINGIFIEDENUM_H__
|
||||
|
||||
#include <string>
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
namespace StringifiedEnum {
|
||||
template<typename T>
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
#define __EINVENTORYTYPE__H__
|
||||
|
||||
#include <cstdint>
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
static const uint8_t NUMBER_OF_INVENTORIES = 17;
|
||||
/**
|
||||
|
||||
@@ -4,4 +4,4 @@ add_subdirectory(GameDatabase)
|
||||
add_library(dDatabase STATIC "MigrationRunner.cpp")
|
||||
target_include_directories(dDatabase PUBLIC ".")
|
||||
target_link_libraries(dDatabase
|
||||
PUBLIC magic_enum dDatabaseCDClient dDatabaseGame)
|
||||
PUBLIC dDatabaseCDClient dDatabaseGame)
|
||||
|
||||
@@ -505,7 +505,6 @@ void EntityManager::UpdateGhosting(Entity* player) {
|
||||
|
||||
if (collectionId != 0) {
|
||||
collectionId = static_cast<uint32_t>(collectionId) + static_cast<uint32_t>(Game::server->GetZoneID() << 8);
|
||||
|
||||
if (missionComponent->HasCollectible(collectionId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ set(DGAME_DBEHAVIORS_SOURCES "AirMovementBehavior.cpp"
|
||||
"VerifyBehavior.cpp")
|
||||
|
||||
add_library(dBehaviors OBJECT ${DGAME_DBEHAVIORS_SOURCES})
|
||||
target_link_libraries(dBehaviors PUBLIC dDatabaseCDClient dPhysics magic_enum tinyxml2)
|
||||
target_link_libraries(dBehaviors PUBLIC dDatabaseCDClient dPhysics)
|
||||
target_include_directories(dBehaviors PUBLIC "."
|
||||
"${PROJECT_SOURCE_DIR}/dGame/dGameMessages" # via BehaviorContext.h
|
||||
PRIVATE
|
||||
|
||||
@@ -79,4 +79,4 @@ target_include_directories(dComponents PUBLIC "."
|
||||
)
|
||||
target_precompile_headers(dComponents REUSE_FROM dGameBase)
|
||||
|
||||
target_link_libraries(dComponents PUBLIC magic_enum tinyxml2 INTERFACE dBehaviors)
|
||||
target_link_libraries(dComponents INTERFACE dBehaviors)
|
||||
|
||||
@@ -6,7 +6,7 @@ set(DGAME_DGAMEMESSAGES_SOURCES
|
||||
|
||||
add_library(dGameMessages OBJECT ${DGAME_DGAMEMESSAGES_SOURCES})
|
||||
target_link_libraries(dGameMessages
|
||||
PUBLIC magic_enum tinyxml2 dDatabase
|
||||
PUBLIC dDatabase
|
||||
INTERFACE dGameBase # TradingManager
|
||||
)
|
||||
target_include_directories(dGameMessages PUBLIC "."
|
||||
|
||||
@@ -24,7 +24,6 @@ target_include_directories(dInventory PUBLIC "."
|
||||
"${PROJECT_SOURCE_DIR}/dGame/dMission" # via MissionComponent.h
|
||||
"${PROJECT_SOURCE_DIR}/dZoneManager" # via Item.cpp
|
||||
)
|
||||
target_link_libraries(dInventory PUBLIC magic_enum tinyxml2)
|
||||
target_precompile_headers(dInventory REUSE_FROM dGameBase)
|
||||
# Workaround for compiler bug where the optimized code could result in a memcpy of 0 bytes, even though that isnt possible.
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97185
|
||||
|
||||
@@ -4,7 +4,7 @@ set(DGAME_DMISSION_SOURCES
|
||||
"MissionTask.cpp")
|
||||
|
||||
add_library(dMission OBJECT ${DGAME_DMISSION_SOURCES})
|
||||
target_link_libraries(dMission PUBLIC tinyxml2 dDatabase)
|
||||
target_link_libraries(dMission PUBLIC dDatabase)
|
||||
target_include_directories(dMission PUBLIC "."
|
||||
PRIVATE
|
||||
"${PROJECT_SOURCE_DIR}/dGame/dComponents"
|
||||
|
||||
@@ -13,7 +13,7 @@ foreach(file ${DGAME_DPROPERTYBEHAVIORS_CONTROLBEHAVIORMESSAGES})
|
||||
endforeach()
|
||||
|
||||
add_library(dPropertyBehaviors OBJECT ${DGAME_DPROPERTYBEHAVIORS_SOURCES})
|
||||
target_link_libraries(dPropertyBehaviors PUBLIC tinyxml2 PRIVATE dDatabaseCDClient)
|
||||
target_link_libraries(dPropertyBehaviors PRIVATE dDatabaseCDClient)
|
||||
target_include_directories(dPropertyBehaviors PUBLIC "." "ControlBehaviorMessages"
|
||||
PRIVATE
|
||||
"${PROJECT_SOURCE_DIR}/dCommon/dClient" # ControlBehaviors.cpp uses AssetManager
|
||||
|
||||
@@ -14,4 +14,4 @@ target_include_directories(dNavigation PUBLIC "."
|
||||
"${PROJECT_SOURCE_DIR}/dGame/dEntity"
|
||||
"${PROJECT_SOURCE_DIR}/dNavigation/dTerrain" # via dNavMesh.cpp
|
||||
)
|
||||
target_link_libraries(dNavigation PUBLIC tinyxml2 PRIVATE Detour Recast dCommon)
|
||||
target_link_libraries(dNavigation PRIVATE Detour Recast dCommon)
|
||||
|
||||
@@ -87,6 +87,13 @@ void AuthPackets::SendHandshake(dServer* server, const SystemAddress& sysAddr, c
|
||||
server->Send(bitStream, sysAddr, false);
|
||||
}
|
||||
|
||||
std::string CleanReceivedString(const std::string& str) {
|
||||
std::string toReturn = str;
|
||||
const auto removed = std::ranges::find_if(toReturn, [](char c) { return isprint(c) == 0 && isblank(c) == 0; });
|
||||
toReturn.erase(removed, toReturn.end());
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
void AuthPackets::HandleLoginRequest(dServer* server, Packet* packet) {
|
||||
CINSTREAM_SKIP_HEADER;
|
||||
|
||||
@@ -111,11 +118,11 @@ void AuthPackets::HandleLoginRequest(dServer* server, Packet* packet) {
|
||||
|
||||
LUWString memoryStats(256);
|
||||
inStream.Read(memoryStats);
|
||||
LOG_DEBUG("Memory Stats [%s]", memoryStats.GetAsString().c_str());
|
||||
LOG_DEBUG("Memory Stats [%s]", CleanReceivedString(memoryStats.GetAsString()).c_str());
|
||||
|
||||
LUWString videoCard(128);
|
||||
inStream.Read(videoCard);
|
||||
LOG_DEBUG("VideoCard Info: [%s]", videoCard.GetAsString().c_str());
|
||||
LOG_DEBUG("VideoCard Info: [%s]", CleanReceivedString(videoCard.GetAsString()).c_str());
|
||||
|
||||
// Processor/CPU info
|
||||
uint32_t numOfProcessors;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#define _VARIADIC_MAX 10
|
||||
#include "dCommonVars.h"
|
||||
#include "dNetCommon.h"
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
enum class ServerType : uint32_t;
|
||||
enum class eLoginResponse : uint8_t;
|
||||
|
||||
@@ -8,7 +8,7 @@ set(DNET_SOURCES "AuthPackets.cpp"
|
||||
"ZoneInstanceManager.cpp")
|
||||
|
||||
add_library(dNet STATIC ${DNET_SOURCES})
|
||||
target_link_libraries(dNet PUBLIC magic_enum PRIVATE bcrypt MD5)
|
||||
target_link_libraries(dNet PRIVATE bcrypt MD5)
|
||||
target_include_directories(dNet PRIVATE
|
||||
"${PROJECT_SOURCE_DIR}/dCommon"
|
||||
"${PROJECT_SOURCE_DIR}/dCommon/dEnums"
|
||||
|
||||
@@ -12,7 +12,10 @@ void BaseFootRaceManager::OnFireEventServerSide(Entity* self, Entity* sender, st
|
||||
if (splitArguments.size() > 1) {
|
||||
|
||||
const auto eventName = splitArguments[0];
|
||||
const auto player = Game::entityManager->GetEntity(std::stoull(splitArguments[1]));
|
||||
auto playerId = GeneralUtils::TryParse<LWOOBJID>(splitArguments[1]);
|
||||
if (!playerId) return;
|
||||
|
||||
const auto player = Game::entityManager->GetEntity(playerId.value());
|
||||
|
||||
if (player != nullptr) {
|
||||
if (eventName == "updatePlayer") {
|
||||
|
||||
@@ -13,7 +13,7 @@ target_include_directories(WorldServer PRIVATE
|
||||
"${PROJECT_SOURCE_DIR}/dServer" # BinaryPathFinder.h
|
||||
)
|
||||
|
||||
target_link_libraries(WorldServer PUBLIC ${COMMON_LIBRARIES}
|
||||
target_link_libraries(WorldServer ${COMMON_LIBRARIES}
|
||||
dScripts
|
||||
dGameBase
|
||||
dComponents
|
||||
|
||||
@@ -1,152 +1,152 @@
|
||||
CREATE TABLE IF NOT EXISTS accounts (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(35) NOT NULL UNIQUE,
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
password TEXT NOT NULL,
|
||||
gm_level INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
locked BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
banned BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
play_key_id INT NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
mute_expire BIGINT UNSIGNED NOT NULL DEFAULT 0
|
||||
gm_level BIGINT NOT NULL DEFAULT 0,
|
||||
locked INTEGER NOT NULL DEFAULT FALSE,
|
||||
banned INTEGER NOT NULL DEFAULT FALSE,
|
||||
play_key_id INTEGER NOT NULL DEFAULT 0,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
mute_expire BIGINT NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS charinfo (
|
||||
id BIGINT NOT NULL PRIMARY KEY,
|
||||
account_id INT NOT NULL REFERENCES accounts(id),
|
||||
name VARCHAR(35) NOT NULL,
|
||||
pending_name VARCHAR(35) NOT NULL,
|
||||
needs_rename BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
prop_clone_id BIGINT UNSIGNED AUTO_INCREMENT UNIQUE,
|
||||
last_login BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
permission_map BIGINT UNSIGNED NOT NULL DEFAULT 0
|
||||
account_id INTEGER NOT NULL REFERENCES accounts(id),
|
||||
name TEXT NOT NULL,
|
||||
pending_name TEXT NOT NULL,
|
||||
needs_rename INTEGER NOT NULL DEFAULT FALSE,
|
||||
prop_clone_id BIGINT AUTO_INCREMENT UNIQUE,
|
||||
last_login BIGINT NOT NULL DEFAULT 0,
|
||||
permission_map BIGINT NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS charxml (
|
||||
id BIGINT NOT NULL PRIMARY KEY REFERENCES charinfo(id),
|
||||
xml_data LONGTEXT NOT NULL
|
||||
xml_data TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS command_log (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
character_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
command VARCHAR(256) NOT NULL
|
||||
command TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS friends (
|
||||
player_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
friend_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
best_friend BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
best_friend INTEGER NOT NULL DEFAULT FALSE,
|
||||
|
||||
PRIMARY KEY (player_id, friend_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS leaderboard (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
game_id INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
last_played TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
game_id INTEGER NOT NULL DEFAULT 0,
|
||||
last_played DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
character_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
time BIGINT UNSIGNED NOT NULL,
|
||||
score BIGINT UNSIGNED NOT NULL DEFAULT 0
|
||||
time BIGINT NOT NULL,
|
||||
score BIGINT NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS mail (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
sender_id INT NOT NULL DEFAULT 0,
|
||||
sender_name VARCHAR(35) NOT NULL DEFAULT '',
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
sender_id INTEGER NOT NULL DEFAULT 0,
|
||||
sender_name TEXT NOT NULL DEFAULT '',
|
||||
receiver_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
receiver_name VARCHAR(35) NOT NULL,
|
||||
time_sent BIGINT UNSIGNED NOT NULL,
|
||||
receiver_name TEXT NOT NULL,
|
||||
time_sent BIGINT NOT NULL,
|
||||
subject TEXT NOT NULL,
|
||||
body TEXT NOT NULL,
|
||||
attachment_id BIGINT NOT NULL DEFAULT 0,
|
||||
attachment_lot INT NOT NULL DEFAULT 0,
|
||||
attachment_lot INTEGER NOT NULL DEFAULT 0,
|
||||
attachment_subkey BIGINT NOT NULL DEFAULT 0,
|
||||
attachment_count INT NOT NULL DEFAULT 0,
|
||||
was_read BOOLEAN NOT NULL DEFAULT FALSE
|
||||
attachment_count INTEGER NOT NULL DEFAULT 0,
|
||||
was_read INTEGER NOT NULL DEFAULT FALSE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS object_id_tracker (
|
||||
last_object_id BIGINT UNSIGNED NOT NULL DEFAULT 0 PRIMARY KEY
|
||||
last_object_id BIGINT NOT NULL DEFAULT 0 PRIMARY KEY
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pet_names (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
pet_name TEXT NOT NULL,
|
||||
approved INT UNSIGNED NOT NULL
|
||||
approved INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS play_keys (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
key_string CHAR(19) NOT NULL UNIQUE,
|
||||
key_uses INT NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
key_string TEXT NOT NULL UNIQUE,
|
||||
key_uses INTEGER NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
active INTEGER NOT NULL DEFAULT TRUE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS properties (
|
||||
id BIGINT NOT NULL PRIMARY KEY,
|
||||
owner_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
template_id INT UNSIGNED NOT NULL,
|
||||
clone_id BIGINT UNSIGNED REFERENCES charinfo(prop_clone_id),
|
||||
template_id INTEGER NOT NULL,
|
||||
clone_id BIGINT REFERENCES charinfo(prop_clone_id),
|
||||
name TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
rent_amount INT NOT NULL,
|
||||
rent_amount INTEGER NOT NULL,
|
||||
rent_due BIGINT NOT NULL,
|
||||
privacy_option INT NOT NULL,
|
||||
mod_approved BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
privacy_option INTEGER NOT NULL,
|
||||
mod_approved INTEGER NOT NULL DEFAULT FALSE,
|
||||
last_updated BIGINT NOT NULL,
|
||||
time_claimed BIGINT NOT NULL,
|
||||
rejection_reason TEXT NOT NULL,
|
||||
reputation BIGINT UNSIGNED NOT NULL,
|
||||
zone_id INT NOT NULL
|
||||
reputation BIGINT NOT NULL,
|
||||
zone_id INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ugc (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
account_id INT NOT NULL REFERENCES accounts(id),
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
account_id INTEGER NOT NULL REFERENCES accounts(id),
|
||||
character_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
is_optimized BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
lxfml MEDIUMBLOB NOT NULL,
|
||||
bake_ao BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
is_optimized INTEGER NOT NULL DEFAULT FALSE,
|
||||
lxfml BLOB NOT NULL,
|
||||
bake_ao INTEGER NOT NULL DEFAULT FALSE,
|
||||
filename TEXT NOT NULL DEFAULT ('')
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS properties_contents (
|
||||
id BIGINT NOT NULL PRIMARY KEY,
|
||||
property_id BIGINT NOT NULL REFERENCES properties(id),
|
||||
ugc_id INT NULL REFERENCES ugc(id),
|
||||
lot INT NOT NULL,
|
||||
x FLOAT NOT NULL,
|
||||
y FLOAT NOT NULL,
|
||||
z FLOAT NOT NULL,
|
||||
rx FLOAT NOT NULL,
|
||||
ry FLOAT NOT NULL,
|
||||
rz FLOAT NOT NULL,
|
||||
rw FLOAT NOT NULL
|
||||
ugc_id INTEGER NULL REFERENCES ugc(id),
|
||||
lot INTEGER NOT NULL,
|
||||
x DOUBLE NOT NULL,
|
||||
y DOUBLE NOT NULL,
|
||||
z DOUBLE NOT NULL,
|
||||
rx DOUBLE NOT NULL,
|
||||
ry DOUBLE NOT NULL,
|
||||
rz DOUBLE NOT NULL,
|
||||
rw DOUBLE NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS activity_log (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
character_id BIGINT NOT NULL REFERENCES charinfo(id),
|
||||
activity INT NOT NULL,
|
||||
time BIGINT UNSIGNED NOT NULL,
|
||||
map_id INT NOT NULL
|
||||
activity INTEGER NOT NULL,
|
||||
time BIGINT NOT NULL,
|
||||
map_id INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bug_reports (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
body TEXT NOT NULL,
|
||||
client_version TEXT NOT NULL,
|
||||
other_player_id TEXT NOT NULL,
|
||||
selection TEXT NOT NULL,
|
||||
submitted TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP()
|
||||
submitted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS servers (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
ip TEXT NOT NULL,
|
||||
port INT NOT NULL,
|
||||
state INT NOT NULL,
|
||||
version INT NOT NULL DEFAULT 0
|
||||
port INTEGER NOT NULL,
|
||||
state INTEGER NOT NULL,
|
||||
version INTEGER NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
CREATE TABLE IF NOT EXISTS player_cheat_detections (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
account_id INT REFERENCES accounts(id),
|
||||
account_id INTEGER REFERENCES accounts(id),
|
||||
name TEXT REFERENCES charinfo(name),
|
||||
violation_msg TEXT NOT NULL,
|
||||
violation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
violation_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
violation_system_address TEXT NOT NULL
|
||||
);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
DROP TABLE IF EXISTS `player_cheat_detections`;
|
||||
CREATE TABLE IF NOT EXISTS player_cheat_detections (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
account_id INT REFERENCES accounts(id),
|
||||
account_id INTEGER REFERENCES accounts(id),
|
||||
name TEXT NOT NULL,
|
||||
violation_msg TEXT NOT NULL,
|
||||
violation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
violation_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
||||
violation_system_address TEXT NOT NULL
|
||||
);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
CREATE TABLE IF NOT EXISTS accounts_rewardcodes (
|
||||
account_id INT NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
|
||||
rewardcode INT NOT NULL,
|
||||
account_id INTEGER NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
|
||||
rewardcode INTEGER NOT NULL,
|
||||
PRIMARY KEY (account_id, rewardcode)
|
||||
);
|
||||
|
||||
@@ -1 +1 @@
|
||||
ALTER TABLE behaviors MODIFY behavior_info LONGTEXT DEFAULT NULL;
|
||||
ALTER TABLE behaviors MODIFY behavior_info TEXT DEFAULT NULL;
|
||||
|
||||
@@ -1 +1 @@
|
||||
ALTER TABLE bug_reports ADD reporter_id INT NOT NULL DEFAULT 0;
|
||||
ALTER TABLE bug_reports ADD reporter_id INTEGER NOT NULL DEFAULT 0;
|
||||
|
||||
@@ -1 +1 @@
|
||||
ALTER TABLE properties ADD COLUMN performance_cost DOUBLE(20, 15) DEFAULT 0.0;
|
||||
ALTER TABLE properties ADD COLUMN performance_cost DOUBLE DEFAULT 0.0;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
ALTER TABLE properties_contents
|
||||
ADD COLUMN model_name TEXT NOT NULL DEFAULT "",
|
||||
ADD COLUMN model_description TEXT NOT NULL DEFAULT "",
|
||||
ADD COLUMN behavior_1 INT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_2 INT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_3 INT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_4 INT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_5 INT NOT NULL DEFAULT 0;
|
||||
ADD COLUMN behavior_1 INTEGER NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_2 INTEGER NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_3 INTEGER NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_4 INTEGER NOT NULL DEFAULT 0,
|
||||
ADD COLUMN behavior_5 INTEGER NOT NULL DEFAULT 0;
|
||||
|
||||
UPDATE properties_contents SET model_name = CONCAT("Objects_", lot, "_name") WHERE model_name = "";
|
||||
CREATE TABLE IF NOT EXISTS behaviors (id INT NOT NULL, behavior_info TEXT NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS behaviors (id INTEGER NOT NULL, behavior_info TEXT NOT NULL);
|
||||
|
||||
@@ -1 +1 @@
|
||||
ALTER TABLE accounts MODIFY play_key_id INT DEFAULT 0;
|
||||
ALTER TABLE accounts MODIFY play_key_id INTEGER DEFAULT 0;
|
||||
|
||||
@@ -1 +1 @@
|
||||
ALTER TABLE accounts MODIFY play_key_id INT DEFAULT NULL;
|
||||
ALTER TABLE accounts MODIFY play_key_id INTEGER DEFAULT NULL;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
ALTER TABLE leaderboard
|
||||
ADD COLUMN tertiaryScore FLOAT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN numWins INT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN timesPlayed INT NOT NULL DEFAULT 1,
|
||||
MODIFY time INT NOT NULL DEFAULT 0;
|
||||
ADD COLUMN tertiaryScore DOUBLE NOT NULL DEFAULT 0,
|
||||
ADD COLUMN numWins INTEGER NOT NULL DEFAULT 0,
|
||||
ADD COLUMN timesPlayed INTEGER NOT NULL DEFAULT 1,
|
||||
MODIFY time INTEGER NOT NULL DEFAULT 0;
|
||||
|
||||
/* Can only ALTER one column at a time... */
|
||||
ALTER TABLE leaderboard CHANGE score primaryScore FLOAT NOT NULL DEFAULT 0;
|
||||
ALTER TABLE leaderboard CHANGE time secondaryScore FLOAT NOT NULL DEFAULT 0 AFTER primaryScore;
|
||||
ALTER TABLE leaderboard CHANGE score primaryScore DOUBLE NOT NULL DEFAULT 0;
|
||||
ALTER TABLE leaderboard CHANGE time secondaryScore DOUBLE NOT NULL DEFAULT 0 AFTER primaryScore;
|
||||
|
||||
/* A bit messy, but better than going through a bunch of code fixes all to be run once. */
|
||||
UPDATE leaderboard SET
|
||||
@@ -15,4 +15,4 @@ UPDATE leaderboard SET
|
||||
|
||||
/* Do this last so we dont update entry times erroneously */
|
||||
ALTER TABLE leaderboard
|
||||
CHANGE last_played last_played TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();
|
||||
CHANGE last_played last_played DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();
|
||||
|
||||
@@ -32,7 +32,7 @@ add_custom_command(TARGET dCommonTests POST_BUILD
|
||||
endif()
|
||||
|
||||
# Link needed libraries
|
||||
target_link_libraries(dCommonTests ${COMMON_LIBRARIES} GTest::gtest_main magic_enum)
|
||||
target_link_libraries(dCommonTests ${COMMON_LIBRARIES} GTest::gtest_main)
|
||||
|
||||
# Copy test files to testing directory
|
||||
add_subdirectory(TestBitStreams)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "Game.h"
|
||||
#include "MessageType/Game.h"
|
||||
#include "MessageType/World.h"
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
#define ENUM_EQ(e, y, z)\
|
||||
LOG("%s %s", StringifiedEnum::ToString(static_cast<e>(y)).data(), #z);\
|
||||
|
||||
@@ -23,7 +23,7 @@ add_custom_command(TARGET dGameTests POST_BUILD
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
endif()
|
||||
|
||||
target_link_libraries(dGameTests ${COMMON_LIBRARIES} magic_enum GTest::gtest_main
|
||||
target_link_libraries(dGameTests ${COMMON_LIBRARIES} GTest::gtest_main
|
||||
dGame dScripts dPhysics Detour Recast tinyxml2 dWorldServer dZoneManager dChatFilter dNavigation)
|
||||
|
||||
# Discover the tests
|
||||
|
||||
30
thirdparty/CMakeLists.txt
vendored
30
thirdparty/CMakeLists.txt
vendored
@@ -1,12 +1,17 @@
|
||||
# Source Code for recast
|
||||
# add_subdirectory(recastnavigation)
|
||||
add_subdirectory(recastnavigation)
|
||||
|
||||
# Turn off tinyxml2 testing
|
||||
set(tinyxml2_BUILD_TESTING OFF)
|
||||
# Source Code for tinyxml2
|
||||
add_subdirectory(tinyxml2)
|
||||
|
||||
# Source Code for libbcrypt. Uses a file glob instead to get around Windows build issues.
|
||||
file(
|
||||
GLOB SOURCES_LIBBCRYPT
|
||||
LIST_DIRECTORIES false
|
||||
RELATIVE "${DLU_THIRDPARTY_SOURCE_DIR}"
|
||||
${DLU_THIRDPARTY_SOURCE_DIR}/libbcrypt/src/*.c
|
||||
file(
|
||||
GLOB SOURCES_LIBBCRYPT
|
||||
LIST_DIRECTORIES false
|
||||
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libbcrypt/src/*.c
|
||||
)
|
||||
|
||||
add_library(bcrypt ${SOURCES_LIBBCRYPT})
|
||||
@@ -15,12 +20,12 @@ add_library(bcrypt ${SOURCES_LIBBCRYPT})
|
||||
# fortunately they are only needed for building the libbcrypt directory and nothing else, so these are marked private.
|
||||
|
||||
if(NOT WIN32)
|
||||
target_include_directories(bcrypt PRIVATE "libbcrypt/include/bcrypt")
|
||||
target_include_directories(bcrypt PRIVATE "libbcrypt/include/bcrypt")
|
||||
endif()
|
||||
|
||||
# Need to define this on Clang and GNU for 'strdup' support
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
||||
target_compile_definitions(bcrypt PRIVATE "_POSIX_C_SOURCE=200809L")
|
||||
target_compile_definitions(bcrypt PRIVATE "_POSIX_C_SOURCE=200809L")
|
||||
endif()
|
||||
|
||||
target_include_directories(bcrypt INTERFACE "libbcrypt/include")
|
||||
@@ -29,12 +34,21 @@ target_include_directories(bcrypt PRIVATE "libbcrypt/src")
|
||||
# Source code for sqlite
|
||||
add_subdirectory(SQLite)
|
||||
|
||||
# Source code for magic_enum
|
||||
add_subdirectory(magic_enum)
|
||||
|
||||
# Create our third party library objects
|
||||
add_subdirectory(raknet)
|
||||
|
||||
# Download Backtrace if configured
|
||||
if(UNIX AND NOT APPLE)
|
||||
include(FetchContent)
|
||||
if (${INCLUDE_BACKTRACE} AND ${COMPILE_BACKTRACE})
|
||||
FetchContent_Declare(
|
||||
backtrace
|
||||
GIT_REPOSITORY https://github.com/ianlancetaylor/libbacktrace.git
|
||||
)
|
||||
|
||||
FetchContent_MakeAvailable(backtrace)
|
||||
|
||||
if (NOT EXISTS ${backtrace_SOURCE_DIR}/.libs)
|
||||
|
||||
1
thirdparty/libbcrypt
vendored
Submodule
1
thirdparty/libbcrypt
vendored
Submodule
Submodule thirdparty/libbcrypt added at d6523c370d
1
thirdparty/magic_enum
vendored
Submodule
1
thirdparty/magic_enum
vendored
Submodule
Submodule thirdparty/magic_enum added at e55b9b54d5
1
thirdparty/recastnavigation
vendored
Submodule
1
thirdparty/recastnavigation
vendored
Submodule
Submodule thirdparty/recastnavigation added at c5cbd53024
1
thirdparty/tinyxml2
vendored
Submodule
1
thirdparty/tinyxml2
vendored
Submodule
Submodule thirdparty/tinyxml2 added at a977397684
Reference in New Issue
Block a user