1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +00:00

Merge branch 'develop' of https://github.com/SapphireMordred/Sapphire into develop

This commit is contained in:
Maru 2019-01-19 17:44:20 -02:00
commit ab66162291
708 changed files with 34680 additions and 22369 deletions

View file

@ -21,8 +21,9 @@ before_build:
- mkdir build
- cd build
- cmake .. -G "Visual Studio 15 2017 Win64"
- cmake --build . --target ALL_BUILD --config Debug
- cmake --build . --target ALL_BUILD --config Release
build_script:
- cd ..
- cd bin
- copy "C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.dll" libmysql.dll
- sh sql_import.sh

33
.gitignore vendored
View file

@ -1,12 +1,31 @@
# Output Directory
[Bb]in/
# Output Directory
[Bb]in/*.exe
[Bb]in/*.pdb
[Bb]in/api
[Bb]in/world
[Bb]in/lobby
[Bb]in/dbm
src/tools/[Bb]in/*.exe
src/tools/[Bb]in/*.pdb
src/tools/[Bb]in/discovery_parser
src/tools/[Bb]in/event_object_parser
src/tools/[Bb]in/exd_common_gen
src/tools/[Bb]in/exd_struct_test
src/tools/[Bb]in/mob_parse
src/tools/[Bb]in/pcb_reader2
src/tools/[Bb]in/quest_parse
src/tools/[Bb]in/exd_struct_gen
# Script Directory
# TODO: Sperate script directory from bin
!bin/scripts/**/*
# decompiled scripts
src/tools/bin/generated/*
# Build Directory
build/
cmake-build-*/
# Prerequisites
*.d
@ -64,10 +83,6 @@ CTestTestfile.cmake
# Binary Template
*.bt
# Boost
/lib/boost_1_63_0
src/libraries/external/boost_*
# EasyHook
!EasyHook32.dll
!EasyHook32Svc.exe
@ -113,7 +128,7 @@ src/common/Version\.cpp
.mtime_cache
# generated script loader files
src/servers/Scripts/*/ScriptLoader.cpp
**/ScriptLoader.cpp
# cotire generated files/folders
cotire/
@ -125,3 +140,7 @@ cotire/
# doxygen output folder
doxygen/generated/
doxygen/*.tmp
# ignore config directory contents except the default file
config/*.ini
!config/config.ini.default

View file

@ -13,9 +13,7 @@ matrix:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-6.0
packages:
- clang-6.0
- g++-7
env:
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
@ -29,8 +27,7 @@ cache:
# Setup build matrix and dependencies
before_install:
- eval "${MATRIX_EVAL}"
- gem install --no-ri --no-rdoc mtime_cache
- sudo add-apt-repository -y ppa:rexut/recoil
- gem install mtime_cache --no-document
- sudo apt-get update
- sudo apt-get install -y libmysqlclient-dev
@ -41,5 +38,5 @@ script:
- mkdir -p build
- cd build
- cmake .. && make -j 3
- cd ..
- cd bin
- bash sql_import.sh

View file

@ -2,19 +2,27 @@ cmake_policy( SET CMP0014 NEW )
cmake_minimum_required( VERSION 3.0.2 )
project( Sapphire )
set( CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin )
set( CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${CMAKE_SOURCE_DIR}/cmake )
set( EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin )
set( LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin )
set( EXECUTABLE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin )
#####################################
# Copy needed files to build-folder #
#####################################
add_custom_target( copy_runtime_files ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/config ${CMAKE_BINARY_DIR}/bin/config
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/sql ${CMAKE_BINARY_DIR}/bin/sql
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/web ${CMAKE_BINARY_DIR}/bin/web
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/sql_import.sh ${CMAKE_BINARY_DIR}/bin/sql_import.sh )
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake )
##########################################################################
# Dependencies and compiler settings
include( "cmake/mysql.cmake" )
######################################
# Dependencies and compiler settings #
######################################
include( "cmake/paths.cmake" )
#include( "cmake/mysql.cmake" )
include( "cmake/compiler.cmake" )
include( "cmake/cotire.cmake" )
##############################
# Git #
##############################
@ -29,21 +37,25 @@ configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/src/common/Version.cpp.in"
##############################
find_package( MySQL )
##########################################################################
##############################
# Dependencies #
##############################
add_subdirectory( "deps/zlib" )
add_subdirectory( "deps/MySQL" )
add_subdirectory( "deps/datReader" )
add_subdirectory( "deps/mysqlConnector" )
##############################
# Main Sapphire Components #
##############################
add_subdirectory( "src/common" )
add_subdirectory( "src/api" )
add_subdirectory( "src/lobby" )
add_subdirectory( "src/world" )
add_subdirectory( "src/scripts" )
add_subdirectory( "src/dbm" )
add_subdirectory( "src/servers" )
#add_subdirectory( "src/dbm" )
add_subdirectory( "src/tools/exd_common_gen" )
add_subdirectory( "src/tools/exd_struct_gen" )
add_subdirectory( "src/tools/exd_struct_test" )
add_subdirectory( "src/tools/quest_parser" )
add_subdirectory( "src/tools/discovery_parser" )
add_subdirectory( "src/tools/mob_parse" )
add_subdirectory( "src/tools/pcb_reader" )
add_subdirectory( "src/tools/event_object_parser" )
##############################
# Tools #
##############################
add_subdirectory( "src/tools" )

View file

@ -1,22 +1,6 @@
{
// See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file.
"configurations": [
{
"name": "x86-Debug",
"generator": "Visual Studio 15 2017",
"configurationType": "Debug",
"buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}",
"cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"",
"buildCommandArgs": "-m -v:minimal"
},
{
"name": "x86-Release",
"generator": "Visual Studio 15 2017",
"configurationType": "Release",
"buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-m -v:minimal"
},
{
"name": "x64-Debug",
"generator": "Visual Studio 15 2017 Win64",

View file

@ -5,7 +5,7 @@
</p>
[![Discord Server](https://img.shields.io/badge/discord-Sapphire-7289DA.svg)](https://discord.gg/xxcdCER)
[![Linux Build Status](https://travis-ci.org/SapphireMordred/Sapphire.svg?branch=master)](https://travis-ci.org/SapphireMordred/Sapphire)
[![Linux Build Status](https://api.travis-ci.org/SapphireServer/Sapphire.svg?branch=master)](https://travis-ci.org/SapphireServer/Sapphire)
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/lil7lxa3ty165emm?svg=true)](https://ci.appveyor.com/project/SapphireMordred/Sapphire)

View file

@ -1,58 +0,0 @@
[Database]
Host = 127.0.0.1
Port = 3306
Database = sapphire
Username = sapphire
Password =
SyncThreads = 2
AsyncThreads = 2
[GlobalParameters]
ServerSecret = default
DataPath = C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack
[GlobalNetwork]
; Values definining how Users and other servers will access - these have to be set to your public IP when running a public server
ZoneHost = 127.0.0.1
ZonePort = 54992
LobbyHost = 127.0.0.1
LobbyPort = 54994
RestHost = 127.0.0.1
RestPort = 80
[Lobby]
WorldID = 67
AllowNoSessionConnect = false
WorldName = Sapphire
[LobbyNetwork]
ListenIp = 0.0.0.0
ListenPort = 54994
[CharacterCreation]
DefaultGMRank = 255
[RestNetwork]
ListenIp = 0.0.0.0
ListenPort = 80
[Scripts]
; where compiled script modules are located
Path = ./compiledscripts/
; relative to Path, where we copy and load modules from
CachePath = ./cache/
; whether we should detect changes to script modules and reload them
HotSwap = true
[Network]
DisconnectTimeout = 20
[ZoneNetwork]
ListenIp = 0.0.0.0
ListenPort = 54992
[General]
; Sent on login - each line must be shorter than 307 characters, split lines with ';'
MotD = Welcome to Sapphire!;This is a very good server;You can change these messages by editing General.MotD in config/zone.ini

Binary file not shown.

View file

@ -64,12 +64,6 @@ if( UNIX )
endif( UNIX )
if( WIN32 )
# read environment variables and change \ to /
SET(PROGRAM_FILES_32 $ENV{ProgramFiles})
if (${PROGRAM_FILES_32})
STRING(REPLACE "\\\\" "/" PROGRAM_FILES_32 ${PROGRAM_FILES_32})
endif(${PROGRAM_FILES_32})
SET(PROGRAM_FILES_64 $ENV{ProgramW6432})
if (${PROGRAM_FILES_64})
STRING(REPLACE "\\\\" "/" PROGRAM_FILES_64 ${PROGRAM_FILES_64})
@ -86,33 +80,12 @@ find_path(MYSQL_INCLUDE_DIR
/usr/local/include
/usr/local/include/mysql
/usr/local/mysql/include
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/include"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/include"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/include"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/include"
"${PROGRAM_FILES_32}/MySQL/include"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/include"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/include"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/include"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/include"
"${PROGRAM_FILES_64}/MySQL/include"
"C:/MySQL/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/include"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.7/include"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.6/include"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.5/include"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.1/include"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.7/include"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.6/include"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.5/include"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.1/include"
"c:/msys/local/include"
"$ENV{MYSQL_ROOT}/include"
DOC
@ -142,53 +115,24 @@ if( WIN32 )
libmysql
PATHS
${MYSQL_ADD_LIBRARIES_PATH}
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/lib"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/lib"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/lib"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/lib"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/lib/opt"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/lib/opt"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/lib/opt"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/lib/opt"
"${PROGRAM_FILES_32}/MySQL/lib"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/lib"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/lib"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/lib"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib/opt"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/lib/opt"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/lib/opt"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/lib/opt"
"${PROGRAM_FILES_64}/MySQL/lib"
"C:/MySQL/lib/debug"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/lib/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.7/lib/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.6/lib/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.5/lib/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.1/lib/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.7/lib/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.6/lib/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.5/lib/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.1/lib/opt"
"c:/msys/local/include"
"$ENV{MYSQL_ROOT}/lib"
DOC "Specify the location of the mysql library here."
)
STRING( REGEX REPLACE "(.lib)$" ".dll" MYSQL_DLL ${MYSQL_LIBRARY} )
file(COPY ${MYSQL_DLL}
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/bin/" )
endif( WIN32 )
# On Windows you typically don't need to include any extra libraries
@ -223,49 +167,14 @@ endif( UNIX )
if( WIN32 )
find_program(MYSQL_EXECUTABLE mysql
PATHS
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/bin"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/bin"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/bin"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/bin"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/bin/opt"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/bin/opt"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/bin/opt"
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/bin/opt"
"${PROGRAM_FILES_32}/MySQL/bin"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/bin"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/bin"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/bin"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin/opt"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/bin/opt"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/bin/opt"
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/bin/opt"
"${PROGRAM_FILES_64}/MySQL/bin"
"C:/MySQL/bin/debug"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.5;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.6;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.5;Location]/bin/opt"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/bin/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.7/bin/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.6/bin/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.5/bin/opt"
"$ENV{ProgramFiles}/MySQL/MySQL Server 5.1/bin/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.7/bin/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.6/bin/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.5/bin/opt"
"$ENV{SystemDrive}/MySQL/MySQL Server 5.1/bin/opt"
"c:/msys/local/include"
"$ENV{MYSQL_ROOT}/bin"
DOC

View file

@ -1,31 +1,34 @@
if(UNIX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
if( UNIX )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -fPIC" )
else()
add_definitions(-D_WIN32_WINNT=0x601)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-DNOMINMAX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
add_definitions( -D_WIN32_WINNT=0x601 )
add_definitions( -D_CRT_SECURE_NO_WARNINGS )
add_definitions( -DNOMINMAX )
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc" )
message( STATUS "Enabling Build with Multiple Processes.." )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4834" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17" )
set( CMAKE_CXX_STANDARD 17 )
set( CMAKE_CXX_STANDARD_REQUIRED ON )
set( CMAKE_CXX_EXTENSIONS ON )
if( CMAKE_BUILD_TYPE STREQUAL "Debug" )
# disabling SAFESEH
message(STATUS "Disabling Safe Exception Handlers..")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
message( STATUS "Disabling Safe Exception Handlers.." )
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO" )
# edit and continue
message(STATUS "Enabling Edit and Continue..")
add_definitions(/Zi)
message( STATUS "Enabling Edit and Continue.." )
add_definitions( /Zi )
# incremental linking
message(STATUS "Enabling Incremental Linking..")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL")
# enable building with multiple processes
message(STATUS "Enabling Build with Multiple Processes..")
add_definitions(/MP)
message( STATUS "Enabling Incremental Linking.." )
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL" )
endif()
endif()

View file

@ -1,39 +0,0 @@
if(UNIX)
find_path(MYSQL_INCLUDE_DIR mysql.h
/usr/include/mysql
/usr/local/include/mysql
/opt/mysql/mysql/include
/opt/mysql/mysql/include/mysql
/opt/mysql/include
/opt/local/include/mysql5
/usr/local/mysql/include
/usr/local/mysql/include/mysql
$ENV{ProgramFiles}/MySQL/*/include
$ENV{SystemDrive}/MySQL/*/include
${LIBRARY_DIR}/external/MySQL/
)
if(MYSQL_INCLUDE_DIR)
set(MYSQL_FOUND TRUE)
include_directories(${MYSQL_INCLUDE_DIR})
endif(MYSQL_INCLUDE_DIR)
if(MYSQL_FOUND)
message(STATUS "MySQL include dir: ${MYSQL_INCLUDE_DIR}")
else(MYSQL_FOUND)
message(FATAL_ERROR "Could not find MySQL headers.")
endif(MYSQL_FOUND)
else()
include_directories("${LIBRARY_DIR}/external/MySQL/")
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
# 32 bit link
link_directories(${LIBRARY_DIR}/external/MySQL/x86)
link_directories(${LIBRARY_DIR}/external/zlib/x86)
else()
# 64 bit link
link_directories(${LIBRARY_DIR}/external/MySQL/x64)
link_directories(${LIBRARY_DIR}/external/zlib/x64)
endif()
endif()

14
cmake/paths.cmake Normal file
View file

@ -0,0 +1,14 @@
set( EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin )
set( LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
if( WIN32 )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/bin/" )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/bin/" )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_BINARY_DIR}/bin/" )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_BINARY_DIR}/bin/" )
set( VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin/" )
endif()
# Create log folder
file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin/log )

3
config/api.ini.default Normal file
View file

@ -0,0 +1,3 @@
[Network]
ListenIp = 0.0.0.0
ListenPort = 80

25
config/global.ini.default Normal file
View file

@ -0,0 +1,25 @@
[Database]
Host = 127.0.0.1
Port = 3306
Database = sapphire
Username = sapphire
Password =
SyncThreads = 2
AsyncThreads = 2
[General]
ServerSecret = default
DataPath = C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack
WorldID = 67
DefaultGMRank = 255
[Network]
; Values definining how Users and other servers will access - these have to be set to your public IP when running a public server
ZoneHost = 127.0.0.1
ZonePort = 54992
LobbyHost = 127.0.0.1
LobbyPort = 54994
RestHost = 127.0.0.1
RestPort = 80

7
config/lobby.ini.default Normal file
View file

@ -0,0 +1,7 @@
[Lobby]
AllowNoSessionConnect = false
WorldName = Sapphire
[Network]
ListenIp = 0.0.0.0
ListenPort = 54994

20
config/world.ini.default Normal file
View file

@ -0,0 +1,20 @@
[Scripts]
; where compiled script modules are located
Path = ./compiledscripts/
; relative to Path, where we copy and load modules from
CachePath = ./cache/
; whether we should detect changes to script modules and reload them
HotSwap = true
[Network]
ListenIp = 0.0.0.0
ListenPort = 54992
DisconnectTimeout = 20
[General]
; Sent on login - each line must be shorter than 307 characters, split lines with ';'
MotD = Welcome to Sapphire!;This is a very good server;You can change these messages by editing General.MotD in config/config.ini
[Housing]
; Set the default estate name. {0} will be replaced with the plot number
DefaultEstateName = Estate ${0}

View file

@ -10,12 +10,6 @@ set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
add_library( xivdat ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES} )
set_target_properties( xivdat PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
)
if (UNIX)
target_link_libraries( xivdat PUBLIC dl )
target_link_libraries( xivdat PUBLIC z )

104
deps/datReader/Exd.cpp vendored
View file

@ -2,7 +2,7 @@
#include "bparse.h"
#include "stream.h"
#include <fstream>
#include "Exh.h"
using xiv::utils::bparse::extract;
@ -81,6 +81,105 @@ namespace xiv
{
}
const std::vector<Field> Exd::get_row( uint32_t id, uint32_t subRow )
{
auto cacheEntryIt = _idCache.find( id );
if( cacheEntryIt == _idCache.end() )
throw std::runtime_error( "Id not found: " + std::to_string( id ) );
// Iterates over all the files
const uint32_t member_count = _exh->get_members().size();
auto& file_ptr = cacheEntryIt->second.file;
std::vector< char > dataCpy = file_ptr->get_data_sections().front();
std::istringstream iss( std::string( dataCpy.begin(), dataCpy.end() ) );
// Get the vector fields for the given record and preallocate it
auto fields = _data[id];
fields.reserve( member_count );
iss.seekg( cacheEntryIt->second.offset + 6 );
uint8_t subRows = *reinterpret_cast< uint8_t* >( &dataCpy[ cacheEntryIt->second.offset + 5 ] );
if( subRow >= subRows )
throw std::runtime_error( "Out of bounds sub-row!" );
int offset = cacheEntryIt->second.offset + 6 + ( subRow * _exh->get_header().data_offset + 2 * ( subRow + 1 ) );
for( auto& member_entry : _exh->get_exh_members() )
{
// Seek to the position of the member to extract.
// 6 is because we have uint32_t/uint16_t at the start of each record
iss.seekg( offset + member_entry.offset );
// Switch depending on the type to extract
switch( member_entry.type )
{
case DataType::string:
// Extract the offset to the actual string
// Seek to it then extract the actual string
{
throw std::runtime_error( "String not implemented for variant 2!" );
//auto string_offset = extract<uint32_t>( iss, "string_offset", false );
//iss.seekg( cacheEntryIt->second.offset + 6 + _exh->get_header().data_offset + string_offset );
//fields.emplace_back( utils::bparse::extract_cstring( iss, "string" ) );
}
break;
case DataType::boolean:
fields.emplace_back( extract<bool>( iss, "bool" ) );
break;
case DataType::int8:
fields.emplace_back( extract<int8_t>( iss, "int8_t" ) );
break;
case DataType::uint8:
fields.emplace_back( extract<uint8_t>( iss, "uint8_t" ) );
break;
case DataType::int16:
fields.emplace_back( extract<int16_t>( iss, "int16_t", false ) );
break;
case DataType::uint16:
fields.emplace_back( extract<uint16_t>( iss, "uint16_t", false ) );
break;
case DataType::int32:
fields.emplace_back( extract<int32_t>( iss, "int32_t", false ) );
break;
case DataType::uint32:
fields.emplace_back( extract<uint32_t>( iss, "uint32_t", false ) );
break;
case DataType::float32:
fields.emplace_back( extract<float>( iss, "float", false ) );
break;
case DataType::uint64:
fields.emplace_back( extract<uint64_t>( iss, "uint64_t", false ) );
break;
default:
auto type = static_cast< uint16_t >( member_entry.type );
if( type < 0x19 || type > 0x20 )
throw std::runtime_error("Unknown DataType: " + std::to_string( type ));
uint64_t val = extract< uint64_t >( iss, "bool" );
int32_t shift = type - 0x19;
int32_t i = 1 << shift;
val &= i;
fields.emplace_back( ( val & i ) == i );
break;
}
}
return fields;
}
const std::vector<Field> Exd::get_row( uint32_t id )
{
@ -98,6 +197,9 @@ namespace xiv
// Get the vector fields for the given record and preallocate it
auto fields = _data[id];
fields.reserve( member_count );
iss.seekg( cacheEntryIt->second.offset + 6 );
uint8_t subRows = *reinterpret_cast< uint8_t* >( &dataCpy[ cacheEntryIt->second.offset + 5 ] );
for( auto& member_entry : _exh->get_exh_members() )
{

View file

@ -47,6 +47,8 @@ public:
// Get a row by its id
const std::vector<Field> get_row(uint32_t id);
// Get a row by its id and sub-row
const std::vector<Field> get_row(uint32_t id, uint32_t subRow);
// Get all rows
const std::map<uint32_t, std::vector<Field>>& get_rows();

View file

@ -31,6 +31,9 @@ namespace xiv
uint16_t field_count;
uint16_t exd_count;
uint16_t language_count;
uint16_t unknown1;
uint8_t u2;
uint8_t variant;
};
struct ExhMember

View file

@ -9,18 +9,6 @@ set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
add_library( mysqlConnector ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES} )
set_target_properties( mysqlConnector PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
)
target_include_directories( mysqlConnector PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
if(UNIX)
target_include_directories( mysqlConnector PUBLIC "/usr/include/mysql/" )
else()
target_include_directories( mysqlConnector PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../MySQL/" )
endif()
target_link_libraries( mysqlConnector PUBLIC mysql )
#cotire(mysqlConnector)

View file

@ -119,7 +119,13 @@ protected:
// keep watching for modifications every ms milliseconds
auto ms = std::chrono::milliseconds( 500 );
while( mWatching ) {
if( mFileWatchers.empty() )
{
std::this_thread::sleep_for( ms );
continue;
}
do {
// iterate through each watcher and check for modification
std::lock_guard<std::mutex> lock( mMutex );
auto end = mFileWatchers.end();

View file

@ -790,7 +790,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = ../src/servers ../src/common pages/
INPUT = pages/ ../src/api ../src/common ../src/dbm ../src/lobby ../src/world
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

View file

@ -1,54 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `dbaccounts`
--
DROP TABLE IF EXISTS `accounts`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `accounts` (
`account_id` int(11) NOT NULL DEFAULT '0',
`account_name` varchar(255) COLLATE latin1_general_ci NOT NULL,
`account_pass` varchar(255) COLLATE latin1_general_ci NOT NULL,
`account_created` int(11) NOT NULL DEFAULT '0',
`account_status` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `dbaccounts`
--
LOCK TABLES `accounts` WRITE;
/*!40000 ALTER TABLE `accounts` DISABLE KEYS */;
INSERT INTO `accounts` VALUES (1,'test','CY9rzUYh03PK3k6DJie09g==',0,2);
/*!40000 ALTER TABLE `accounts` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:06

View file

@ -1,278 +0,0 @@
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Erstellungszeit: 13. Sep 2018 um 22:11
-- Server-Version: 10.1.19-MariaDB
-- PHP-Version: 5.6.28
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Datenbank: `sapphire`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `bnpctemplate`
--
DROP TABLE IF EXISTS `bnpctemplate`;
CREATE TABLE `bnpctemplate` (
`Id` int(11) NOT NULL,
`Name` varchar(32) NOT NULL,
`bNPCBaseId` int(10) DEFAULT NULL,
`bNPCNameId` int(10) NOT NULL,
`mainWeaponModel` bigint(20) DEFAULT NULL,
`secWeaponModel` bigint(20) DEFAULT NULL,
`aggressionMode` int(3) DEFAULT NULL,
`enemyType` int(3) DEFAULT NULL,
`pose` int(3) DEFAULT NULL,
`modelChara` int(5) DEFAULT NULL,
`displayFlags` int(10) DEFAULT NULL,
`Look` binary(26) DEFAULT NULL,
`Models` binary(40) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Daten für Tabelle `bnpctemplate`
--
INSERT INTO `bnpctemplate` (`Id`, `Name`, `bNPCBaseId`, `bNPCNameId`, `mainWeaponModel`, `secWeaponModel`, `aggressionMode`, `enemyType`, `pose`, `modelChara`, `displayFlags`, `Look`, `Models`) VALUES
(1, 'littleladybug_49', 49, 49, 0, 0, 1, 4, 4, 57, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(2, 'beecloud_57', 57, 395, 0, 0, 1, 4, 4, 60, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(3, 'watersprite_59', 59, 56, 0, 0, 1, 4, 4, 385, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(4, 'tinymandragora_118', 118, 405, 0, 0, 1, 4, 4, 297, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(5, 'wildjackal_138', 138, 399, 0, 0, 2, 4, 4, 160, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(6, 'woundedaurochs_323', 323, 358, 0, 0, 2, 4, 4, 138, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(7, 'megalocrab_326', 326, 561, 0, 0, 1, 4, 4, 148, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(8, 'lostlamb_338', 338, 392, 0, 0, 1, 4, 4, 287, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(9, 'pukhatchling_341', 341, 401, 0, 0, 1, 4, 4, 130, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(10, 'bogy_342', 342, 404, 0, 0, 1, 4, 4, 264, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(11, 'wharfrat_347', 347, 417, 0, 0, 1, 4, 4, 24, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(12, 'groundedpirate_348', 348, 421, 4297654473, 8590262373, 2, 4, 4, 0, 0, 0x0100013201050601623b32000001013b83010102004b004b0001, 0x170032000a000512000001000a000100080059000000000000000000000000000000000000000000),
(13, 'groundedraider_349', 349, 418, 8591966609, 0, 2, 4, 4, 0, 0, 0x0100013201040c01300305000001010304040302004b00320001, 0x170032000a000512000001000a000100080059000000000000000000000000000000000000000000),
(14, 'CaptainPetyrPigeontoe_350', 350, 419, 8591966609, 0, 2, 4, 4, 0, 0, 0x0100014b010304016b3b2b000001023b83000200006400320001, 0x170032000a000512000001000a000100080059000000000000000000000000000000000000000000),
(15, 'pugil_383', 383, 640, 0, 0, 1, 4, 4, 356, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(16, 'wespe_385', 385, 641, 0, 0, 1, 4, 4, 359, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(17, 'goblingambler_769', 769, 3099, 4297588937, 0, 1, 4, 4, 6, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(18, 'strikingdummy_901', 901, 541, 0, 0, 1, 4, 0, 480, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(19, 'mosslessgoobbue_1447', 1447, 354, 0, 0, 1, 4, 4, 198, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(20, 'SkogsFru_3184', 3184, 2928, 0, 0, 1, 4, 0, 57, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(21, 'galago_5', 5, 408, 0, 0, 1, 4, 4, 31, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(22, 'nestingbuzzard_12', 12, 299, 0, 0, 1, 4, 4, 39, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(23, 'cavebat_38', 38, 364, 0, 0, 1, 4, 4, 98, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(24, 'windsprite_133', 133, 115, 0, 0, 1, 4, 4, 383, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(25, 'lightningsprite_135', 135, 117, 0, 0, 1, 4, 4, 384, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(26, 'Morabymole_205', 205, 409, 0, 0, 1, 4, 4, 282, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(27, 'firefly_306', 306, 129, 0, 0, 1, 4, 4, 78, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(28, 'rivertoad_313', 313, 349, 0, 0, 1, 4, 4, 126, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(29, 'aurelia_324', 324, 563, 0, 0, 1, 4, 4, 279, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(30, 'wilddodo_339', 339, 393, 0, 0, 1, 4, 4, 173, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(31, 'packrat_351', 351, 1101, 0, 0, 2, 4, 4, 26, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(32, 'koboldpotman_751', 751, 378, 4297588937, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(33, 'kobolddustman_752', 752, 368, 4295033233, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000200010002000000000000000000000000000000000000000000000000000000000000000000),
(34, 'koboldsupplicant_754', 754, 372, 4295951237, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000300010003000000000000000000000000000000000000000000000000000000000000000000),
(35, 'Qiqirneggdigger_771', 771, 350, 0, 0, 2, 4, 4, 14, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(36, 'Cepheus_855', 855, 1058, 0, 0, 2, 4, 4, 279, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(37, 'Barbastelle_3185', 3185, 2929, 0, 0, 1, 4, 0, 98, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(38, 'grassraptor_2', 2, 411, 0, 0, 2, 4, 4, 96, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(39, 'gigantoad_26', 26, 26, 0, 0, 2, 4, 4, 126, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(40, '2ndCohorthoplomachus_55', 55, 1821, 17180065993, 12885295205, 2, 4, 4, 0, 0, 0x0100013201020401110505000000030580040101001900320000, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(41, '2ndCohortlaquearius_61', 61, 1822, 12884967825, 0, 2, 4, 4, 0, 0, 0x0100013201010201aa9206000000029202000302003200320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(42, '2ndCohorteques_62', 62, 1823, 12885230069, 0, 2, 4, 4, 0, 0, 0x02000132030203013c9236000000019201050300003201320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(43, '2ndCohortsecutor_63', 63, 1824, 21475033389, 21475033439, 2, 4, 4, 0, 0, 0x0100013201010701984706000000024701020302003200320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(44, '2ndCohortsignifer_64', 64, 1825, 30064837609, 0, 2, 4, 4, 0, 0, 0x0100013201050301113b27000000043b850103000032004b0007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(45, 'junglecoeurl_117', 117, 352, 0, 0, 2, 4, 4, 65, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(46, 'dungmidgeswarm_136', 136, 396, 0, 0, 1, 4, 4, 58, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(47, 'giantpelican_178', 178, 366, 0, 0, 2, 4, 4, 154, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(48, '2ndCohortvanguard_201', 201, 1826, 0, 0, 2, 4, 4, 214, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(49, 'Bloodshorebell_312', 312, 361, 0, 0, 2, 4, 4, 280, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(50, 'apkallu_314', 314, 341, 0, 0, 1, 4, 4, 190, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(51, 'goobbue_320', 320, 353, 0, 0, 1, 4, 4, 198, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(52, 'mildewedgoobbue_321', 321, 355, 0, 0, 2, 4, 4, 198, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(53, 'largebuffalo_322', 322, 1313, 0, 0, 2, 4, 4, 138, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(54, 'snipper_325', 325, 560, 0, 0, 2, 4, 4, 149, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(55, 'koboldpatrolman_328', 328, 379, 8592556233, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(56, 'koboldpitman_329', 329, 369, 4295033233, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000200010002000000000000000000000000000000000000000000000000000000000000000000),
(57, 'koboldmissionary_331', 331, 373, 4295951237, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000300010003000000000000000000000000000000000000000000000000000000000000000000),
(58, 'corkbulb_384', 384, 684, 0, 0, 1, 4, 4, 358, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(59, 'colibri_386', 386, 639, 0, 0, 2, 4, 4, 360, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(60, 'BloodyMary_3186', 3186, 2930, 0, 0, 1, 4, 0, 190, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(61, 'arborbuzzard_12', 12, 13, 0, 0, 2, 4, 4, 39, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(62, 'deadmansmoan_20', 20, 1854, 25772425417, 0, 2, 4, 4, 17, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(63, 'roseling_22', 22, 400, 0, 0, 1, 4, 4, 48, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(64, 'duskbat_38', 38, 363, 0, 0, 1, 4, 4, 98, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(65, 'plasmoid_46', 46, 46, 0, 0, 1, 4, 4, 80, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(66, 'axolotl_139', 139, 1831, 0, 0, 2, 4, 4, 151, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(67, 'Rothlytpelican_181', 181, 1181, 0, 0, 2, 4, 4, 157, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(68, 'sewermole_205', 205, 410, 0, 0, 1, 4, 4, 282, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(69, 'hedgemole_206', 206, 403, 0, 0, 1, 4, 4, 283, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(70, 'seawasp_312', 312, 360, 0, 0, 2, 4, 4, 280, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(71, 'fatdodo_340', 340, 394, 0, 0, 1, 4, 4, 174, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(72, 'pukhatchling_341', 341, 402, 0, 0, 1, 4, 4, 130, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(73, 'Rhotanobuccaneer_348', 348, 420, 4297654473, 8590262373, 2, 4, 4, 0, 0, 0x0100013201050601623b32000001013b83010102004b004b0001, 0x170032000a000512000001000a000100080059000000000000000000000000000000000000000000),
(74, 'Rhotanobuccaneer_349', 349, 420, 8591966609, 0, 2, 4, 4, 0, 0, 0x0100013201040c01300305000001010304040302004b00320001, 0x170032000a000512000001000a000100080059000000000000000000000000000000000000000000),
(75, 'preyingmantis_396', 396, 1852, 0, 0, 2, 4, 4, 376, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(76, 'killermantis_397', 397, 644, 0, 0, 2, 4, 4, 374, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(77, 'lammergeyer_403', 403, 1853, 0, 0, 2, 4, 4, 41, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(78, 'shelfscaleSahagin_765', 765, 386, 4295688693, 0, 2, 4, 4, 9, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(79, 'shelfclawSahagin_766', 766, 384, 0, 0, 2, 4, 4, 9, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(80, 'Sapsashelfspine_767', 767, 1829, 4295688693, 4295426149, 2, 4, 4, 9, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000020001000000000000000000000000000000000000000000000000000000000000000000),
(81, 'shoaltoothSahagin_768', 768, 2526, 51539673889, 0, 2, 4, 4, 9, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000020002000000000000000000000000000000000000000000000000000000000000000000),
(82, 'goblinhunter_769', 769, 225, 4297588937, 0, 1, 4, 4, 6, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(83, 'shelfscaleReaver_773', 773, 347, 17182949577, 12885033061, 2, 4, 4, 0, 0, 0x05000132090101011a0101000001000100000000003200321045, 0x170066000a000f0019000f0010005100190027000000000000000000000000000000000000000000),
(84, 'shelfclawReaver_774', 774, 345, 21474967853, 21474967903, 2, 4, 4, 0, 0, 0x0500013209020901ab15040000010115830300020064004b1045, 0x1700660008000d000800480008003f00080064000000000000000000000000000000000000000000),
(85, 'shelfeyeReaver_776', 776, 559, 30064902745, 4295033530, 2, 4, 4, 0, 0, 0x0500013209010c01149203000001029202020202006400321445, 0x170066000a000f0019000f0010005100190027000000000000000000000000000000000000000000),
(86, 'Sapsaelbst_2832', 2832, 2527, 0, 0, 2, 4, 4, 182, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(87, 'whelkballista_2835', 2835, 2530, 0, 0, 1, 4, 2, 679, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(88, 'freshwhelkballista_2836', 2836, 2531, 0, 0, 1, 4, 2, 679, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(89, 'reinforcedwhelkballista_2837', 2837, 2532, 0, 0, 2, 4, 2, 679, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(90, 'DarkHelmet_3187', 3187, 2931, 0, 0, 1, 4, 0, 722, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(91, 'coeurlpup_28', 28, 28, 0, 0, 2, 4, 4, 69, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(92, 'bumblebeetle_36', 36, 296, 0, 0, 1, 4, 4, 56, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(93, 'salamander_139', 139, 391, 0, 0, 2, 4, 4, 151, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(94, 'forestyarzon_159', 159, 381, 0, 0, 2, 4, 4, 76, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(95, 'wildwolf_303', 303, 1180, 0, 0, 2, 4, 4, 159, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(96, 'koboldpickman_329', 329, 370, 4295033233, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000200010002000000000000000000000000000000000000000000000000000000000000000000),
(97, 'koboldsidesman_330', 330, 376, 4295033533, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000400010004000000000000000000000000000000000000000000000000000000000000000000),
(98, 'MamoolJabreeder_343', 343, 414, 4295033033, 4295426149, 2, 4, 4, 10, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(99, 'MamoolJaexecutioner_344', 344, 413, 4295033233, 0, 2, 4, 4, 10, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(100, 'MamoolJainfiltrator_345', 345, 416, 4295033333, 0, 2, 4, 4, 10, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000010001000000000000000000000000000000000000000000000000000000000000000000),
(101, 'MamoolJasophist_346', 346, 415, 51539673889, 0, 2, 4, 4, 10, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000020001000000000000000000000000000000000000000000000000000000000000000000),
(102, 'stoneshell_382', 382, 638, 0, 0, 1, 4, 4, 355, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(103, 'mudpugil_383', 383, 642, 0, 0, 1, 4, 4, 356, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(104, 'uragnite_389', 389, 643, 0, 0, 1, 4, 4, 364, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(105, 'Myradrosh_3188', 3188, 2932, 0, 0, 1, 4, 0, 360, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(106, '3rdCohorthoplomachus_55', 55, 53, 17180065993, 12885295205, 2, 4, 4, 0, 0, 0x0100013201020401110505000000030580040101001900320000, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(107, '3rdCohortlaquearius_61', 61, 58, 12884967825, 0, 2, 4, 4, 0, 0, 0x0100013201010201aa9206000000029202000302003200320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(108, '3rdCohorteques_62', 62, 59, 12885230069, 0, 2, 4, 4, 0, 0, 0x02000132030203013c9236000000019201050300003201320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(109, '3rdCohortsecutor_63', 63, 60, 21475033389, 21475033439, 2, 4, 4, 0, 0, 0x0100013201010701984706000000024701020302003200320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(110, '3rdCohortsignifer_64', 64, 61, 30064837609, 0, 2, 4, 4, 0, 0, 0x0100013201050301113b27000000043b850103000032004b0007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(111, 'earthsprite_131', 131, 113, 0, 0, 1, 4, 4, 386, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(112, 'basilisk_173', 173, 304, 0, 0, 2, 4, 4, 135, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(113, 'ahriman_183', 183, 242, 0, 0, 2, 4, 4, 168, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(114, 'quartzdoblyn_188', 188, 275, 0, 0, 1, 4, 4, 177, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(115, 'magitekvanguard_200', 200, 269, 0, 0, 2, 4, 4, 213, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(116, 'grenade_327', 327, 270, 0, 0, 2, 4, 4, 101, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(117, 'FlameSergeantDalvag_3183', 3183, 2927, 0, 0, 1, 4, 0, 717, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000040001000000000000000000000000000000000000000000000000000000000000000000),
(118, 'antelopestag_4', 4, 4, 0, 0, 1, 4, 4, 62, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(119, 'ked_8', 8, 8, 0, 0, 2, 4, 4, 54, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(120, 'midlandcondor_13', 13, 566, 0, 0, 2, 4, 4, 40, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(121, 'wildhog_16', 16, 15, 0, 0, 2, 4, 4, 45, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(122, 'kedtrap_23', 23, 23, 0, 0, 2, 4, 4, 49, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(123, 'treant_24', 24, 24, 0, 0, 2, 4, 4, 104, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(124, 'adamantoise_34', 34, 34, 0, 0, 1, 4, 4, 94, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(125, 'hoverflyswarm_41', 41, 168, 0, 0, 1, 4, 4, 59, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(126, 'will-o-the-wisp_45', 45, 45, 0, 0, 1, 4, 4, 79, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(127, 'goblinthug_52', 52, 50, 8592556233, 0, 2, 4, 4, 6, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(128, 'Coeurlclawpoacher_79', 79, 140, 38654902773, 0, 2, 4, 4, 0, 0, 0x0401013208030201150c05000000000c00000000003201000000, 0x130010000900260009007c0009004d000900b2000000000000000000000000000000000000000000),
(129, 'Coeurlclawhunter_81', 81, 139, 17179935321, 4295033530, 2, 4, 4, 0, 0, 0x04010132080301014a0c1e000000000c00000000003201000000, 0x130010000900260009007c0009004d000900b2000000000000000000000000000000000000000000),
(130, 'Redbellylookout_84', 84, 52, 21474902217, 8590393445, 2, 4, 4, 0, 0, 0x02000132040102013a8a06000000028a02000302003201320000, 0x0900d200090010000900670009004a000900a0000000000000000000000000000000000000000000),
(131, 'Redbellylarcener_86', 86, 172, 12885033261, 12885033311, 2, 4, 4, 0, 0, 0x0200013204010701224e06000000024e01020302003201320000, 0x0900d200090010000900670009004a000900a0000000000000000000000000000000000000000000),
(132, 'Redbellysharpeye_87', 87, 83, 8590131801, 4295033530, 2, 4, 4, 0, 0, 0x0200013204030401282605000000022685010102003201320000, 0x0900d200090010000900670009004a000900a0000000000000000000000000000000000000000000),
(133, 'lesserkalong_130', 130, 112, 0, 0, 1, 4, 4, 99, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(134, 'deepvoiddeathmouse_143', 143, 170, 0, 0, 1, 4, 4, 27, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(135, 'riveryarzon_159', 159, 226, 0, 0, 2, 4, 4, 76, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(136, 'bigmouthorobon_302', 302, 235, 0, 0, 1, 4, 4, 270, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(137, 'stroper_304', 304, 238, 0, 0, 2, 4, 4, 145, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(138, 'revenant_305', 305, 236, 0, 0, 2, 4, 4, 265, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(139, 'Coeurlclawcutter_311', 311, 169, 17182556361, 17180328037, 2, 4, 4, 0, 0, 0x040101320801060189241e000000032403040301003201320000, 0x130010000900260009007c0009004d000900b2000000000000000000000000000000000000000000),
(140, 'nix_27', 27, 27, 0, 0, 2, 4, 4, 127, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(141, '5thCohorthoplomachus_55', 55, 1809, 17180065993, 12885295205, 2, 4, 4, 0, 0, 0x0100013201020401110505000000030580040101001900320000, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(142, '5thCohortlaquearius_61', 61, 1810, 12884967825, 0, 2, 4, 4, 0, 0, 0x0100013201010201aa9206000000029202000302003200320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(143, '5thCohorteques_62', 62, 1811, 12885230069, 0, 2, 4, 4, 0, 0, 0x02000132030203013c9236000000019201050300003201320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(144, '5thCohortsecutor_63', 63, 1812, 21475033389, 21475033439, 2, 4, 4, 0, 0, 0x0100013201010701984706000000024701020302003200320007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(145, '5thCohortsignifer_64', 64, 1813, 30064837609, 0, 2, 4, 4, 0, 0, 0x0100013201050301113b27000000043b850103000032004b0007, 0x0d009300220037000d004000070061000a009e000000000000000000000000000000000000000000),
(146, 'mudpuppy_139', 139, 645, 0, 0, 2, 4, 4, 151, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(147, 'morbol_140', 140, 237, 0, 0, 2, 4, 4, 145, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(148, '5thCohortvanguard_201', 201, 1814, 0, 0, 2, 4, 4, 214, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(149, 'hippogryph_645', 645, 789, 0, 0, 2, 4, 4, 134, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(150, 'hapalit_647', 647, 793, 0, 0, 2, 4, 4, 188, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(151, 'gigasshramana_727', 727, 647, 4295040839, 0, 2, 10, 4, 13, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000070001000000000000000000000000000000000000000000000000000000000000000000),
(152, 'gigasbonze_728', 728, 646, 4295106370, 0, 2, 10, 4, 13, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000070001000000000000000000000000000000000000000000000000000000000000000000),
(153, 'gigassozu_729', 729, 648, 4295040844, 0, 2, 10, 4, 13, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000070001000000000000000000000000000000000000000000000000000000000000000000),
(154, 'lakecobra_777', 777, 1851, 0, 0, 2, 4, 4, 235, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(155, 'LeechKing_3191', 3191, 2935, 0, 0, 1, 4, 0, 600, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(156, 'blackbat_1037', 1037, 38, 0, 0, 3, 4, 2, 98, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(157, 'caveaurelia_1038', 1038, 1210, 0, 0, 3, 4, 2, 279, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(158, 'foper_7439', 7439, 5674, 0, 0, 2, 4, 4, 1906, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(159, 'spinner_7442', 7442, 5677, 0, 0, 2, 4, 4, 1542, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(160, 'velociraptor_2', 2, 412, 0, 0, 2, 4, 4, 96, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(161, 'ringtail_6', 6, 407, 0, 0, 1, 4, 4, 32, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(162, 'highlandcondor_13', 13, 398, 0, 0, 2, 4, 4, 40, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(163, 'basaltgolem_30', 30, 365, 0, 0, 2, 4, 4, 81, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(164, 'pteroc_65', 65, 62, 0, 0, 1, 4, 4, 131, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(165, 'coeurl_117', 117, 106, 0, 0, 2, 4, 4, 65, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(166, 'syntheticdoblyn_189', 189, 1836, 0, 0, 2, 4, 4, 178, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(167, 'UGhamaroroundsman_755', 755, 1832, 17182490825, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000100010001000000000000000000000000000000000000000000000000000000000000000000),
(168, 'UGhamaroquarryman_756', 756, 1833, 8590000529, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000200010002000000000000000000000000000000000000000000000000000000000000000000),
(169, 'elitebedesman_757', 757, 2521, 30064837309, 0, 2, 8, 2, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000400010004000000000000000000000000000000000000000000000000000000000000000000),
(170, 'koboldpriest_758', 758, 371, 30065755013, 0, 2, 8, 4, 5, 0, 0x0000000000000000000000000000000000000000000000000000, 0x01000300010003000000000000000000000000000000000000000000000000000000000000000000),
(171, 'youngcoeurl_2269', 2269, 2192, 0, 0, 2, 4, 4, 65, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(172, 'bombincubator_2833', 2833, 2528, 0, 0, 1, 4, 2, 678, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(173, 'prototypebombincubator_2834', 2834, 2529, 0, 0, 1, 4, 2, 678, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(174, 'UGhamarogolem_2838', 2838, 2522, 0, 0, 2, 4, 4, 81, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(175, 'Vuokho_3189', 3189, 2933, 0, 0, 1, 4, 0, 39, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(176, 'strikingdummy_8016', 8016, 541, 0, 0, 1, 4, 0, 480, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(177, 'cocoon_6358', 6358, 6275, 0, 0, 1, 4, 0, 480, 262152, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(178, 'Shinryu_6531', 6531, 5640, 0, 0, 3, 4, 0, 1893, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(179, 'tail_6930', 6930, 5789, 0, 0, 3, 4, 0, 1926, 262187, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(180, 'cocoon_6931', 6931, 6275, 0, 0, 3, 4, 0, 2007, 262187, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(181, 'ginryu_6932', 6932, 6272, 0, 0, 3, 4, 0, 1891, 262187, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(182, '鎖_6933', 6933, 6279, 0, 0, 3, 4, 0, 2054, 262152, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(183, 'icicle_6934', 6934, 6278, 0, 0, 3, 4, 0, 764, 393224, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(184, 'eyeofthestorm_6935', 6935, 6277, 0, 0, 3, 4, 0, 1453, 262155, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(185, 'hakkinryu_7299', 7299, 6273, 0, 0, 3, 4, 0, 1985, 262187, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(186, 'massivecocoon_7302', 7302, 6276, 0, 0, 3, 4, 0, 2008, 262187, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(187, 'saitaisui_6358', 6358, 7206, 0, 0, 1, 4, 0, 480, 262152, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(188, 'Otengu_8662', 8662, 7200, 4295827266, 0, 3, 4, 0, 2187, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(189, 'tenguember_8663', 8663, 7201, 0, 0, 3, 4, 0, 2281, 262155, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(190, 'Daidarabotchi_8664', 8664, 7202, 0, 0, 3, 4, 0, 2217, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(191, 'QitianDasheng_8665', 8665, 7203, 0, 0, 3, 4, 0, 2211, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(192, 'shadowofthesage_8666', 8666, 7204, 0, 0, 3, 4, 0, 2211, 262187, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(193, 'saitaisui_8737', 8737, 7206, 4295302988, 0, 3, 4, 3, 2218, 8, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(194, 'geomantickiyofusa_8738', 8738, 7207, 4295434050, 0, 3, 4, 1, 1813, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(195, 'geomanticapa_8739', 8739, 7208, 0, 0, 3, 4, 3, 1867, 262147, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(196, 'torrent_8740', 8740, 7209, 0, 0, 3, 4, 3, 1202, 262147, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(197, 'geomanticdhara_8741', 8741, 7210, 0, 0, 3, 4, 3, 1819, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(198, 'geomanticanila_8742', 8742, 7211, 0, 0, 3, 4, 4, 1923, 262147, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(199, '_8743', 8743, 108, 0, 0, 1, 4, 0, 1453, 262152, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(200, 'riverunkiu_8744', 8744, 7212, 0, 0, 3, 4, 2, 1719, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(201, 'jinmenju_8745', 8745, 7213, 0, 0, 3, 4, 0, 1281, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(202, 'riverhikagiri_8746', 8746, 7214, 0, 0, 3, 4, 3, 572, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(203, 'riverray_8747', 8747, 7215, 0, 0, 3, 4, 0, 1346, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(204, 'riverscorpion_8748', 8748, 7216, 0, 0, 3, 4, 2, 1057, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(205, 'dragonhornbill_8749', 8749, 7217, 0, 0, 3, 4, 2, 1944, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(206, 'dragonbifang_8750', 8750, 7218, 0, 0, 3, 4, 2, 953, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(207, 'whitebaboon_8751', 8751, 7219, 0, 0, 3, 4, 2, 2270, 262144, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(208, 'dragonweasel_8752', 8752, 7220, 0, 0, 3, 4, 3, 1948, 0, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(209, 'servantofthesage_8754', 8754, 7205, 0, 0, 3, 4, 0, 2270, 262147, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000),
(210, 'saitaisui_8780', 8780, 7206, 4295302988, 0, 1, 4, 0, 2218, 12, 0x0000000000000000000000000000000000000000000000000000, 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000);
--
-- Indizes der exportierten Tabellen
--
--
-- Indizes für die Tabelle `bnpctemplate`
--
ALTER TABLE `bnpctemplate`
ADD PRIMARY KEY (`Id`),
ADD UNIQUE KEY `bNPCBaseId_2` (`bNPCBaseId`,`bNPCNameId`),
ADD KEY `Name` (`Name`),
ADD KEY `bNPCBaseId` (`bNPCBaseId`),
ADD KEY `bNPCNameId` (`bNPCNameId`);
--
-- AUTO_INCREMENT für exportierte Tabellen
--
--
-- AUTO_INCREMENT für Tabelle `bnpctemplate`
--
ALTER TABLE `bnpctemplate`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=211;

View file

@ -1,30 +0,0 @@
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 10.1.24-MariaDB - mariadb.org binary distribution
-- Server OS: Win32
-- HeidiSQL Version: 9.4.0.5125
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- Dumping structure for table sapphire.characlass
CREATE TABLE IF NOT EXISTS `characlass` (
`CharacterId` int(20) NOT NULL DEFAULT '0',
`ClassIdx` int(3) DEFAULT '0',
`Exp` int(10) DEFAULT '0',
`Lvl` int(5) DEFAULT '0',
INDEX `CharacterId` (`CharacterId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- Dumping data for table sapphire.characlass: 0 rows
DELETE FROM `characlass`;
/*!40000 ALTER TABLE `characlass` DISABLE KEYS */;
/*!40000 ALTER TABLE `characlass` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View file

@ -1,77 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `charaglobalitem`
--
DROP TABLE IF EXISTS `charaglobalitem`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charaglobalitem` (
`CharacterId` int(20) NOT NULL DEFAULT '0',
`itemId` int(20) NOT NULL DEFAULT '0',
`storageId` int(5) NOT NULL DEFAULT '0',
`containerIndex` int(5) NOT NULL DEFAULT '0',
`stack` int(10) DEFAULT '1',
`catalogId` int(10) DEFAULT '0',
`reservedFlag` int(10) DEFAULT '0',
`signatureId` int(20) DEFAULT '0',
`flags` int(3) DEFAULT '0',
`durability` int(5) DEFAULT '30000',
`refine` int(5) DEFAULT '0',
`materia_0` int(5) DEFAULT '0',
`materia_1` int(5) DEFAULT '0',
`materia_2` int(5) DEFAULT '0',
`materia_3` int(5) DEFAULT '0',
`materia_4` int(5) DEFAULT '0',
`stain` int(3) DEFAULT '0',
`pattern` int(10) DEFAULT '0',
`buffer_0` int(3) DEFAULT '0',
`buffer_1` int(3) DEFAULT '0',
`buffer_2` int(3) DEFAULT '0',
`buffer_3` int(3) DEFAULT '0',
`buffer_4` int(3) DEFAULT '0',
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`itemId`),
KEY `CharacterId` (`CharacterId`),
KEY `storageId` (`storageId`),
KEY `storageId_2` (`storageId`,`containerIndex`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `charaglobalitem`
--
LOCK TABLES `charaglobalitem` WRITE;
/*!40000 ALTER TABLE `charaglobalitem` DISABLE KEYS */;
/*!40000 ALTER TABLE `charaglobalitem` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:12

View file

@ -1,89 +0,0 @@
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 10.1.24-MariaDB - mariadb.org binary distribution
-- Server OS: Win32
-- HeidiSQL Version: 9.4.0.5125
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
CREATE TABLE `charainfo` (
`AccountId` int(11) NOT NULL,
`CharacterId` decimal(20,0) NOT NULL,
`ContentId` bigint(20) DEFAULT NULL,
`Name` varchar(32) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
`Hp` bigint(20) DEFAULT '200',
`Mp` bigint(20) DEFAULT '200',
`Tp` bigint(20) DEFAULT '0',
`Gp` bigint(20) DEFAULT '0',
`Mode` smallint(6) DEFAULT '0',
`Mount` smallint(6) DEFAULT '0',
`InvincibleGM` smallint(6) DEFAULT '0',
`Voice` smallint(6) DEFAULT '0',
`Customize` binary(26) DEFAULT NULL,
`ModelMainWeapon` decimal(20,0) DEFAULT '0',
`ModelSubWeapon` decimal(20,0) DEFAULT '0',
`ModelSystemWeapon` decimal(20,0) DEFAULT '0',
`ModelEquip` binary(40) DEFAULT NULL,
`EmoteModeType` smallint(6) DEFAULT '0',
`FirstLoginTime` decimal(20,0) DEFAULT '0',
`Language` bigint(20) DEFAULT '0',
`IsNewGame` smallint(6) DEFAULT '1',
`IsNewAdventurer` int(1) NOT NULL DEFAULT '1',
`TerritoryType` int(11) DEFAULT '0',
`TerritoryId` decimal(20,0) DEFAULT '0',
`PosX` float DEFAULT '0',
`PosY` float DEFAULT '0',
`PosZ` float DEFAULT '0',
`PosR` float DEFAULT '0',
`OTerritoryType` int(11) DEFAULT '0',
`OTerritoryId` decimal(20,0) DEFAULT '0',
`OPosX` float DEFAULT '0',
`OPosY` float DEFAULT '0',
`OPosZ` float DEFAULT '0',
`OPosR` float DEFAULT '0',
`GuardianDeity` int(3) DEFAULT '0',
`BirthDay` int(3) DEFAULT '0',
`BirthMonth` int(3) DEFAULT '0',
`Class` int(3) DEFAULT '0',
`Status` int(3) DEFAULT '0',
`TotalPlayTime` int(10) DEFAULT '0',
`FirstClass` int(3) DEFAULT '0',
`HomePoint` int(3) DEFAULT '0',
`FavoritePoint` binary(3) DEFAULT NULL,
`RestPoint` int(10) DEFAULT '0',
`StartTown` int(3) DEFAULT '0',
`ActiveTitle` int(5) DEFAULT '0',
`TitleList` binary(48) DEFAULT NULL,
`Achievement` binary(16) DEFAULT NULL,
`Aetheryte` binary(16) DEFAULT NULL,
`HowTo` binary(33) DEFAULT NULL,
`Minions` binary(33) DEFAULT NULL,
`Mounts` binary(13) DEFAULT NULL,
`EquippedMannequin` int(5) DEFAULT '0',
`ConfigFlags` smallint(5) NOT NULL DEFAULT '0',
`QuestCompleteFlags` binary(200) DEFAULT NULL,
`OpeningSequence` int(3) DEFAULT '0',
`QuestTracking` binary(10) DEFAULT NULL,
`GrandCompany` int(3) DEFAULT '0',
`GrandCompanyRank` binary(3) DEFAULT NULL,
`Discovery` blob,
`GMRank` int(3) DEFAULT '0',
`Unlocks` binary(64) DEFAULT NULL,
`CFPenaltyUntil` int(11) DEFAULT NULL,
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- Dumping data for table sapphire.charainfo: 0 rows
DELETE FROM `charainfo`;
/*!40000 ALTER TABLE `charainfo` DISABLE KEYS */;
/*!40000 ALTER TABLE `charainfo` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View file

@ -1,53 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `charainfoblacklist`
--
DROP TABLE IF EXISTS `charainfoblacklist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charainfoblacklist` (
`CharacterId` int(20) NOT NULL,
`CharacterIdList` blob,
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `charainfoblacklist`
--
LOCK TABLES `charainfoblacklist` WRITE;
/*!40000 ALTER TABLE `charainfoblacklist` DISABLE KEYS */;
/*!40000 ALTER TABLE `charainfoblacklist` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:08

View file

@ -1,54 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `charainfofriendlist`
--
DROP TABLE IF EXISTS `charainfofriendlist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charainfofriendlist` (
`CharacterId` int(20) NOT NULL,
`CharacterIdList` blob,
`InviteDataList` blob,
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `charainfofriendlist`
--
LOCK TABLES `charainfofriendlist` WRITE;
/*!40000 ALTER TABLE `charainfofriendlist` DISABLE KEYS */;
/*!40000 ALTER TABLE `charainfofriendlist` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:09

View file

@ -1,53 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `charainfolinkshell`
--
DROP TABLE IF EXISTS `charainfolinkshell`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charainfolinkshell` (
`CharacterId` int(20) NOT NULL,
`LinkshellIdList` binary(64) DEFAULT NULL,
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `charainfolinkshell`
--
LOCK TABLES `charainfolinkshell` WRITE;
/*!40000 ALTER TABLE `charainfolinkshell` DISABLE KEYS */;
/*!40000 ALTER TABLE `charainfolinkshell` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:09

View file

@ -1,54 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `charainfosearch`
--
DROP TABLE IF EXISTS `charainfosearch`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charainfosearch` (
`CharacterId` int(20) DEFAULT NULL,
`SelectClassId` int(3) DEFAULT '0',
`SelectRegion` int(3) DEFAULT '0',
`SearchComment` binary(193) DEFAULT "",
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `charainfosearch`
--
LOCK TABLES `charainfosearch` WRITE;
/*!40000 ALTER TABLE `charainfosearch` DISABLE KEYS */;
/*!40000 ALTER TABLE `charainfosearch` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:09

View file

@ -1,70 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `charaitemgearset`
--
DROP TABLE IF EXISTS `charaitemgearset`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charaitemgearset` (
`CharacterId` int(20) NOT NULL,
`storageId` int(10) NOT NULL,
`type` int(5) DEFAULT '0',
`idx` int(5) NOT NULL AUTO_INCREMENT,
`container_0` int(20) DEFAULT '0',
`container_1` int(20) DEFAULT '0',
`container_2` int(20) DEFAULT '0',
`container_3` int(20) DEFAULT '0',
`container_4` int(20) DEFAULT '0',
`container_5` int(20) DEFAULT '0',
`container_6` int(20) DEFAULT '0',
`container_7` int(20) DEFAULT '0',
`container_8` int(20) DEFAULT '0',
`container_9` int(20) DEFAULT '0',
`container_10` int(20) DEFAULT '0',
`container_11` int(20) DEFAULT '0',
`container_12` int(20) DEFAULT '0',
`container_13` int(20) DEFAULT '0',
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`,`storageId`),
UNIQUE KEY `idx` (`idx`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `charaitemgearset`
--
LOCK TABLES `charaitemgearset` WRITE;
/*!40000 ALTER TABLE `charaitemgearset` DISABLE KEYS */;
/*!40000 ALTER TABLE `charaitemgearset` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:11

View file

@ -1,69 +0,0 @@
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 10.1.24-MariaDB - mariadb.org binary distribution
-- Server OS: Win32
-- HeidiSQL Version: 9.4.0.5125
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- Dumping structure for table sapphire.charaiteminventory
CREATE TABLE IF NOT EXISTS `charaiteminventory` (
`CharacterId` int(20) NOT NULL,
`storageId` int(10) NOT NULL,
`type` int(5) DEFAULT '0',
`idx` int(5) NOT NULL AUTO_INCREMENT,
`container_0` int(20) DEFAULT '0',
`container_1` int(20) DEFAULT '0',
`container_2` int(20) DEFAULT '0',
`container_3` int(20) DEFAULT '0',
`container_4` int(20) DEFAULT '0',
`container_5` int(20) DEFAULT '0',
`container_6` int(20) DEFAULT '0',
`container_7` int(20) DEFAULT '0',
`container_8` int(20) DEFAULT '0',
`container_9` int(20) DEFAULT '0',
`container_10` int(20) DEFAULT '0',
`container_11` int(20) DEFAULT '0',
`container_12` int(20) DEFAULT '0',
`container_13` int(20) DEFAULT '0',
`container_14` int(20) DEFAULT '0',
`container_15` int(20) DEFAULT '0',
`container_16` int(20) DEFAULT '0',
`container_17` int(20) DEFAULT '0',
`container_18` int(20) DEFAULT '0',
`container_19` int(20) DEFAULT '0',
`container_20` int(20) DEFAULT '0',
`container_21` int(20) DEFAULT '0',
`container_22` int(20) DEFAULT '0',
`container_23` int(20) DEFAULT '0',
`container_24` int(20) DEFAULT '0',
`container_25` int(20) DEFAULT '0',
`container_26` int(20) DEFAULT '0',
`container_27` int(20) DEFAULT '0',
`container_28` int(20) DEFAULT '0',
`container_29` int(20) DEFAULT '0',
`container_30` int(20) DEFAULT '0',
`container_31` int(20) DEFAULT '0',
`container_32` int(20) DEFAULT '0',
`container_33` int(20) DEFAULT '0',
`container_34` int(20) DEFAULT '0',
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`,`storageId`),
UNIQUE KEY `idx` (`idx`)
) ENGINE=MyISAM AUTO_INCREMENT=161 DEFAULT CHARSET=utf8;
-- Dumping data for table sapphire.charaiteminventory: 0 rows
DELETE FROM `charaiteminventory`;
/*!40000 ALTER TABLE `charaiteminventory` DISABLE KEYS */;
/*!40000 ALTER TABLE `charaiteminventory` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View file

@ -1,20 +0,0 @@
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
DROP TABLE IF EXISTS `charaquestnew`;
CREATE TABLE charaquestnew (
`CharacterId` int(20) DEFAULT '0',
`slotId` int(20) DEFAULT '0',
`QuestId` int(5) DEFAULT '0',
`Sequence` int(3) DEFAULT '0',
`Flags` int(3) DEFAULT '0',
`Variables_0` int(3) DEFAULT '0',
`Variables_1` int(3) DEFAULT '0',
`Variables_2` int(3) DEFAULT '0',
`Variables_3` int(3) DEFAULT '0',
`Variables_4` int(3) DEFAULT '0',
`Variables_5` int(3) DEFAULT '0',
`Variables_6` int(3) DEFAULT '0',
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

View file

@ -1,126 +0,0 @@
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `charastatus`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `charastatus` (
`Recast_0` binary(24) DEFAULT NULL,
`Recast_1` binary(24) DEFAULT NULL,
`Recast_2` binary(24) DEFAULT NULL,
`Recast_3` binary(24) DEFAULT NULL,
`Recast_4` binary(24) DEFAULT NULL,
`Recast_5` binary(24) DEFAULT NULL,
`Recast_6` binary(24) DEFAULT NULL,
`Recast_7` binary(24) DEFAULT NULL,
`Recast_8` binary(24) DEFAULT NULL,
`Recast_9` binary(24) DEFAULT NULL,
`Recast_10` binary(24) DEFAULT NULL,
`Recast_11` binary(24) DEFAULT NULL,
`Recast_12` binary(24) DEFAULT NULL,
`Recast_13` binary(24) DEFAULT NULL,
`Recast_14` binary(24) DEFAULT NULL,
`Recast_15` binary(24) DEFAULT NULL,
`Recast_16` binary(24) DEFAULT NULL,
`Recast_17` binary(24) DEFAULT NULL,
`Recast_18` binary(24) DEFAULT NULL,
`Recast_19` binary(24) DEFAULT NULL,
`Recast_20` binary(24) DEFAULT NULL,
`Recast_21` binary(24) DEFAULT NULL,
`Recast_22` binary(24) DEFAULT NULL,
`Recast_23` binary(24) DEFAULT NULL,
`Recast_24` binary(24) DEFAULT NULL,
`Recast_25` binary(24) DEFAULT NULL,
`Recast_26` binary(24) DEFAULT NULL,
`Recast_27` binary(24) DEFAULT NULL,
`Recast_28` binary(24) DEFAULT NULL,
`Recast_29` binary(24) DEFAULT NULL,
`Recast_30` binary(24) DEFAULT NULL,
`Recast_31` binary(24) DEFAULT NULL,
`Recast_32` binary(24) DEFAULT NULL,
`Recast_33` binary(24) DEFAULT NULL,
`Recast_34` binary(24) DEFAULT NULL,
`Recast_35` binary(24) DEFAULT NULL,
`Recast_36` binary(24) DEFAULT NULL,
`Recast_37` binary(24) DEFAULT NULL,
`Recast_38` binary(24) DEFAULT NULL,
`Recast_39` binary(24) DEFAULT NULL,
`Recast_40` binary(24) DEFAULT NULL,
`Recast_41` binary(24) DEFAULT NULL,
`Recast_42` binary(24) DEFAULT NULL,
`Recast_43` binary(24) DEFAULT NULL,
`Recast_44` binary(24) DEFAULT NULL,
`Recast_45` binary(24) DEFAULT NULL,
`Recast_46` binary(24) DEFAULT NULL,
`Recast_47` binary(24) DEFAULT NULL,
`Recast_48` binary(24) DEFAULT NULL,
`Recast_49` binary(24) DEFAULT NULL,
`Recast_50` binary(24) DEFAULT NULL,
`Recast_51` binary(24) DEFAULT NULL,
`Recast_52` binary(24) DEFAULT NULL,
`Recast_53` binary(24) DEFAULT NULL,
`Status_0` binary(78) DEFAULT NULL,
`Status_1` binary(78) DEFAULT NULL,
`Status_2` binary(78) DEFAULT NULL,
`Status_3` binary(78) DEFAULT NULL,
`Status_4` binary(78) DEFAULT NULL,
`Status_5` binary(78) DEFAULT NULL,
`Status_6` binary(78) DEFAULT NULL,
`Status_7` binary(78) DEFAULT NULL,
`Status_8` binary(78) DEFAULT NULL,
`Status_9` binary(78) DEFAULT NULL,
`Status_10` binary(78) DEFAULT NULL,
`Status_11` binary(78) DEFAULT NULL,
`Status_12` binary(78) DEFAULT NULL,
`Status_13` binary(78) DEFAULT NULL,
`Status_14` binary(78) DEFAULT NULL,
`Status_15` binary(78) DEFAULT NULL,
`Status_16` binary(78) DEFAULT NULL,
`Status_17` binary(78) DEFAULT NULL,
`Status_18` binary(78) DEFAULT NULL,
`Status_19` binary(78) DEFAULT NULL,
`Status_20` binary(78) DEFAULT NULL,
`Status_21` binary(78) DEFAULT NULL,
`Status_22` binary(78) DEFAULT NULL,
`Status_23` binary(78) DEFAULT NULL,
`Status_24` binary(78) DEFAULT NULL,
`Status_25` binary(78) DEFAULT NULL,
`Status_26` binary(78) DEFAULT NULL,
`Status_27` binary(78) DEFAULT NULL,
`Status_28` binary(78) DEFAULT NULL,
`Status_29` binary(78) DEFAULT NULL,
`CharacterId` int(20) DEFAULT NULL,
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `_112_dbcharastatus`
--
LOCK TABLES `charastatus` WRITE;
/*!40000 ALTER TABLE `charastatus` DISABLE KEYS */;
/*!40000 ALTER TABLE `charastatus` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:36:59

File diff suppressed because it is too large Load diff

View file

@ -1,16 +0,0 @@
#!/bin/bash
EXPORT_PATH="C://coding//repositories//ffxiv related//sapphire//Sapphire2Clone//sql//"
USER=root
PASS=root
DBNAME=sapphire
#test -d EXPORT_PATH || mkdir -p $EXPORT_PATH
list=`mysqlshow -u $USER -p$PASS $DBNAME`
for T in $list;
do
if [[ "$T" != "information_schema" ]] && [[ "$T" != "performance_schema" ]] &&
[[ "$T" != "mysql" ]] && [[ "$T" != "${DBNAME}"* ]] && [[ "$T" != *"*"* ]] && [[ "$T" != *"+"* ]] && [[ "$T" != *"+="* ]] &&
[[ "$T" != "Tables" ]] && [[ "$T" != "Database"* ]] && [[ "$T" != "" ]]; then
echo "Backing up " $T;
mysqldump -u $USER -p$PASS $DBNAME $T --extended-insert=FALSE > "${EXPORT_PATH}/${T}.sql"
fi
done;

View file

@ -1,48 +0,0 @@
@ECHO OFF
SETLOCAL
REM =============
REM IMPORT CONFIG
REM =============
REM NOTE: No spaces before or after the '='!!!
REM =============
SET PATH_MYSQL="Path\to\mysql.exe"
SET PATH_MYSQLADMIN="Path\to\mysqladmin.exe"
SET PATH_SQL="Path\to\Sapphire\sql"
SET USER=root
SET PASSWORD=
SET DBADDRESS=localhost
SET DBPORT=3306
SET DBNAME=sapphire
REM =============
IF DEFINED PASSWORD (SET PASSWORD=-p%PASSWORD%)
ECHO Deleteing old database
%PATH_MYSQLADMIN% -h %DBADDRESS% -u %USER% %PASSWORD% DROP %DBNAME%
ECHO Creating new database
%PATH_MYSQLADMIN% -h %DBADDRESS% -u %USER% %PASSWORD% CREATE %DBNAME%
ECHO Loading tables into the database
cd %PATH_SQL%
FOR %%X IN (*.sql) DO (
IF "%%X"=="update.sql" (
REM handle update.sql last
) ELSE (
ECHO Importing %%X
%PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% %PASSWORD% < %%X
)
)
IF EXIST "update.sql" (
ECHO Importing update.sql
%PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% %PASSWORD% < update.sql
)
ECHO Finished!
ENDLOCAL
PAUSE
@ECHO ON

View file

@ -1,29 +0,0 @@
#!/bin/bash
IMPORT_PATH="C://coding//repositories//ffxiv related//sapphire//Sapphire2Clone//sql//"
USER=root
PASS=root
DBNAME=sapphire
ECHO Creating Database $DBNAME
mysqladmin -h localhost -u $USER -p$PASS DROP $DBNAME
ECHO Creating Database $DBNAME
mysqladmin -h localhost -u $USER -p$PASS CREATE $DBNAME IF NOT EXISTS $DBNAME
ECHO Loading $DBNAME tables into the database
sh cd $IMPORT_PATH
"C:\program files\mysql\mysql server 5.7\bin\mysql" $DBNAME -h localhost -u $USER -p$PASS -e 'SET AUTOCOMMIT=0;'
for X in '*.sql';
do
for Y in $X
do
echo Importing $Y;
"C:\program files\mysql\mysql server 5.7\bin\mysql" $DBNAME -h localhost -u $USER -p$PASS < $Y
done
done
"C:\program files\mysql\mysql server 5.7\bin\mysql" $DBNAME -h localhost -u $USER -p$PASS -e 'COMMIT;'
ECHO Finished!

View file

@ -1,57 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `infolinkshell`
--
DROP TABLE IF EXISTS `infolinkshell`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `infolinkshell` (
`LinkshellId` bigint(20) NOT NULL AUTO_INCREMENT,
`MasterCharacterId` int(20) DEFAULT NULL,
`CharacterIdList` blob,
`LinkshellName` varchar(32) DEFAULT NULL,
`LeaderIdList` blob,
`InviteIdList` blob,
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`LinkshellId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `infolinkshell`
--
LOCK TABLES `infolinkshell` WRITE;
/*!40000 ALTER TABLE `infolinkshell` DISABLE KEYS */;
/*!40000 ALTER TABLE `infolinkshell` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:15

10142
sql/schema/inserts.sql Normal file

File diff suppressed because one or more lines are too long

586
sql/schema/schema.sql Normal file
View file

@ -0,0 +1,586 @@
CREATE TABLE `accounts` (
`account_id` int(11) NOT NULL DEFAULT '0',
`account_name` varchar(255) COLLATE latin1_general_ci NOT NULL,
`account_pass` varchar(255) COLLATE latin1_general_ci NOT NULL,
`account_created` int(11) NOT NULL DEFAULT '0',
`account_status` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`account_id`),
UNIQUE KEY `accountname` (`account_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bnpctemplate` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(32) NOT NULL,
`bNPCBaseId` int(10) DEFAULT NULL,
`bNPCNameId` int(10) NOT NULL,
`mainWeaponModel` bigint(20) DEFAULT NULL,
`secWeaponModel` bigint(20) DEFAULT NULL,
`aggressionMode` int(3) DEFAULT NULL,
`enemyType` int(3) DEFAULT NULL,
`pose` int(3) DEFAULT NULL,
`modelChara` int(5) DEFAULT NULL,
`displayFlags` int(10) DEFAULT NULL,
`Look` binary(26) DEFAULT NULL,
`Models` binary(40) DEFAULT NULL,
PRIMARY KEY (`Id`),
KEY `templatename` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `spawnpoint` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`spawnGroupId` int(11) NOT NULL,
`x` float NOT NULL,
`y` float NOT NULL,
`z` float NOT NULL,
`r` float NOT NULL,
`gimmickId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `spawngroupidx` (`spawnGroupId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `charainfo` (
`AccountId` int(11) NOT NULL,
`CharacterId` int(20) NOT NULL,
`ContentId` bigint(20) DEFAULT NULL,
`Name` varchar(32) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
`Hp` bigint(20) DEFAULT '200',
`Mp` bigint(20) DEFAULT '200',
`Tp` bigint(20) DEFAULT '0',
`Gp` bigint(20) DEFAULT '0',
`Mode` smallint(6) DEFAULT '0',
`Mount` smallint(6) DEFAULT '0',
`InvincibleGM` smallint(6) DEFAULT '0',
`Voice` smallint(6) DEFAULT '0',
`Customize` binary(26) DEFAULT NULL,
`ModelMainWeapon` decimal(20,0) DEFAULT '0',
`ModelSubWeapon` decimal(20,0) DEFAULT '0',
`ModelSystemWeapon` decimal(20,0) DEFAULT '0',
`ModelEquip` binary(40) DEFAULT NULL,
`EmoteModeType` smallint(6) DEFAULT '0',
`FirstLoginTime` decimal(20,0) DEFAULT '0',
`Language` bigint(20) DEFAULT '0',
`IsNewGame` smallint(6) DEFAULT '1',
`IsNewAdventurer` int(1) NOT NULL DEFAULT '1',
`TerritoryType` int(11) DEFAULT '0',
`TerritoryId` decimal(20,0) DEFAULT '0',
`PosX` float DEFAULT '0',
`PosY` float DEFAULT '0',
`PosZ` float DEFAULT '0',
`PosR` float DEFAULT '0',
`OTerritoryType` int(11) DEFAULT '0',
`OTerritoryId` decimal(20,0) DEFAULT '0',
`OPosX` float DEFAULT '0',
`OPosY` float DEFAULT '0',
`OPosZ` float DEFAULT '0',
`OPosR` float DEFAULT '0',
`GuardianDeity` int(3) DEFAULT '0',
`BirthDay` int(3) DEFAULT '0',
`BirthMonth` int(3) DEFAULT '0',
`Class` int(3) DEFAULT '0',
`Status` int(3) DEFAULT '0',
`TotalPlayTime` int(10) DEFAULT '0',
`FirstClass` int(3) DEFAULT '0',
`HomePoint` int(3) DEFAULT '0',
`FavoritePoint` binary(3) DEFAULT NULL,
`RestPoint` int(10) DEFAULT '0',
`StartTown` int(3) DEFAULT '0',
`ActiveTitle` int(5) DEFAULT '0',
`TitleList` binary(48) DEFAULT NULL,
`Achievement` binary(16) DEFAULT NULL,
`Aetheryte` binary(17) DEFAULT NULL,
`HowTo` binary(33) DEFAULT NULL,
`Minions` binary(40) DEFAULT NULL,
`Mounts` binary(17) DEFAULT NULL,
`Orchestrion` binary(40) DEFAULT NULL,
`EquippedMannequin` int(5) DEFAULT '0',
`ConfigFlags` smallint(5) NOT NULL DEFAULT '0',
`QuestCompleteFlags` varbinary(396) DEFAULT NULL,
`OpeningSequence` int(3) DEFAULT '0',
`QuestTracking` binary(10) DEFAULT NULL,
`GrandCompany` int(3) DEFAULT '0',
`GrandCompanyRank` binary(3) DEFAULT NULL,
`Discovery` varbinary(421) DEFAULT NULL,
`GMRank` int(3) DEFAULT '0',
`EquipDisplayFlags` int(3) DEFAULT '0',
`Pose` int(3) DEFAULT '0',
`Unlocks` binary(64) DEFAULT NULL,
`CFPenaltyUntil` int(11) DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`CharacterId`),
KEY `index` (`AccountId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `characlass` (
`CharacterId` int(20) NOT NULL DEFAULT '0',
`ClassIdx` int(3) DEFAULT '0',
`Exp` int(10) DEFAULT '0',
`Lvl` int(5) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`ClassIdx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charaglobalitem` (
`CharacterId` int(20) NOT NULL DEFAULT '0',
`itemId` int(20) NOT NULL DEFAULT '0',
`storageId` int(5) NOT NULL DEFAULT '0',
`containerIndex` int(5) NOT NULL DEFAULT '0',
`stack` int(10) DEFAULT '1',
`catalogId` int(10) DEFAULT '0',
`reservedFlag` int(10) DEFAULT '0',
`signatureId` int(20) DEFAULT '0',
`flags` int(3) DEFAULT '0',
`durability` int(5) DEFAULT '30000',
`refine` int(5) DEFAULT '0',
`materia_0` int(5) DEFAULT '0',
`materia_1` int(5) DEFAULT '0',
`materia_2` int(5) DEFAULT '0',
`materia_3` int(5) DEFAULT '0',
`materia_4` int(5) DEFAULT '0',
`stain` int(3) DEFAULT '0',
`pattern` int(10) DEFAULT '0',
`buffer_0` int(3) DEFAULT '0',
`buffer_1` int(3) DEFAULT '0',
`buffer_2` int(3) DEFAULT '0',
`buffer_3` int(3) DEFAULT '0',
`buffer_4` int(3) DEFAULT '0',
`deleted` int(1) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`itemId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charainfoblacklist` (
`CharacterId` int(20) NOT NULL,
`CharacterIdList` blob,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charainfolinkshell` (
`CharacterId` int(20) NOT NULL,
`LinkshellIdList` binary(64) DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charainfosearch` (
`CharacterId` int(20) NOT NULL,
`SelectClassId` int(3) DEFAULT '0',
`SelectRegion` int(3) DEFAULT '0',
`SearchComment` binary(193) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charaitemcrystal` (
`CharacterId` int(20) DEFAULT '0',
`storageId` int(10) DEFAULT '2001',
`type` int(5) DEFAULT '0',
`idx` int(5) NOT NULL ,
`container_0` int(20) DEFAULT '0',
`container_1` int(20) DEFAULT '0',
`container_2` int(20) DEFAULT '0',
`container_3` int(20) DEFAULT '0',
`container_4` int(20) DEFAULT '0',
`container_5` int(20) DEFAULT '0',
`container_6` int(20) DEFAULT '0',
`container_7` int(20) DEFAULT '0',
`container_8` int(20) DEFAULT '0',
`container_9` int(20) DEFAULT '0',
`container_10` int(20) DEFAULT '0',
`container_11` int(20) DEFAULT '0',
`container_12` int(20) DEFAULT '0',
`container_13` int(20) DEFAULT '0',
`container_14` int(20) DEFAULT '0',
`container_15` int(20) DEFAULT '0',
`container_16` int(20) DEFAULT '0',
`container_17` int(20) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`storageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charaitemcurrency` (
`CharacterId` int(20) NOT NULL,
`storageId` int(10) DEFAULT '2000',
`type` int(5) DEFAULT '0',
`idx` int(5) NOT NULL,
`container_0` int(20) DEFAULT '0',
`container_1` int(20) DEFAULT '0',
`container_2` int(20) DEFAULT '0',
`container_3` int(20) DEFAULT '0',
`container_4` int(20) DEFAULT '0',
`container_5` int(20) DEFAULT '0',
`container_6` int(20) DEFAULT '0',
`container_7` int(20) DEFAULT '0',
`container_8` int(20) DEFAULT '0',
`container_9` int(20) DEFAULT '0',
`container_10` int(20) DEFAULT '0',
`container_11` int(20) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`storageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charaitemgearset` (
`CharacterId` int(20) NOT NULL,
`storageId` int(10) NOT NULL,
`type` int(5) DEFAULT '0',
`idx` int(5) DEFAULT '0',
`container_0` int(20) DEFAULT '0',
`container_1` int(20) DEFAULT '0',
`container_2` int(20) DEFAULT '0',
`container_3` int(20) DEFAULT '0',
`container_4` int(20) DEFAULT '0',
`container_5` int(20) DEFAULT '0',
`container_6` int(20) DEFAULT '0',
`container_7` int(20) DEFAULT '0',
`container_8` int(20) DEFAULT '0',
`container_9` int(20) DEFAULT '0',
`container_10` int(20) DEFAULT '0',
`container_11` int(20) DEFAULT '0',
`container_12` int(20) DEFAULT '0',
`container_13` int(20) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`storageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charaiteminventory` (
`CharacterId` int(20) NOT NULL,
`storageId` int(10) NOT NULL,
`type` int(5) DEFAULT '0',
`idx` int(5) DEFAULT '0',
`container_0` int(20) DEFAULT '0',
`container_1` int(20) DEFAULT '0',
`container_2` int(20) DEFAULT '0',
`container_3` int(20) DEFAULT '0',
`container_4` int(20) DEFAULT '0',
`container_5` int(20) DEFAULT '0',
`container_6` int(20) DEFAULT '0',
`container_7` int(20) DEFAULT '0',
`container_8` int(20) DEFAULT '0',
`container_9` int(20) DEFAULT '0',
`container_10` int(20) DEFAULT '0',
`container_11` int(20) DEFAULT '0',
`container_12` int(20) DEFAULT '0',
`container_13` int(20) DEFAULT '0',
`container_14` int(20) DEFAULT '0',
`container_15` int(20) DEFAULT '0',
`container_16` int(20) DEFAULT '0',
`container_17` int(20) DEFAULT '0',
`container_18` int(20) DEFAULT '0',
`container_19` int(20) DEFAULT '0',
`container_20` int(20) DEFAULT '0',
`container_21` int(20) DEFAULT '0',
`container_22` int(20) DEFAULT '0',
`container_23` int(20) DEFAULT '0',
`container_24` int(20) DEFAULT '0',
`container_25` int(20) DEFAULT '0',
`container_26` int(20) DEFAULT '0',
`container_27` int(20) DEFAULT '0',
`container_28` int(20) DEFAULT '0',
`container_29` int(20) DEFAULT '0',
`container_30` int(20) DEFAULT '0',
`container_31` int(20) DEFAULT '0',
`container_32` int(20) DEFAULT '0',
`container_33` int(20) DEFAULT '0',
`container_34` int(20) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`storageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charaquest` (
`CharacterId` int(20) DEFAULT '0',
`slotId` int(20) DEFAULT '0',
`QuestId` int(5) DEFAULT '0',
`Sequence` int(3) DEFAULT '0',
`Flags` int(3) DEFAULT '0',
`Variables_0` int(3) DEFAULT '0',
`Variables_1` int(3) DEFAULT '0',
`Variables_2` int(3) DEFAULT '0',
`Variables_3` int(3) DEFAULT '0',
`Variables_4` int(3) DEFAULT '0',
`Variables_5` int(3) DEFAULT '0',
`Variables_6` int(3) DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`,`slotId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `charastatus` (
`CharacterId` int(20) NOT NULL,
`Recast_0` binary(24) DEFAULT NULL,
`Recast_1` binary(24) DEFAULT NULL,
`Recast_2` binary(24) DEFAULT NULL,
`Recast_3` binary(24) DEFAULT NULL,
`Recast_4` binary(24) DEFAULT NULL,
`Recast_5` binary(24) DEFAULT NULL,
`Recast_6` binary(24) DEFAULT NULL,
`Recast_7` binary(24) DEFAULT NULL,
`Recast_8` binary(24) DEFAULT NULL,
`Recast_9` binary(24) DEFAULT NULL,
`Recast_10` binary(24) DEFAULT NULL,
`Recast_11` binary(24) DEFAULT NULL,
`Recast_12` binary(24) DEFAULT NULL,
`Recast_13` binary(24) DEFAULT NULL,
`Recast_14` binary(24) DEFAULT NULL,
`Recast_15` binary(24) DEFAULT NULL,
`Recast_16` binary(24) DEFAULT NULL,
`Recast_17` binary(24) DEFAULT NULL,
`Recast_18` binary(24) DEFAULT NULL,
`Recast_19` binary(24) DEFAULT NULL,
`Recast_20` binary(24) DEFAULT NULL,
`Recast_21` binary(24) DEFAULT NULL,
`Recast_22` binary(24) DEFAULT NULL,
`Recast_23` binary(24) DEFAULT NULL,
`Recast_24` binary(24) DEFAULT NULL,
`Recast_25` binary(24) DEFAULT NULL,
`Recast_26` binary(24) DEFAULT NULL,
`Recast_27` binary(24) DEFAULT NULL,
`Recast_28` binary(24) DEFAULT NULL,
`Recast_29` binary(24) DEFAULT NULL,
`Recast_30` binary(24) DEFAULT NULL,
`Recast_31` binary(24) DEFAULT NULL,
`Recast_32` binary(24) DEFAULT NULL,
`Recast_33` binary(24) DEFAULT NULL,
`Recast_34` binary(24) DEFAULT NULL,
`Recast_35` binary(24) DEFAULT NULL,
`Recast_36` binary(24) DEFAULT NULL,
`Recast_37` binary(24) DEFAULT NULL,
`Recast_38` binary(24) DEFAULT NULL,
`Recast_39` binary(24) DEFAULT NULL,
`Recast_40` binary(24) DEFAULT NULL,
`Recast_41` binary(24) DEFAULT NULL,
`Recast_42` binary(24) DEFAULT NULL,
`Recast_43` binary(24) DEFAULT NULL,
`Recast_44` binary(24) DEFAULT NULL,
`Recast_45` binary(24) DEFAULT NULL,
`Recast_46` binary(24) DEFAULT NULL,
`Recast_47` binary(24) DEFAULT NULL,
`Recast_48` binary(24) DEFAULT NULL,
`Recast_49` binary(24) DEFAULT NULL,
`Recast_50` binary(24) DEFAULT NULL,
`Recast_51` binary(24) DEFAULT NULL,
`Recast_52` binary(24) DEFAULT NULL,
`Recast_53` binary(24) DEFAULT NULL,
`Status_0` binary(78) DEFAULT NULL,
`Status_1` binary(78) DEFAULT NULL,
`Status_2` binary(78) DEFAULT NULL,
`Status_3` binary(78) DEFAULT NULL,
`Status_4` binary(78) DEFAULT NULL,
`Status_5` binary(78) DEFAULT NULL,
`Status_6` binary(78) DEFAULT NULL,
`Status_7` binary(78) DEFAULT NULL,
`Status_8` binary(78) DEFAULT NULL,
`Status_9` binary(78) DEFAULT NULL,
`Status_10` binary(78) DEFAULT NULL,
`Status_11` binary(78) DEFAULT NULL,
`Status_12` binary(78) DEFAULT NULL,
`Status_13` binary(78) DEFAULT NULL,
`Status_14` binary(78) DEFAULT NULL,
`Status_15` binary(78) DEFAULT NULL,
`Status_16` binary(78) DEFAULT NULL,
`Status_17` binary(78) DEFAULT NULL,
`Status_18` binary(78) DEFAULT NULL,
`Status_19` binary(78) DEFAULT NULL,
`Status_20` binary(78) DEFAULT NULL,
`Status_21` binary(78) DEFAULT NULL,
`Status_22` binary(78) DEFAULT NULL,
`Status_23` binary(78) DEFAULT NULL,
`Status_24` binary(78) DEFAULT NULL,
`Status_25` binary(78) DEFAULT NULL,
`Status_26` binary(78) DEFAULT NULL,
`Status_27` binary(78) DEFAULT NULL,
`Status_28` binary(78) DEFAULT NULL,
`Status_29` binary(78) DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`CharacterId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `dbupdate` (
`name` varchar(128) NOT NULL,
`executionTime` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `discoveryinfo` (
`id` int(10) NOT NULL,
`map_id` int(3) NOT NULL,
`discover_id` int(3) NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `house` (
`HouseId` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`LandSetId` int(10) UNSIGNED DEFAULT NULL,
`BuildTime` bigint(20) DEFAULT NULL,
`Aetheryte` smallint(6) DEFAULT NULL,
`Welcome` smallint(6) DEFAULT NULL,
`Comment` binary(193) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`HouseName` binary(23) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`Endorsements` bigint(20) DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`HouseId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `housepartsitem` (
`HouseId` bigint(20) UNSIGNED NOT NULL,
`itemId` bigint(20) UNSIGNED DEFAULT NULL,
`CharacterId` bigint(20) UNSIGNED DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`HouseId`),
KEY `index` (`CharacterId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `housepartsstorage` (
`LandSetId` bigint(20) UNSIGNED NOT NULL,
`HouseId` bigint(20) UNSIGNED NOT NULL,
`storageId` bigint(20) NOT NULL,
`type` int(11) DEFAULT NULL,
`index` int(11) NOT NULL,
`container_0` bigint(20) UNSIGNED DEFAULT NULL,
`container_1` bigint(20) UNSIGNED DEFAULT NULL,
`container_2` bigint(20) UNSIGNED DEFAULT NULL,
`container_3` bigint(20) UNSIGNED DEFAULT NULL,
`container_4` bigint(20) UNSIGNED DEFAULT NULL,
`container_5` bigint(20) UNSIGNED DEFAULT NULL,
`container_6` bigint(20) UNSIGNED DEFAULT NULL,
`container_7` bigint(20) UNSIGNED DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`LandSetId`,`HouseId`,`storageId`,`index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `infolinkshell` (
`LinkshellId` bigint(20) NOT NULL AUTO_INCREMENT,
`MasterCharacterId` int(20) DEFAULT NULL,
`CharacterIdList` blob,
`LinkshellName` varchar(32) DEFAULT NULL,
`LeaderIdList` blob,
`InviteIdList` blob,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`LinkshellId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `land` (
`LandSetId` bigint(20) UNSIGNED NOT NULL,
`LandId` bigint(20) UNSIGNED NOT NULL,
`Type` smallint(6) NOT NULL DEFAULT '0',
`Size` smallint(6) DEFAULT NULL,
`Status` smallint(6) DEFAULT NULL,
`LandPrice` bigint(20) DEFAULT NULL,
`UpdateTime` bigint(20) DEFAULT NULL,
`OwnerId` bigint(20) UNSIGNED DEFAULT NULL,
`HouseId` bigint(20) UNSIGNED DEFAULT NULL,
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`LandSetId`, `LandId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `landset` (
`LandSetId` bigint(20) UNSIGNED NOT NULL,
`LandId_0` bigint(20) UNSIGNED DEFAULT '0',
`LandId_1` bigint(20) UNSIGNED DEFAULT '0',
`LandId_2` bigint(20) UNSIGNED DEFAULT '0',
`LandId_3` bigint(20) UNSIGNED DEFAULT '0',
`LandId_4` bigint(20) UNSIGNED DEFAULT '0',
`LandId_5` bigint(20) UNSIGNED DEFAULT '0',
`LandId_6` bigint(20) UNSIGNED DEFAULT '0',
`LandId_7` bigint(20) UNSIGNED DEFAULT '0',
`LandId_8` bigint(20) UNSIGNED DEFAULT '0',
`LandId_9` bigint(20) UNSIGNED DEFAULT '0',
`LandId_10` bigint(20) UNSIGNED DEFAULT '0',
`LandId_11` bigint(20) UNSIGNED DEFAULT '0',
`LandId_12` bigint(20) UNSIGNED DEFAULT '0',
`LandId_13` bigint(20) UNSIGNED DEFAULT '0',
`LandId_14` bigint(20) UNSIGNED DEFAULT '0',
`LandId_15` bigint(20) UNSIGNED DEFAULT '0',
`LandId_16` bigint(20) UNSIGNED DEFAULT '0',
`LandId_17` bigint(20) UNSIGNED DEFAULT '0',
`LandId_18` bigint(20) UNSIGNED DEFAULT '0',
`LandId_19` bigint(20) UNSIGNED DEFAULT '0',
`LandId_20` bigint(20) UNSIGNED DEFAULT '0',
`LandId_21` bigint(20) UNSIGNED DEFAULT '0',
`LandId_22` bigint(20) UNSIGNED DEFAULT '0',
`LandId_23` bigint(20) UNSIGNED DEFAULT '0',
`LandId_24` bigint(20) UNSIGNED DEFAULT '0',
`LandId_25` bigint(20) UNSIGNED DEFAULT '0',
`LandId_26` bigint(20) UNSIGNED DEFAULT '0',
`LandId_27` bigint(20) UNSIGNED DEFAULT '0',
`LandId_28` bigint(20) UNSIGNED DEFAULT '0',
`LandId_29` bigint(20) UNSIGNED DEFAULT '0',
`LandId_30` bigint(20) UNSIGNED DEFAULT '0',
`LandId_31` bigint(20) UNSIGNED DEFAULT '0',
`LandId_32` bigint(20) UNSIGNED DEFAULT '0',
`LandId_33` bigint(20) UNSIGNED DEFAULT '0',
`LandId_34` bigint(20) UNSIGNED DEFAULT '0',
`LandId_35` bigint(20) UNSIGNED DEFAULT '0',
`LandId_36` bigint(20) UNSIGNED DEFAULT '0',
`LandId_37` bigint(20) UNSIGNED DEFAULT '0',
`LandId_38` bigint(20) UNSIGNED DEFAULT '0',
`LandId_39` bigint(20) UNSIGNED DEFAULT '0',
`LandId_40` bigint(20) UNSIGNED DEFAULT '0',
`LandId_41` bigint(20) UNSIGNED DEFAULT '0',
`LandId_42` bigint(20) UNSIGNED DEFAULT '0',
`LandId_43` bigint(20) UNSIGNED DEFAULT '0',
`LandId_44` bigint(20) UNSIGNED DEFAULT '0',
`LandId_45` bigint(20) UNSIGNED DEFAULT '0',
`LandId_46` bigint(20) UNSIGNED DEFAULT '0',
`LandId_47` bigint(20) UNSIGNED DEFAULT '0',
`LandId_48` bigint(20) UNSIGNED DEFAULT '0',
`LandId_49` bigint(20) UNSIGNED DEFAULT '0',
`LandId_50` bigint(20) UNSIGNED DEFAULT '0',
`LandId_51` bigint(20) UNSIGNED DEFAULT '0',
`LandId_52` bigint(20) UNSIGNED DEFAULT '0',
`LandId_53` bigint(20) UNSIGNED DEFAULT '0',
`LandId_54` bigint(20) UNSIGNED DEFAULT '0',
`LandId_55` bigint(20) UNSIGNED DEFAULT '0',
`LandId_56` bigint(20) UNSIGNED DEFAULT '0',
`LandId_57` bigint(20) UNSIGNED DEFAULT '0',
`LandId_58` bigint(20) UNSIGNED DEFAULT '0',
`LandId_59` bigint(20) UNSIGNED DEFAULT '0',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`LandSetId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `houseiteminventory` (
`LandIdent` BIGINT(20) UNSIGNED NOT NULL,
`ContainerId` INT(10) UNSIGNED NOT NULL,
`SlotId` INT(10) UNSIGNED NOT NULL,
`ItemId` INT(20) NOT NULL,
PRIMARY KEY (`LandIdent`, `ContainerId`, `SlotId`),
INDEX `landIdent` (`LandIdent`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `spawngroup` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`territoryTypeId` int(5) NOT NULL,
`bNpcTemplateId` int(10) NOT NULL,
`level` int(3) NOT NULL,
`maxHp` int(10) NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `uniqueiddata` (
`NextId` int(20) NOT NULL AUTO_INCREMENT,
`IdName` varchar(16) DEFAULT 'NOT SET',
`UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(`NextId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zonepositions` (
`id` int(11) NOT NULL,
`target_zone_id` int(11) NOT NULL,
`pos_x` float NOT NULL,
`pos_y` float NOT NULL,
`pos_z` float NOT NULL,
`pos_o` float NOT NULL,
`radius` int(11) NOT NULL DEFAULT '2',
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
CREATE TABLE `landplaceditems` (
`ItemId` INT(20) UNSIGNED NOT NULL,
`PosX` FLOAT NOT NULL,
`PosY` FLOAT NOT NULL,
`PosZ` FLOAT NOT NULL,
`Rotation` FLOAT NOT NULL,
PRIMARY KEY (`ItemId`)
)
COLLATE='latin1_swedish_ci' ENGINE=InnoDB;

View file

@ -1,505 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.13, for Win64 (x86_64)
--
-- Host: localhost Database: sapphire
-- ------------------------------------------------------
-- Server version 5.7.13-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `uniqueiddata`
--
DROP TABLE IF EXISTS `uniqueiddata`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `uniqueiddata` (
`NextId` int(20) NOT NULL AUTO_INCREMENT,
`IdName` varchar(16) DEFAULT 'NOT SET',
`IS_DELETE` int(3) DEFAULT '0',
`IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`NextId`)
) ENGINE=MyISAM AUTO_INCREMENT=1000447 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `uniqueiddata`
--
LOCK TABLES `uniqueiddata` WRITE;
/*!40000 ALTER TABLE `uniqueiddata` DISABLE KEYS */;
INSERT INTO `uniqueiddata` VALUES (1,'NOT_SET',0,0,'2016-02-10 22:04:00');
INSERT INTO `uniqueiddata` VALUES (2,'NOT_SET',0,0,'2016-02-10 22:04:23');
INSERT INTO `uniqueiddata` VALUES (3,'NOT_SET',0,0,'2016-02-10 22:06:29');
INSERT INTO `uniqueiddata` VALUES (4,'NOT_SET',0,0,'2016-02-10 22:06:29');
INSERT INTO `uniqueiddata` VALUES (5,'NOT_SET',0,0,'2016-02-10 22:06:29');
INSERT INTO `uniqueiddata` VALUES (6,'NOT_SET',0,0,'2016-02-10 22:06:29');
INSERT INTO `uniqueiddata` VALUES (1000001,'NOT_SET',0,0,'2016-02-10 22:07:59');
INSERT INTO `uniqueiddata` VALUES (1000002,'NOT_SET',0,0,'2016-02-10 22:07:59');
INSERT INTO `uniqueiddata` VALUES (1000003,'NOT_SET',0,0,'2016-02-10 22:07:59');
INSERT INTO `uniqueiddata` VALUES (1000004,'NOT_SET',0,0,'2016-02-10 22:07:59');
INSERT INTO `uniqueiddata` VALUES (1000005,'NOT_SET',0,0,'2016-02-11 00:50:07');
INSERT INTO `uniqueiddata` VALUES (1000006,'NOT_SET',0,0,'2016-02-11 00:54:50');
INSERT INTO `uniqueiddata` VALUES (1000007,'NOT_SET',0,0,'2016-02-11 20:46:38');
INSERT INTO `uniqueiddata` VALUES (1000008,'NOT_SET',0,0,'2016-02-11 20:46:47');
INSERT INTO `uniqueiddata` VALUES (1000009,'NOT_SET',0,0,'2016-02-11 20:46:54');
INSERT INTO `uniqueiddata` VALUES (1000010,'NOT_SET',0,0,'2016-02-11 20:47:04');
INSERT INTO `uniqueiddata` VALUES (1000011,'NOT_SET',0,0,'2016-02-11 20:47:11');
INSERT INTO `uniqueiddata` VALUES (1000012,'NOT_SET',0,0,'2016-02-11 22:20:14');
INSERT INTO `uniqueiddata` VALUES (1000013,'NOT_SET',0,0,'2016-02-12 08:18:49');
INSERT INTO `uniqueiddata` VALUES (1000014,'NOT_SET',0,0,'2016-02-12 08:22:10');
INSERT INTO `uniqueiddata` VALUES (1000015,'NOT_SET',0,0,'2016-02-12 18:54:51');
INSERT INTO `uniqueiddata` VALUES (1000016,'NOT_SET',0,0,'2016-02-12 18:54:51');
INSERT INTO `uniqueiddata` VALUES (1000017,'NOT_SET',0,0,'2016-02-12 18:54:51');
INSERT INTO `uniqueiddata` VALUES (1000018,'NOT_SET',0,0,'2016-02-12 18:54:51');
INSERT INTO `uniqueiddata` VALUES (1000019,'NOT_SET',0,0,'2016-02-12 18:54:51');
INSERT INTO `uniqueiddata` VALUES (1000020,'NOT_SET',0,0,'2016-02-13 11:45:32');
INSERT INTO `uniqueiddata` VALUES (1000021,'NOT_SET',0,0,'2016-02-13 11:45:40');
INSERT INTO `uniqueiddata` VALUES (1000022,'NOT_SET',0,0,'2016-02-13 11:45:43');
INSERT INTO `uniqueiddata` VALUES (1000023,'NOT_SET',0,0,'2016-02-13 11:46:02');
INSERT INTO `uniqueiddata` VALUES (1000024,'NOT_SET',0,0,'2016-02-13 11:46:04');
INSERT INTO `uniqueiddata` VALUES (1000025,'NOT_SET',0,0,'2016-02-13 11:46:06');
INSERT INTO `uniqueiddata` VALUES (1000026,'NOT_SET',0,0,'2016-02-13 11:46:08');
INSERT INTO `uniqueiddata` VALUES (1000027,'NOT_SET',0,0,'2016-02-13 11:46:10');
INSERT INTO `uniqueiddata` VALUES (1000028,'NOT_SET',0,0,'2016-02-13 11:50:06');
INSERT INTO `uniqueiddata` VALUES (1000029,'NOT_SET',0,0,'2016-02-13 11:51:25');
INSERT INTO `uniqueiddata` VALUES (1000030,'NOT_SET',0,0,'2016-02-13 11:55:58');
INSERT INTO `uniqueiddata` VALUES (1000031,'NOT_SET',0,0,'2016-02-13 11:56:02');
INSERT INTO `uniqueiddata` VALUES (1000032,'NOT_SET',0,0,'2016-02-13 11:56:05');
INSERT INTO `uniqueiddata` VALUES (1000033,'NOT_SET',0,0,'2016-02-13 11:56:08');
INSERT INTO `uniqueiddata` VALUES (1000034,'NOT_SET',0,0,'2016-02-13 11:56:11');
INSERT INTO `uniqueiddata` VALUES (1000035,'NOT_SET',0,0,'2016-02-13 11:56:17');
INSERT INTO `uniqueiddata` VALUES (1000036,'NOT_SET',0,0,'2016-02-13 11:57:24');
INSERT INTO `uniqueiddata` VALUES (1000037,'NOT_SET',0,0,'2016-02-13 11:57:27');
INSERT INTO `uniqueiddata` VALUES (1000038,'NOT_SET',0,0,'2016-02-13 11:57:28');
INSERT INTO `uniqueiddata` VALUES (1000039,'NOT_SET',0,0,'2016-02-13 11:57:29');
INSERT INTO `uniqueiddata` VALUES (1000040,'NOT_SET',0,0,'2016-02-13 11:57:30');
INSERT INTO `uniqueiddata` VALUES (1000041,'NOT_SET',0,0,'2016-02-13 11:57:31');
INSERT INTO `uniqueiddata` VALUES (1000042,'NOT_SET',0,0,'2016-02-13 11:57:34');
INSERT INTO `uniqueiddata` VALUES (1000043,'NOT_SET',0,0,'2016-02-13 11:57:36');
INSERT INTO `uniqueiddata` VALUES (1000044,'NOT_SET',0,0,'2016-02-13 11:57:37');
INSERT INTO `uniqueiddata` VALUES (1000045,'NOT_SET',0,0,'2016-02-13 11:57:38');
INSERT INTO `uniqueiddata` VALUES (1000046,'NOT_SET',0,0,'2016-02-13 11:57:39');
INSERT INTO `uniqueiddata` VALUES (1000047,'NOT_SET',0,0,'2016-02-13 11:57:40');
INSERT INTO `uniqueiddata` VALUES (1000048,'NOT_SET',0,0,'2016-02-13 11:57:41');
INSERT INTO `uniqueiddata` VALUES (1000049,'NOT_SET',0,0,'2016-02-13 11:57:42');
INSERT INTO `uniqueiddata` VALUES (1000050,'NOT_SET',0,0,'2016-02-13 11:57:44');
INSERT INTO `uniqueiddata` VALUES (1000051,'NOT_SET',0,0,'2016-02-13 11:57:47');
INSERT INTO `uniqueiddata` VALUES (1000052,'NOT_SET',0,0,'2016-02-13 11:57:50');
INSERT INTO `uniqueiddata` VALUES (1000053,'NOT_SET',0,0,'2016-02-13 11:57:52');
INSERT INTO `uniqueiddata` VALUES (1000054,'NOT_SET',0,0,'2016-02-13 11:57:55');
INSERT INTO `uniqueiddata` VALUES (1000055,'NOT_SET',0,0,'2016-02-13 11:57:57');
INSERT INTO `uniqueiddata` VALUES (1000056,'NOT_SET',0,0,'2016-02-13 11:57:57');
INSERT INTO `uniqueiddata` VALUES (1000057,'NOT_SET',0,0,'2016-02-13 11:58:00');
INSERT INTO `uniqueiddata` VALUES (1000058,'NOT_SET',0,0,'2016-02-13 11:58:00');
INSERT INTO `uniqueiddata` VALUES (1000059,'NOT_SET',0,0,'2016-02-13 11:58:02');
INSERT INTO `uniqueiddata` VALUES (1000060,'NOT_SET',0,0,'2016-02-13 11:58:02');
INSERT INTO `uniqueiddata` VALUES (1000061,'NOT_SET',0,0,'2016-02-13 13:03:07');
INSERT INTO `uniqueiddata` VALUES (1000062,'NOT_SET',0,0,'2016-02-13 13:03:07');
INSERT INTO `uniqueiddata` VALUES (1000063,'NOT_SET',0,0,'2016-02-13 13:03:51');
INSERT INTO `uniqueiddata` VALUES (1000064,'NOT_SET',0,0,'2016-02-13 13:03:51');
INSERT INTO `uniqueiddata` VALUES (1000065,'NOT_SET',0,0,'2016-02-13 13:04:03');
INSERT INTO `uniqueiddata` VALUES (1000066,'NOT_SET',0,0,'2016-02-13 13:04:07');
INSERT INTO `uniqueiddata` VALUES (1000067,'NOT_SET',0,0,'2016-02-13 13:04:20');
INSERT INTO `uniqueiddata` VALUES (1000068,'NOT_SET',0,0,'2016-02-13 13:04:41');
INSERT INTO `uniqueiddata` VALUES (1000069,'NOT_SET',0,0,'2016-02-15 11:43:46');
INSERT INTO `uniqueiddata` VALUES (1000070,'NOT_SET',0,0,'2016-02-15 11:43:46');
INSERT INTO `uniqueiddata` VALUES (1000071,'NOT_SET',0,0,'2016-02-15 11:43:46');
INSERT INTO `uniqueiddata` VALUES (1000072,'NOT_SET',0,0,'2016-02-15 11:43:46');
INSERT INTO `uniqueiddata` VALUES (1000073,'NOT_SET',0,0,'2016-02-15 11:43:46');
INSERT INTO `uniqueiddata` VALUES (1000074,'NOT_SET',0,0,'2016-02-15 12:12:37');
INSERT INTO `uniqueiddata` VALUES (1000075,'NOT_SET',0,0,'2016-02-15 12:12:37');
INSERT INTO `uniqueiddata` VALUES (1000076,'NOT_SET',0,0,'2016-02-15 12:12:37');
INSERT INTO `uniqueiddata` VALUES (1000077,'NOT_SET',0,0,'2016-02-15 12:12:37');
INSERT INTO `uniqueiddata` VALUES (1000078,'NOT_SET',0,0,'2016-02-15 12:12:37');
INSERT INTO `uniqueiddata` VALUES (1000079,'NOT_SET',0,0,'2016-02-15 13:19:52');
INSERT INTO `uniqueiddata` VALUES (1000080,'NOT_SET',0,0,'2016-02-15 13:22:50');
INSERT INTO `uniqueiddata` VALUES (1000081,'NOT_SET',0,0,'2016-02-15 13:28:08');
INSERT INTO `uniqueiddata` VALUES (1000082,'NOT_SET',0,0,'2016-02-15 13:31:52');
INSERT INTO `uniqueiddata` VALUES (1000083,'NOT_SET',0,0,'2016-02-15 13:33:42');
INSERT INTO `uniqueiddata` VALUES (1000084,'NOT_SET',0,0,'2016-02-15 13:35:28');
INSERT INTO `uniqueiddata` VALUES (1000085,'NOT_SET',0,0,'2016-02-15 13:50:28');
INSERT INTO `uniqueiddata` VALUES (1000086,'NOT_SET',0,0,'2016-02-15 14:28:11');
INSERT INTO `uniqueiddata` VALUES (1000087,'NOT_SET',0,0,'2016-02-15 14:28:21');
INSERT INTO `uniqueiddata` VALUES (1000088,'NOT_SET',0,0,'2016-02-15 14:28:25');
INSERT INTO `uniqueiddata` VALUES (1000089,'NOT_SET',0,0,'2016-02-15 14:28:26');
INSERT INTO `uniqueiddata` VALUES (1000090,'NOT_SET',0,0,'2016-02-15 14:28:26');
INSERT INTO `uniqueiddata` VALUES (1000091,'NOT_SET',0,0,'2016-02-15 14:28:27');
INSERT INTO `uniqueiddata` VALUES (1000092,'NOT_SET',0,0,'2016-02-15 14:28:27');
INSERT INTO `uniqueiddata` VALUES (1000093,'NOT_SET',0,0,'2016-02-15 14:28:35');
INSERT INTO `uniqueiddata` VALUES (1000094,'NOT_SET',0,0,'2016-02-15 14:40:54');
INSERT INTO `uniqueiddata` VALUES (1000095,'NOT_SET',0,0,'2016-02-15 14:42:22');
INSERT INTO `uniqueiddata` VALUES (1000096,'NOT_SET',0,0,'2016-02-15 14:44:54');
INSERT INTO `uniqueiddata` VALUES (1000097,'NOT_SET',0,0,'2016-02-15 14:50:58');
INSERT INTO `uniqueiddata` VALUES (1000098,'NOT_SET',0,0,'2016-02-15 14:51:00');
INSERT INTO `uniqueiddata` VALUES (1000099,'NOT_SET',0,0,'2016-02-15 14:51:02');
INSERT INTO `uniqueiddata` VALUES (1000100,'NOT_SET',0,0,'2016-02-15 14:51:02');
INSERT INTO `uniqueiddata` VALUES (1000101,'NOT_SET',0,0,'2016-02-15 14:51:15');
INSERT INTO `uniqueiddata` VALUES (1000102,'NOT_SET',0,0,'2016-02-15 14:51:17');
INSERT INTO `uniqueiddata` VALUES (1000103,'NOT_SET',0,0,'2016-02-15 14:51:18');
INSERT INTO `uniqueiddata` VALUES (1000104,'NOT_SET',0,0,'2016-02-15 14:51:19');
INSERT INTO `uniqueiddata` VALUES (1000105,'NOT_SET',0,0,'2016-02-15 14:51:19');
INSERT INTO `uniqueiddata` VALUES (1000106,'NOT_SET',0,0,'2016-02-15 14:51:20');
INSERT INTO `uniqueiddata` VALUES (1000107,'NOT_SET',0,0,'2016-02-15 14:51:20');
INSERT INTO `uniqueiddata` VALUES (1000108,'NOT_SET',0,0,'2016-02-15 14:51:21');
INSERT INTO `uniqueiddata` VALUES (1000109,'NOT_SET',0,0,'2016-02-15 14:51:21');
INSERT INTO `uniqueiddata` VALUES (1000110,'NOT_SET',0,0,'2016-02-15 14:51:22');
INSERT INTO `uniqueiddata` VALUES (1000111,'NOT_SET',0,0,'2016-02-15 14:51:23');
INSERT INTO `uniqueiddata` VALUES (1000112,'NOT_SET',0,0,'2016-02-15 14:51:24');
INSERT INTO `uniqueiddata` VALUES (1000113,'NOT_SET',0,0,'2016-02-15 14:51:25');
INSERT INTO `uniqueiddata` VALUES (1000114,'NOT_SET',0,0,'2016-02-15 14:51:26');
INSERT INTO `uniqueiddata` VALUES (1000115,'NOT_SET',0,0,'2016-02-15 14:51:26');
INSERT INTO `uniqueiddata` VALUES (1000116,'NOT_SET',0,0,'2016-02-15 14:51:27');
INSERT INTO `uniqueiddata` VALUES (1000117,'NOT_SET',0,0,'2016-02-15 14:51:28');
INSERT INTO `uniqueiddata` VALUES (1000118,'NOT_SET',0,0,'2016-02-15 14:51:29');
INSERT INTO `uniqueiddata` VALUES (1000119,'NOT_SET',0,0,'2016-02-15 14:51:29');
INSERT INTO `uniqueiddata` VALUES (1000120,'NOT_SET',0,0,'2016-02-15 14:51:30');
INSERT INTO `uniqueiddata` VALUES (1000121,'NOT_SET',0,0,'2016-02-15 14:51:31');
INSERT INTO `uniqueiddata` VALUES (1000122,'NOT_SET',0,0,'2016-02-15 14:51:31');
INSERT INTO `uniqueiddata` VALUES (1000123,'NOT_SET',0,0,'2016-02-15 14:51:31');
INSERT INTO `uniqueiddata` VALUES (1000124,'NOT_SET',0,0,'2016-02-15 14:51:32');
INSERT INTO `uniqueiddata` VALUES (1000125,'NOT_SET',0,0,'2016-02-15 14:51:32');
INSERT INTO `uniqueiddata` VALUES (1000126,'NOT_SET',0,0,'2016-02-15 14:51:33');
INSERT INTO `uniqueiddata` VALUES (1000127,'NOT_SET',0,0,'2016-02-15 14:51:33');
INSERT INTO `uniqueiddata` VALUES (1000128,'NOT_SET',0,0,'2016-02-15 14:52:22');
INSERT INTO `uniqueiddata` VALUES (1000129,'NOT_SET',0,0,'2016-02-15 14:52:22');
INSERT INTO `uniqueiddata` VALUES (1000130,'NOT_SET',0,0,'2016-02-15 14:52:39');
INSERT INTO `uniqueiddata` VALUES (1000131,'NOT_SET',0,0,'2016-02-15 14:52:39');
INSERT INTO `uniqueiddata` VALUES (1000132,'NOT_SET',0,0,'2016-02-15 15:09:49');
INSERT INTO `uniqueiddata` VALUES (1000133,'NOT_SET',0,0,'2016-02-15 15:09:56');
INSERT INTO `uniqueiddata` VALUES (1000134,'NOT_SET',0,0,'2016-02-15 15:10:05');
INSERT INTO `uniqueiddata` VALUES (1000135,'NOT_SET',0,0,'2016-02-15 15:10:05');
INSERT INTO `uniqueiddata` VALUES (1000136,'NOT_SET',0,0,'2016-02-15 15:10:14');
INSERT INTO `uniqueiddata` VALUES (1000137,'NOT_SET',0,0,'2016-02-15 15:10:14');
INSERT INTO `uniqueiddata` VALUES (1000138,'NOT_SET',0,0,'2016-02-15 15:10:34');
INSERT INTO `uniqueiddata` VALUES (1000139,'NOT_SET',0,0,'2016-02-15 15:10:34');
INSERT INTO `uniqueiddata` VALUES (1000140,'NOT_SET',0,0,'2016-02-15 15:11:20');
INSERT INTO `uniqueiddata` VALUES (1000141,'NOT_SET',0,0,'2016-02-15 15:11:20');
INSERT INTO `uniqueiddata` VALUES (1000142,'NOT_SET',0,0,'2016-02-15 15:12:49');
INSERT INTO `uniqueiddata` VALUES (1000143,'NOT_SET',0,0,'2016-02-15 15:12:49');
INSERT INTO `uniqueiddata` VALUES (1000144,'NOT_SET',0,0,'2016-02-15 15:14:34');
INSERT INTO `uniqueiddata` VALUES (1000145,'NOT_SET',0,0,'2016-02-15 15:14:34');
INSERT INTO `uniqueiddata` VALUES (1000146,'NOT_SET',0,0,'2016-02-15 15:14:38');
INSERT INTO `uniqueiddata` VALUES (1000147,'NOT_SET',0,0,'2016-02-15 15:14:38');
INSERT INTO `uniqueiddata` VALUES (1000148,'NOT_SET',0,0,'2016-02-15 15:14:41');
INSERT INTO `uniqueiddata` VALUES (1000149,'NOT_SET',0,0,'2016-02-15 15:14:41');
INSERT INTO `uniqueiddata` VALUES (1000150,'NOT_SET',0,0,'2016-02-15 15:14:42');
INSERT INTO `uniqueiddata` VALUES (1000151,'NOT_SET',0,0,'2016-02-15 15:14:42');
INSERT INTO `uniqueiddata` VALUES (1000152,'NOT_SET',0,0,'2016-02-15 15:18:32');
INSERT INTO `uniqueiddata` VALUES (1000153,'NOT_SET',0,0,'2016-02-15 15:18:32');
INSERT INTO `uniqueiddata` VALUES (1000154,'NOT_SET',0,0,'2016-02-15 15:18:47');
INSERT INTO `uniqueiddata` VALUES (1000155,'NOT_SET',0,0,'2016-02-15 15:18:47');
INSERT INTO `uniqueiddata` VALUES (1000156,'NOT_SET',0,0,'2016-02-15 15:18:59');
INSERT INTO `uniqueiddata` VALUES (1000157,'NOT_SET',0,0,'2016-02-15 15:18:59');
INSERT INTO `uniqueiddata` VALUES (1000158,'NOT_SET',0,0,'2016-02-15 15:19:09');
INSERT INTO `uniqueiddata` VALUES (1000159,'NOT_SET',0,0,'2016-02-15 15:19:09');
INSERT INTO `uniqueiddata` VALUES (1000160,'NOT_SET',0,0,'2016-02-15 15:19:10');
INSERT INTO `uniqueiddata` VALUES (1000161,'NOT_SET',0,0,'2016-02-15 15:19:10');
INSERT INTO `uniqueiddata` VALUES (1000162,'NOT_SET',0,0,'2016-02-15 15:20:33');
INSERT INTO `uniqueiddata` VALUES (1000163,'NOT_SET',0,0,'2016-02-15 15:20:33');
INSERT INTO `uniqueiddata` VALUES (1000164,'NOT_SET',0,0,'2016-02-15 15:21:20');
INSERT INTO `uniqueiddata` VALUES (1000165,'NOT_SET',0,0,'2016-02-15 15:21:20');
INSERT INTO `uniqueiddata` VALUES (1000166,'NOT_SET',0,0,'2016-02-15 15:21:46');
INSERT INTO `uniqueiddata` VALUES (1000167,'NOT_SET',0,0,'2016-02-15 15:21:46');
INSERT INTO `uniqueiddata` VALUES (1000168,'NOT_SET',0,0,'2016-02-15 15:23:36');
INSERT INTO `uniqueiddata` VALUES (1000169,'NOT_SET',0,0,'2016-02-15 15:23:36');
INSERT INTO `uniqueiddata` VALUES (1000170,'NOT_SET',0,0,'2016-02-15 15:23:51');
INSERT INTO `uniqueiddata` VALUES (1000171,'NOT_SET',0,0,'2016-02-15 15:23:51');
INSERT INTO `uniqueiddata` VALUES (1000172,'NOT_SET',0,0,'2016-02-15 15:29:44');
INSERT INTO `uniqueiddata` VALUES (1000173,'NOT_SET',0,0,'2016-02-15 15:29:44');
INSERT INTO `uniqueiddata` VALUES (1000174,'NOT_SET',0,0,'2016-02-15 15:29:44');
INSERT INTO `uniqueiddata` VALUES (1000175,'NOT_SET',0,0,'2016-02-15 15:32:11');
INSERT INTO `uniqueiddata` VALUES (1000176,'NOT_SET',0,0,'2016-02-15 15:32:11');
INSERT INTO `uniqueiddata` VALUES (1000177,'NOT_SET',0,0,'2016-02-15 15:32:11');
INSERT INTO `uniqueiddata` VALUES (1000178,'NOT_SET',0,0,'2016-02-15 15:32:24');
INSERT INTO `uniqueiddata` VALUES (1000179,'NOT_SET',0,0,'2016-02-15 15:32:24');
INSERT INTO `uniqueiddata` VALUES (1000180,'NOT_SET',0,0,'2016-02-15 15:32:24');
INSERT INTO `uniqueiddata` VALUES (1000181,'NOT_SET',0,0,'2016-02-15 15:34:55');
INSERT INTO `uniqueiddata` VALUES (1000182,'NOT_SET',0,0,'2016-02-15 15:34:55');
INSERT INTO `uniqueiddata` VALUES (1000183,'NOT_SET',0,0,'2016-02-15 15:34:55');
INSERT INTO `uniqueiddata` VALUES (1000184,'NOT_SET',0,0,'2016-02-15 16:12:30');
INSERT INTO `uniqueiddata` VALUES (1000185,'NOT_SET',0,0,'2016-02-15 16:12:30');
INSERT INTO `uniqueiddata` VALUES (1000186,'NOT_SET',0,0,'2016-02-15 16:12:30');
INSERT INTO `uniqueiddata` VALUES (1000187,'NOT_SET',0,0,'2016-02-15 16:12:44');
INSERT INTO `uniqueiddata` VALUES (1000188,'NOT_SET',0,0,'2016-02-15 16:12:44');
INSERT INTO `uniqueiddata` VALUES (1000189,'NOT_SET',0,0,'2016-02-15 16:12:44');
INSERT INTO `uniqueiddata` VALUES (1000190,'NOT_SET',0,0,'2016-02-15 16:12:45');
INSERT INTO `uniqueiddata` VALUES (1000191,'NOT_SET',0,0,'2016-02-15 16:12:45');
INSERT INTO `uniqueiddata` VALUES (1000192,'NOT_SET',0,0,'2016-02-15 16:12:45');
INSERT INTO `uniqueiddata` VALUES (1000193,'NOT_SET',0,0,'2016-02-15 16:12:46');
INSERT INTO `uniqueiddata` VALUES (1000194,'NOT_SET',0,0,'2016-02-15 16:12:46');
INSERT INTO `uniqueiddata` VALUES (1000195,'NOT_SET',0,0,'2016-02-15 16:12:46');
INSERT INTO `uniqueiddata` VALUES (1000196,'NOT_SET',0,0,'2016-02-15 16:12:46');
INSERT INTO `uniqueiddata` VALUES (1000197,'NOT_SET',0,0,'2016-02-15 16:12:46');
INSERT INTO `uniqueiddata` VALUES (1000198,'NOT_SET',0,0,'2016-02-15 16:12:46');
INSERT INTO `uniqueiddata` VALUES (1000199,'NOT_SET',0,0,'2016-02-15 16:14:50');
INSERT INTO `uniqueiddata` VALUES (1000200,'NOT_SET',0,0,'2016-02-15 16:14:50');
INSERT INTO `uniqueiddata` VALUES (1000201,'NOT_SET',0,0,'2016-02-15 16:14:50');
INSERT INTO `uniqueiddata` VALUES (1000202,'NOT_SET',0,0,'2016-02-15 16:15:03');
INSERT INTO `uniqueiddata` VALUES (1000203,'NOT_SET',0,0,'2016-02-15 16:15:03');
INSERT INTO `uniqueiddata` VALUES (1000204,'NOT_SET',0,0,'2016-02-15 16:15:03');
INSERT INTO `uniqueiddata` VALUES (1000205,'NOT_SET',0,0,'2016-02-15 16:15:11');
INSERT INTO `uniqueiddata` VALUES (1000206,'NOT_SET',0,0,'2016-02-15 16:15:11');
INSERT INTO `uniqueiddata` VALUES (1000207,'NOT_SET',0,0,'2016-02-15 16:15:11');
INSERT INTO `uniqueiddata` VALUES (1000208,'NOT_SET',0,0,'2016-02-15 22:32:45');
INSERT INTO `uniqueiddata` VALUES (1000209,'NOT_SET',0,0,'2016-02-15 22:32:45');
INSERT INTO `uniqueiddata` VALUES (1000210,'NOT_SET',0,0,'2016-02-15 22:32:45');
INSERT INTO `uniqueiddata` VALUES (1000211,'NOT_SET',0,0,'2016-02-15 22:32:45');
INSERT INTO `uniqueiddata` VALUES (1000212,'NOT_SET',0,0,'2016-02-15 22:32:45');
INSERT INTO `uniqueiddata` VALUES (1000213,'NOT_SET',0,0,'2016-02-15 22:34:23');
INSERT INTO `uniqueiddata` VALUES (1000214,'NOT_SET',0,0,'2016-02-15 23:11:20');
INSERT INTO `uniqueiddata` VALUES (1000215,'NOT_SET',0,0,'2016-02-15 23:11:20');
INSERT INTO `uniqueiddata` VALUES (1000216,'NOT_SET',0,0,'2016-02-15 23:11:20');
INSERT INTO `uniqueiddata` VALUES (1000217,'NOT_SET',0,0,'2016-02-15 23:11:20');
INSERT INTO `uniqueiddata` VALUES (1000218,'NOT_SET',0,0,'2016-02-15 23:11:20');
INSERT INTO `uniqueiddata` VALUES (1000219,'NOT_SET',0,0,'2016-02-15 23:16:58');
INSERT INTO `uniqueiddata` VALUES (1000220,'NOT_SET',0,0,'2016-02-16 19:00:04');
INSERT INTO `uniqueiddata` VALUES (1000221,'NOT_SET',0,0,'2016-02-16 19:03:23');
INSERT INTO `uniqueiddata` VALUES (1000222,'NOT_SET',0,0,'2016-02-16 19:06:00');
INSERT INTO `uniqueiddata` VALUES (1000223,'NOT_SET',0,0,'2016-02-16 19:11:54');
INSERT INTO `uniqueiddata` VALUES (1000224,'NOT_SET',0,0,'2016-02-16 19:14:18');
INSERT INTO `uniqueiddata` VALUES (1000225,'NOT_SET',0,0,'2016-02-16 19:22:28');
INSERT INTO `uniqueiddata` VALUES (1000226,'NOT_SET',0,0,'2016-02-16 21:43:08');
INSERT INTO `uniqueiddata` VALUES (1000227,'NOT_SET',0,0,'2016-02-16 21:44:28');
INSERT INTO `uniqueiddata` VALUES (1000228,'NOT_SET',0,0,'2016-02-16 21:46:22');
INSERT INTO `uniqueiddata` VALUES (1000229,'NOT_SET',0,0,'2016-02-16 21:46:52');
INSERT INTO `uniqueiddata` VALUES (1000230,'NOT_SET',0,0,'2016-02-16 21:47:53');
INSERT INTO `uniqueiddata` VALUES (1000231,'NOT_SET',0,0,'2016-02-16 21:48:12');
INSERT INTO `uniqueiddata` VALUES (1000232,'NOT_SET',0,0,'2016-02-16 21:48:59');
INSERT INTO `uniqueiddata` VALUES (1000233,'NOT_SET',0,0,'2016-02-16 21:49:38');
INSERT INTO `uniqueiddata` VALUES (1000234,'NOT_SET',0,0,'2016-02-16 21:51:07');
INSERT INTO `uniqueiddata` VALUES (1000235,'NOT_SET',0,0,'2016-02-16 21:51:19');
INSERT INTO `uniqueiddata` VALUES (1000236,'NOT_SET',0,0,'2016-02-16 21:57:09');
INSERT INTO `uniqueiddata` VALUES (1000237,'NOT_SET',0,0,'2016-02-16 22:12:34');
INSERT INTO `uniqueiddata` VALUES (1000238,'NOT_SET',0,0,'2016-02-16 22:12:45');
INSERT INTO `uniqueiddata` VALUES (1000239,'NOT_SET',0,0,'2016-02-16 22:13:01');
INSERT INTO `uniqueiddata` VALUES (1000240,'NOT_SET',0,0,'2016-02-16 22:13:08');
INSERT INTO `uniqueiddata` VALUES (1000241,'NOT_SET',0,0,'2016-02-17 23:58:31');
INSERT INTO `uniqueiddata` VALUES (1000242,'NOT_SET',0,0,'2016-02-17 23:58:38');
INSERT INTO `uniqueiddata` VALUES (1000243,'NOT_SET',0,0,'2016-02-17 23:58:46');
INSERT INTO `uniqueiddata` VALUES (1000244,'NOT_SET',0,0,'2016-02-18 00:00:21');
INSERT INTO `uniqueiddata` VALUES (1000245,'NOT_SET',0,0,'2016-02-18 00:02:48');
INSERT INTO `uniqueiddata` VALUES (1000246,'NOT_SET',0,0,'2016-02-18 00:05:42');
INSERT INTO `uniqueiddata` VALUES (1000247,'NOT_SET',0,0,'2016-02-18 00:06:33');
INSERT INTO `uniqueiddata` VALUES (1000248,'NOT_SET',0,0,'2016-02-18 00:11:51');
INSERT INTO `uniqueiddata` VALUES (1000249,'NOT_SET',0,0,'2016-02-18 00:15:13');
INSERT INTO `uniqueiddata` VALUES (1000250,'NOT_SET',0,0,'2016-02-18 00:20:42');
INSERT INTO `uniqueiddata` VALUES (1000251,'NOT_SET',0,0,'2016-02-18 00:22:35');
INSERT INTO `uniqueiddata` VALUES (1000252,'NOT_SET',0,0,'2016-02-18 00:29:39');
INSERT INTO `uniqueiddata` VALUES (1000253,'NOT_SET',0,0,'2016-02-18 00:34:22');
INSERT INTO `uniqueiddata` VALUES (1000254,'NOT_SET',0,0,'2016-02-18 00:35:05');
INSERT INTO `uniqueiddata` VALUES (1000255,'NOT_SET',0,0,'2016-02-18 00:35:10');
INSERT INTO `uniqueiddata` VALUES (1000256,'NOT_SET',0,0,'2016-02-18 00:35:14');
INSERT INTO `uniqueiddata` VALUES (1000257,'NOT_SET',0,0,'2016-02-18 00:35:17');
INSERT INTO `uniqueiddata` VALUES (1000258,'NOT_SET',0,0,'2016-02-18 00:35:22');
INSERT INTO `uniqueiddata` VALUES (1000259,'NOT_SET',0,0,'2016-02-18 00:35:27');
INSERT INTO `uniqueiddata` VALUES (1000260,'NOT_SET',0,0,'2016-02-18 00:35:37');
INSERT INTO `uniqueiddata` VALUES (1000261,'NOT_SET',0,0,'2016-02-18 00:36:37');
INSERT INTO `uniqueiddata` VALUES (1000262,'NOT_SET',0,0,'2016-02-18 00:36:48');
INSERT INTO `uniqueiddata` VALUES (1000263,'NOT_SET',0,0,'2016-02-18 00:36:53');
INSERT INTO `uniqueiddata` VALUES (1000264,'NOT_SET',0,0,'2016-02-18 00:36:57');
INSERT INTO `uniqueiddata` VALUES (1000265,'NOT_SET',0,0,'2016-02-18 00:37:01');
INSERT INTO `uniqueiddata` VALUES (1000266,'NOT_SET',0,0,'2016-02-18 00:37:05');
INSERT INTO `uniqueiddata` VALUES (1000267,'NOT_SET',0,0,'2016-02-18 00:37:07');
INSERT INTO `uniqueiddata` VALUES (1000268,'NOT_SET',0,0,'2016-02-18 00:37:20');
INSERT INTO `uniqueiddata` VALUES (1000269,'NOT_SET',0,0,'2016-02-18 00:41:21');
INSERT INTO `uniqueiddata` VALUES (1000270,'NOT_SET',0,0,'2016-02-18 00:41:55');
INSERT INTO `uniqueiddata` VALUES (1000271,'NOT_SET',0,0,'2016-02-18 00:42:00');
INSERT INTO `uniqueiddata` VALUES (1000272,'NOT_SET',0,0,'2016-02-18 00:42:03');
INSERT INTO `uniqueiddata` VALUES (1000273,'NOT_SET',0,0,'2016-02-18 00:42:09');
INSERT INTO `uniqueiddata` VALUES (1000274,'NOT_SET',0,0,'2016-02-18 00:43:13');
INSERT INTO `uniqueiddata` VALUES (1000275,'NOT_SET',0,0,'2016-02-18 00:43:18');
INSERT INTO `uniqueiddata` VALUES (1000276,'NOT_SET',0,0,'2016-02-18 00:44:32');
INSERT INTO `uniqueiddata` VALUES (1000277,'NOT_SET',0,0,'2016-02-18 00:45:24');
INSERT INTO `uniqueiddata` VALUES (1000278,'NOT_SET',0,0,'2016-02-18 17:38:42');
INSERT INTO `uniqueiddata` VALUES (1000279,'NOT_SET',0,0,'2016-02-18 17:38:50');
INSERT INTO `uniqueiddata` VALUES (1000280,'NOT_SET',0,0,'2016-02-18 17:38:59');
INSERT INTO `uniqueiddata` VALUES (1000281,'NOT_SET',0,0,'2016-02-18 17:39:04');
INSERT INTO `uniqueiddata` VALUES (1000282,'NOT_SET',0,0,'2016-02-18 17:39:12');
INSERT INTO `uniqueiddata` VALUES (1000283,'NOT_SET',0,0,'2016-02-18 17:39:21');
INSERT INTO `uniqueiddata` VALUES (1000284,'NOT_SET',0,0,'2016-02-18 17:39:37');
INSERT INTO `uniqueiddata` VALUES (1000285,'NOT_SET',0,0,'2016-02-18 17:39:55');
INSERT INTO `uniqueiddata` VALUES (1000286,'NOT_SET',0,0,'2016-02-18 17:40:03');
INSERT INTO `uniqueiddata` VALUES (1000287,'NOT_SET',0,0,'2016-02-18 17:40:10');
INSERT INTO `uniqueiddata` VALUES (1000288,'NOT_SET',0,0,'2016-02-18 17:40:24');
INSERT INTO `uniqueiddata` VALUES (1000289,'NOT_SET',0,0,'2016-02-18 17:40:29');
INSERT INTO `uniqueiddata` VALUES (1000290,'NOT_SET',0,0,'2016-02-18 17:40:32');
INSERT INTO `uniqueiddata` VALUES (1000291,'NOT_SET',0,0,'2016-02-18 17:40:46');
INSERT INTO `uniqueiddata` VALUES (1000292,'NOT_SET',0,0,'2016-02-18 17:41:00');
INSERT INTO `uniqueiddata` VALUES (1000293,'NOT_SET',0,0,'2016-02-18 17:41:09');
INSERT INTO `uniqueiddata` VALUES (1000294,'NOT_SET',0,0,'2016-02-18 17:41:12');
INSERT INTO `uniqueiddata` VALUES (1000295,'NOT_SET',0,0,'2016-02-18 17:41:16');
INSERT INTO `uniqueiddata` VALUES (1000296,'NOT_SET',0,0,'2016-02-18 17:41:44');
INSERT INTO `uniqueiddata` VALUES (1000297,'NOT_SET',0,0,'2016-02-18 17:41:50');
INSERT INTO `uniqueiddata` VALUES (1000298,'NOT_SET',0,0,'2016-02-18 17:41:54');
INSERT INTO `uniqueiddata` VALUES (1000299,'NOT_SET',0,0,'2016-02-18 17:41:58');
INSERT INTO `uniqueiddata` VALUES (1000300,'NOT_SET',0,0,'2016-02-18 17:42:02');
INSERT INTO `uniqueiddata` VALUES (1000301,'NOT_SET',0,0,'2016-02-18 17:42:06');
INSERT INTO `uniqueiddata` VALUES (1000302,'NOT_SET',0,0,'2016-02-18 17:42:11');
INSERT INTO `uniqueiddata` VALUES (1000303,'NOT_SET',0,0,'2016-02-18 17:42:48');
INSERT INTO `uniqueiddata` VALUES (1000304,'NOT_SET',0,0,'2016-02-18 17:42:52');
INSERT INTO `uniqueiddata` VALUES (1000305,'NOT_SET',0,0,'2016-02-18 17:43:05');
INSERT INTO `uniqueiddata` VALUES (1000306,'NOT_SET',0,0,'2016-02-18 17:43:11');
INSERT INTO `uniqueiddata` VALUES (1000307,'NOT_SET',0,0,'2016-02-18 17:43:28');
INSERT INTO `uniqueiddata` VALUES (1000308,'NOT_SET',0,0,'2016-02-18 17:43:38');
INSERT INTO `uniqueiddata` VALUES (1000309,'NOT_SET',0,0,'2016-02-18 17:43:45');
INSERT INTO `uniqueiddata` VALUES (1000310,'NOT_SET',0,0,'2016-02-18 17:43:47');
INSERT INTO `uniqueiddata` VALUES (1000311,'NOT_SET',0,0,'2016-02-18 17:43:52');
INSERT INTO `uniqueiddata` VALUES (1000312,'NOT_SET',0,0,'2016-02-18 17:43:57');
INSERT INTO `uniqueiddata` VALUES (1000313,'NOT_SET',0,0,'2016-02-18 17:44:03');
INSERT INTO `uniqueiddata` VALUES (1000314,'NOT_SET',0,0,'2016-02-18 17:44:10');
INSERT INTO `uniqueiddata` VALUES (1000315,'NOT_SET',0,0,'2016-02-18 17:44:13');
INSERT INTO `uniqueiddata` VALUES (1000316,'NOT_SET',0,0,'2016-02-18 17:44:17');
INSERT INTO `uniqueiddata` VALUES (1000317,'NOT_SET',0,0,'2016-02-18 17:44:20');
INSERT INTO `uniqueiddata` VALUES (1000318,'NOT_SET',0,0,'2016-02-18 17:44:29');
INSERT INTO `uniqueiddata` VALUES (1000319,'NOT_SET',0,0,'2016-02-18 17:46:36');
INSERT INTO `uniqueiddata` VALUES (1000320,'NOT_SET',0,0,'2016-02-18 17:46:46');
INSERT INTO `uniqueiddata` VALUES (1000321,'NOT_SET',0,0,'2016-02-18 17:50:52');
INSERT INTO `uniqueiddata` VALUES (1000322,'NOT_SET',0,0,'2016-02-18 17:50:59');
INSERT INTO `uniqueiddata` VALUES (1000323,'NOT_SET',0,0,'2016-02-18 20:27:42');
INSERT INTO `uniqueiddata` VALUES (1000324,'NOT_SET',0,0,'2016-02-18 20:28:24');
INSERT INTO `uniqueiddata` VALUES (1000325,'NOT_SET',0,0,'2016-02-18 20:28:41');
INSERT INTO `uniqueiddata` VALUES (1000326,'NOT_SET',0,0,'2016-02-18 20:30:27');
INSERT INTO `uniqueiddata` VALUES (1000327,'NOT_SET',0,0,'2016-02-18 22:45:38');
INSERT INTO `uniqueiddata` VALUES (1000328,'NOT_SET',0,0,'2016-02-18 22:46:11');
INSERT INTO `uniqueiddata` VALUES (1000329,'NOT_SET',0,0,'2016-02-18 22:47:38');
INSERT INTO `uniqueiddata` VALUES (1000330,'NOT_SET',0,0,'2016-02-18 22:47:50');
INSERT INTO `uniqueiddata` VALUES (1000331,'NOT_SET',0,0,'2016-06-02 21:29:07');
INSERT INTO `uniqueiddata` VALUES (1000332,'NOT_SET',0,0,'2016-06-02 21:29:07');
INSERT INTO `uniqueiddata` VALUES (1000333,'NOT_SET',0,0,'2016-06-02 21:29:07');
INSERT INTO `uniqueiddata` VALUES (1000334,'NOT_SET',0,0,'2016-06-02 21:29:07');
INSERT INTO `uniqueiddata` VALUES (1000335,'NOT_SET',0,0,'2016-06-02 21:29:07');
INSERT INTO `uniqueiddata` VALUES (1000336,'NOT_SET',0,0,'2016-06-02 21:31:00');
INSERT INTO `uniqueiddata` VALUES (1000337,'NOT_SET',0,0,'2016-06-07 09:43:05');
INSERT INTO `uniqueiddata` VALUES (1000338,'NOT_SET',0,0,'2016-06-07 09:44:38');
INSERT INTO `uniqueiddata` VALUES (1000339,'NOT_SET',0,0,'2016-06-07 09:46:36');
INSERT INTO `uniqueiddata` VALUES (1000340,'NOT_SET',0,0,'2016-06-07 10:04:57');
INSERT INTO `uniqueiddata` VALUES (1000341,'NOT_SET',0,0,'2016-06-12 12:38:23');
INSERT INTO `uniqueiddata` VALUES (1000342,'NOT_SET',0,0,'2016-06-12 12:38:23');
INSERT INTO `uniqueiddata` VALUES (1000343,'NOT_SET',0,0,'2016-06-12 12:38:23');
INSERT INTO `uniqueiddata` VALUES (1000344,'NOT_SET',0,0,'2016-06-12 12:38:23');
INSERT INTO `uniqueiddata` VALUES (1000345,'NOT_SET',0,0,'2016-06-12 12:38:23');
INSERT INTO `uniqueiddata` VALUES (1000346,'NOT_SET',0,0,'2016-06-12 14:09:36');
INSERT INTO `uniqueiddata` VALUES (1000347,'NOT_SET',0,0,'2016-06-12 14:09:36');
INSERT INTO `uniqueiddata` VALUES (1000348,'NOT_SET',0,0,'2016-06-12 14:09:36');
INSERT INTO `uniqueiddata` VALUES (1000349,'NOT_SET',0,0,'2016-06-12 14:09:36');
INSERT INTO `uniqueiddata` VALUES (1000350,'NOT_SET',0,0,'2016-06-12 14:09:36');
INSERT INTO `uniqueiddata` VALUES (1000351,'NOT_SET',0,0,'2016-06-12 14:14:55');
INSERT INTO `uniqueiddata` VALUES (1000352,'NOT_SET',0,0,'2016-06-14 10:55:22');
INSERT INTO `uniqueiddata` VALUES (1000353,'NOT_SET',0,0,'2016-06-14 10:55:22');
INSERT INTO `uniqueiddata` VALUES (1000354,'NOT_SET',0,0,'2016-06-14 10:55:22');
INSERT INTO `uniqueiddata` VALUES (1000355,'NOT_SET',0,0,'2016-06-14 10:55:22');
INSERT INTO `uniqueiddata` VALUES (1000356,'NOT_SET',0,0,'2016-06-14 10:55:22');
INSERT INTO `uniqueiddata` VALUES (1000357,'NOT_SET',0,0,'2016-06-14 10:57:31');
INSERT INTO `uniqueiddata` VALUES (1000358,'NOT_SET',0,0,'2016-06-24 17:11:46');
INSERT INTO `uniqueiddata` VALUES (1000359,'NOT_SET',0,0,'2016-06-24 17:11:46');
INSERT INTO `uniqueiddata` VALUES (1000360,'NOT_SET',0,0,'2016-06-24 17:11:46');
INSERT INTO `uniqueiddata` VALUES (1000361,'NOT_SET',0,0,'2016-06-24 17:11:46');
INSERT INTO `uniqueiddata` VALUES (1000362,'NOT_SET',0,0,'2016-06-24 17:11:46');
INSERT INTO `uniqueiddata` VALUES (1000363,'NOT_SET',0,0,'2016-07-03 23:42:26');
INSERT INTO `uniqueiddata` VALUES (1000364,'NOT_SET',0,0,'2016-07-03 23:42:26');
INSERT INTO `uniqueiddata` VALUES (1000365,'NOT_SET',0,0,'2016-07-03 23:42:26');
INSERT INTO `uniqueiddata` VALUES (1000366,'NOT_SET',0,0,'2016-07-03 23:42:26');
INSERT INTO `uniqueiddata` VALUES (1000367,'NOT_SET',0,0,'2016-07-03 23:42:26');
INSERT INTO `uniqueiddata` VALUES (1000368,'NOT_SET',0,0,'2016-07-03 23:44:12');
INSERT INTO `uniqueiddata` VALUES (1000369,'NOT_SET',0,0,'2016-07-03 23:50:02');
INSERT INTO `uniqueiddata` VALUES (1000370,'NOT_SET',0,0,'2016-07-03 23:50:02');
INSERT INTO `uniqueiddata` VALUES (1000371,'NOT_SET',0,0,'2016-07-03 23:50:02');
INSERT INTO `uniqueiddata` VALUES (1000372,'NOT_SET',0,0,'2016-07-03 23:50:02');
INSERT INTO `uniqueiddata` VALUES (1000373,'NOT_SET',0,0,'2016-07-03 23:50:02');
INSERT INTO `uniqueiddata` VALUES (1000374,'NOT_SET',0,0,'2016-07-05 18:50:51');
INSERT INTO `uniqueiddata` VALUES (1000375,'NOT_SET',0,0,'2016-07-05 23:11:55');
INSERT INTO `uniqueiddata` VALUES (1000376,'NOT_SET',0,0,'2016-07-05 23:11:55');
INSERT INTO `uniqueiddata` VALUES (1000377,'NOT_SET',0,0,'2016-07-05 23:11:55');
INSERT INTO `uniqueiddata` VALUES (1000378,'NOT_SET',0,0,'2016-07-05 23:11:55');
INSERT INTO `uniqueiddata` VALUES (1000379,'NOT_SET',0,0,'2016-07-05 23:11:55');
INSERT INTO `uniqueiddata` VALUES (1000380,'NOT_SET',0,0,'2016-07-05 23:15:14');
INSERT INTO `uniqueiddata` VALUES (1000381,'NOT_SET',0,0,'2016-07-06 08:57:30');
INSERT INTO `uniqueiddata` VALUES (1000382,'NOT_SET',0,0,'2016-07-06 08:57:30');
INSERT INTO `uniqueiddata` VALUES (1000383,'NOT_SET',0,0,'2016-07-06 08:57:30');
INSERT INTO `uniqueiddata` VALUES (1000384,'NOT_SET',0,0,'2016-07-06 08:57:30');
INSERT INTO `uniqueiddata` VALUES (1000385,'NOT_SET',0,0,'2016-07-06 08:57:30');
INSERT INTO `uniqueiddata` VALUES (1000386,'NOT_SET',0,0,'2016-07-06 08:58:55');
INSERT INTO `uniqueiddata` VALUES (1000387,'NOT_SET',0,0,'2016-07-06 14:24:09');
INSERT INTO `uniqueiddata` VALUES (1000388,'NOT_SET',0,0,'2016-07-06 14:24:09');
INSERT INTO `uniqueiddata` VALUES (1000389,'NOT_SET',0,0,'2016-07-06 14:24:09');
INSERT INTO `uniqueiddata` VALUES (1000390,'NOT_SET',0,0,'2016-07-06 14:24:09');
INSERT INTO `uniqueiddata` VALUES (1000391,'NOT_SET',0,0,'2016-07-06 14:24:09');
INSERT INTO `uniqueiddata` VALUES (1000392,'NOT_SET',0,0,'2016-07-06 14:25:57');
INSERT INTO `uniqueiddata` VALUES (1000393,'NOT_SET',0,0,'2016-07-07 01:23:56');
INSERT INTO `uniqueiddata` VALUES (1000394,'NOT_SET',0,0,'2016-07-07 01:23:56');
INSERT INTO `uniqueiddata` VALUES (1000395,'NOT_SET',0,0,'2016-07-07 01:23:56');
INSERT INTO `uniqueiddata` VALUES (1000396,'NOT_SET',0,0,'2016-07-07 01:23:56');
INSERT INTO `uniqueiddata` VALUES (1000397,'NOT_SET',0,0,'2016-07-07 01:23:56');
INSERT INTO `uniqueiddata` VALUES (1000398,'NOT_SET',0,0,'2016-07-07 01:45:10');
INSERT INTO `uniqueiddata` VALUES (1000399,'NOT_SET',0,0,'2016-07-07 01:51:59');
INSERT INTO `uniqueiddata` VALUES (1000400,'NOT_SET',0,0,'2016-07-07 01:51:59');
INSERT INTO `uniqueiddata` VALUES (1000401,'NOT_SET',0,0,'2016-07-07 01:51:59');
INSERT INTO `uniqueiddata` VALUES (1000402,'NOT_SET',0,0,'2016-07-07 01:51:59');
INSERT INTO `uniqueiddata` VALUES (1000403,'NOT_SET',0,0,'2016-07-07 01:51:59');
INSERT INTO `uniqueiddata` VALUES (1000404,'NOT_SET',0,0,'2016-07-07 01:53:28');
INSERT INTO `uniqueiddata` VALUES (1000405,'NOT_SET',0,0,'2016-07-08 01:21:37');
INSERT INTO `uniqueiddata` VALUES (1000406,'NOT_SET',0,0,'2016-07-08 01:21:37');
INSERT INTO `uniqueiddata` VALUES (1000407,'NOT_SET',0,0,'2016-07-08 01:21:37');
INSERT INTO `uniqueiddata` VALUES (1000408,'NOT_SET',0,0,'2016-07-08 01:21:37');
INSERT INTO `uniqueiddata` VALUES (1000409,'NOT_SET',0,0,'2016-07-08 01:21:37');
INSERT INTO `uniqueiddata` VALUES (1000410,'NOT_SET',0,0,'2016-07-08 01:23:17');
INSERT INTO `uniqueiddata` VALUES (1000411,'NOT_SET',0,0,'2016-07-14 10:19:45');
INSERT INTO `uniqueiddata` VALUES (1000412,'NOT_SET',0,0,'2016-07-14 10:19:45');
INSERT INTO `uniqueiddata` VALUES (1000413,'NOT_SET',0,0,'2016-07-14 10:19:45');
INSERT INTO `uniqueiddata` VALUES (1000414,'NOT_SET',0,0,'2016-07-14 10:19:45');
INSERT INTO `uniqueiddata` VALUES (1000415,'NOT_SET',0,0,'2016-07-14 10:19:45');
INSERT INTO `uniqueiddata` VALUES (1000416,'NOT_SET',0,0,'2016-07-14 10:21:22');
INSERT INTO `uniqueiddata` VALUES (1000417,'NOT_SET',0,0,'2016-07-14 13:19:59');
INSERT INTO `uniqueiddata` VALUES (1000418,'NOT_SET',0,0,'2016-07-14 13:19:59');
INSERT INTO `uniqueiddata` VALUES (1000419,'NOT_SET',0,0,'2016-07-14 13:19:59');
INSERT INTO `uniqueiddata` VALUES (1000420,'NOT_SET',0,0,'2016-07-14 13:19:59');
INSERT INTO `uniqueiddata` VALUES (1000421,'NOT_SET',0,0,'2016-07-14 13:19:59');
INSERT INTO `uniqueiddata` VALUES (1000422,'NOT_SET',0,0,'2016-07-14 13:22:36');
INSERT INTO `uniqueiddata` VALUES (1000423,'NOT_SET',0,0,'2016-07-14 13:27:51');
INSERT INTO `uniqueiddata` VALUES (1000424,'NOT_SET',0,0,'2016-07-14 13:27:51');
INSERT INTO `uniqueiddata` VALUES (1000425,'NOT_SET',0,0,'2016-07-14 13:27:51');
INSERT INTO `uniqueiddata` VALUES (1000426,'NOT_SET',0,0,'2016-07-14 13:27:51');
INSERT INTO `uniqueiddata` VALUES (1000427,'NOT_SET',0,0,'2016-07-14 13:27:51');
INSERT INTO `uniqueiddata` VALUES (1000428,'NOT_SET',0,0,'2016-07-14 13:29:27');
INSERT INTO `uniqueiddata` VALUES (1000429,'NOT_SET',0,0,'2016-07-20 16:28:04');
INSERT INTO `uniqueiddata` VALUES (1000430,'NOT_SET',0,0,'2016-07-20 16:28:04');
INSERT INTO `uniqueiddata` VALUES (1000431,'NOT_SET',0,0,'2016-07-20 16:28:04');
INSERT INTO `uniqueiddata` VALUES (1000432,'NOT_SET',0,0,'2016-07-20 16:28:04');
INSERT INTO `uniqueiddata` VALUES (1000433,'NOT_SET',0,0,'2016-07-20 16:28:04');
INSERT INTO `uniqueiddata` VALUES (1000434,'NOT_SET',0,0,'2016-07-20 17:16:05');
INSERT INTO `uniqueiddata` VALUES (1000435,'NOT_SET',0,0,'2016-07-23 20:32:11');
INSERT INTO `uniqueiddata` VALUES (1000436,'NOT_SET',0,0,'2016-07-23 20:32:11');
INSERT INTO `uniqueiddata` VALUES (1000437,'NOT_SET',0,0,'2016-07-23 20:32:11');
INSERT INTO `uniqueiddata` VALUES (1000438,'NOT_SET',0,0,'2016-07-23 20:32:11');
INSERT INTO `uniqueiddata` VALUES (1000439,'NOT_SET',0,0,'2016-07-23 20:32:11');
INSERT INTO `uniqueiddata` VALUES (1000440,'NOT_SET',0,0,'2016-07-23 20:54:37');
INSERT INTO `uniqueiddata` VALUES (1000441,'NOT_SET',0,0,'2016-07-28 20:18:23');
INSERT INTO `uniqueiddata` VALUES (1000442,'NOT_SET',0,0,'2016-07-28 20:18:23');
INSERT INTO `uniqueiddata` VALUES (1000443,'NOT_SET',0,0,'2016-07-28 20:18:23');
INSERT INTO `uniqueiddata` VALUES (1000444,'NOT_SET',0,0,'2016-07-28 20:18:23');
INSERT INTO `uniqueiddata` VALUES (1000445,'NOT_SET',0,0,'2016-07-28 20:18:23');
INSERT INTO `uniqueiddata` VALUES (1000446,'NOT_SET',0,0,'2016-07-28 20:20:56');
/*!40000 ALTER TABLE `uniqueiddata` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2016-12-09 17:37:16

View file

@ -1,54 +0,0 @@
ALTER TABLE charainfo
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charastatus
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charainfoblacklist
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charaglobalitem
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charainfofriendlist
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charainfolinkshell
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charainfosearch
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charaitemcrystal
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charaitemcurrency
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charaitemgearset
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charaiteminventory
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charaquestnew
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE infolinkshell
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE uniqueiddata
MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE charainfo
ADD `Orchestrion` binary(38) DEFAULT NULL AFTER `Mounts`;
ALTER TABLE `charainfo` CHANGE `Mounts` `Mounts` BINARY(17) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `Orchestrion` `Orchestrion` BINARY(40) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `Minions` `Minions` BINARY(40) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `QuestCompleteFlags` `QuestCompleteFlags` VARBINARY(396) NULL DEFAULT NULL;
ALTER TABLE `charainfo` CHANGE `Aetheryte` `Aetheryte` BINARY(17) NULL DEFAULT NULL;
ALTER TABLE `charainfo` ADD COLUMN `EquipDisplayFlags` INT(3) NULL DEFAULT '0' AFTER `GMRank`;
ALTER TABLE `charainfo` ADD COLUMN `Pose` INT(3) NULL DEFAULT '0' AFTER `EquipDisplayFlags`;
ALTER TABLE `characlass` DROP PRIMARY KEY, ADD INDEX `CharacterId` (`CharacterId`);

File diff suppressed because it is too large Load diff

View file

@ -1,226 +0,0 @@
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 10.1.28-MariaDB - mariadb.org binary distribution
-- Server OS: Win32
-- HeidiSQL Version: 9.4.0.5125
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- Dumping structure for table sapphire.zonepositions
CREATE TABLE IF NOT EXISTS `zonepositions` (
`id` int(11) NOT NULL,
`target_zone_id` int(11) NOT NULL,
`pos_x` float NOT NULL,
`pos_y` float NOT NULL,
`pos_z` float NOT NULL,
`pos_o` float NOT NULL,
`radius` int(11) NOT NULL DEFAULT '2',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- Dumping data for table sapphire.zonepositions: 192 rows
DELETE FROM `zonepositions`;
/*!40000 ALTER TABLE `zonepositions` DISABLE KEYS */;
INSERT INTO `zonepositions` (`id`, `target_zone_id`, `pos_x`, `pos_y`, `pos_z`, `pos_o`, `radius`) VALUES
(1317556, 133, 16.3201, 8.34547, -91.7458, 2.48019, 2),
(1317554, 133, 140.8, 11.15, -22.6, 2.5, 2),
(1317535, 132, 10.2559, 1.03707, -11.7784, -0.43944, 2),
(1317558, 133, -130.42, 5.5, -36.36, -1.69019, 2),
(1317552, 148, 129.341, 26.9524, -311.06, -0.01836, 2),
(1317623, 132, 149.42, -11.2378, 157.749, -1.66604, 2),
(1317628, 152, -515.845, 18.4252, 271.573, 2.83271, 2),
(1320077, 148, 384, -3, -184, -1, 2),
(1317540, 132, -104, 1, 12.6, 0.3, 2),
(1320086, 148, 158, -24, 546, -3, 2),
(1317630, 153, -366, 29, -241, 0.8, 2),
(1332303, 152, -165, 6, 450, -1.4, 2),
(1320082, 153, 275.5, 11.1, -258.7, -0.8, 2),
(1317533, 132, 99.2226, 4.78645, 16.5797, -0.741859, 2),
(1317542, 154, 452, -1, 196, -1, 2),
(1320072, 133, -205, 10, -96, 1.6, 2),
(1317633, 154, 14.8739, -55.3396, 527.905, -2.44165, 2),
(1359064, 132, 40.1767, 1.19993, 33.5491, -2.0572, 2),
(1359244, 152, -196.215, 3.10004, 291.934, 1.0742, 2),
(1359648, 153, 185.686, 9.21862, -74.6898, -0.828473, 2),
(1359652, 154, -31.4935, -39.9006, 238.436, -1.95462, 2),
(3693843, 129, -96.5371, 18.5462, 0.164331, 1.55699, 2),
(3693863, 130, -144.305, -3.15489, -163.06, 0.844608, 2),
(3860373, 135, 156.876, 14.0959, 680.845, -3.01048, 2),
(3961173, 137, 491.614, 18.236, 474.858, -2.71565, 2),
(3965407, 138, 651.437, 9.39925, 507.082, -0.015805, 2),
(4142002, 139, 437.484, 4.21339, 84.1072, 0, 2),
(4142062, 180, -117.633, 64.3225, -219.456, 0, 2),
(3965476, 140, 73.0305, 45.9193, -232.058, -0.837415, 2),
(3965498, 145, -379.737, -59, 142.563, -1.60992, 2),
(3965549, 146, -153.169, 26.3166, -418.709, -0.966313, 2),
(3965676, 147, 28.5353, 6.97858, 454.249, -1.59139, 2),
(3965792, 155, 228.603, 312, -238.728, -0.872663, 2),
(3965896, 156, 47.7514, 20.4912, -667.904, -1.5964, 2),
(2563653, 132, 165.172, -2.53922, 83.0344, 2.28249, 2),
(2563690, 133, 101.232, 8.36029, -108.339, -1.72413, 2),
(2563700, 133, 117.217, 11.5772, -231.311, 2.29494, 2),
(2563702, 133, -146.938, 3.99984, -13.7873, -1.46085, 2),
(2563740, 133, -307.932, 7.06028, -174.981, 1.41482, 2),
(2563748, 133, -73.8652, 6.99362, -136.568, 1.13622, 2),
(2563810, 148, 128.68, 25.6247, -302.237, -0.407334, 2),
(2563828, 154, 448.667, -0.881895, 198.039, -0.81543, 2),
(4205005, 134, 224, 113.1, -261, 0.71968, 2),
(4205026, 141, -16.1511, -1.87702, -163.139, 3.13206, 2),
(4265667, 250, 40.9851, 5.6, -23.4832, 0, 2),
(3724283, 148, -502.084, 73.8739, -349.12, 0.022136, 2),
(1406089, 155, 7.46379, 184.824, 573.833, -2.9039, 2),
(1406085, 154, -366.571, -7.6982, 194.777, 0.759619, 2),
(4176152, 153, -282.699, -0.13973, 692.715, 2.57545, 2),
(1320088, 145, 366.689, 31.0121, -291.751, -0.526007, 2),
(1406087, 156, 120.007, 31.4998, -765.044, -0.804052, 2),
(1418272, 155, -228.277, 218.179, 698.528, -2.42958, 2),
(1418277, 147, -102.023, 84.4271, -411.113, -0.874677, 2),
(4295875, 156, -421.317, -3.21682, -122.225, -2.80336, 2),
(3876614, 134, -36.4611, 36.6508, 150.243, 1.98843, 2),
(2464045, 129, 58.7886, 20, -0.066879, -1.53495, 2),
(2453662, 134, 194.511, 65.2717, 285.229, -1.59811, 2),
(2464048, 135, 235.118, 73.7873, -338.534, 0.887104, 2),
(2453729, 134, -372.325, 33.3472, -595.069, 0.942594, 2),
(2464054, 138, 810.028, 49.9019, 384.635, -2.54678, 2),
(2210360, 135, -46.1092, 73.9411, 116.089, 1.54535, 2),
(2443382, 128, 24.9766, 44.5, 175.56, -3.13474, 2),
(4323017, 135, 596.704, 61.6635, -112.685, -2.81539, 2),
(2453713, 135, 571.106, 96.3, -518.642, -0.05646, 2),
(2453673, 137, -132.425, 69.3748, 739.518, -3.13744, 2),
(2453708, 135, 693.492, 79.5221, -382.789, -0.232514, 2),
(2453666, 137, 246.611, 56.1687, 831.572, 2.89764, 2),
(2372269, 130, 42.3246, 4, -158.943, -0.273386, 2),
(2377056, 141, -114.159, 18.3778, 332.705, 2.8655, 2),
(2376310, 130, 91.1395, 4, -111.101, -2.27906, 2),
(2377064, 131, 94.3718, 4, -108.09, 0.815058, 2),
(2376964, 130, 58.4986, 8, -88.0199, -2.27798, 2),
(2377068, 131, 67.2002, 8, -80.4213, 0.854852, 2),
(2376969, 130, -12.143, 10, -44.8101, -2.89781, 2),
(2377071, 131, -7.5771, 12.5628, -27.816, 0.26209, 2),
(2369965, 130, -176.583, 14, -14.6283, 1.56838, 2),
(2377075, 140, 465.194, 96.6206, 159.051, -1.73197, 2),
(2379246, 130, -123.162, 9.99999, -8.84062, -1.56451, 2),
(2377082, 131, -107.435, 6.98457, -9.0397, 1.57633, 2),
(2379249, 130, -121.899, 10.0722, 9.43441, -1.5354, 2),
(2377078, 131, -106.993, 6.98457, 9.39492, 1.58387, 2),
(2372279, 131, 159.45, 4, 42.6079, -1.86339, 2),
(2376287, 141, 20.1486, 18.3778, 565.384, 1.34262, 2),
(2210427, 128, -3.02154, 43, -27.8195, 1.52636, 2),
(2210364, 129, -2.24011, 20.0008, 27.8738, 1.54483, 2),
(2210434, 128, -92.7087, 35.5, 104.59, 0.839544, 2),
(2210376, 129, -89.9423, 20.6775, 111.428, -3.09037, 2),
(2210411, 128, -70.0571, 40.6609, -125.182, 2.3762, 2),
(2210368, 129, -84.1969, 18.0003, -22.3949, 0.030137, 2),
(2453691, 134, -166.683, 35.0913, -726.536, -0.302407, 2),
(2464051, 137, -108.773, 70.3399, 46.5696, 1.79447, 2),
(2453742, 137, 80.4418, 80.0177, -115.679, 0.063873, 2),
(2453717, 139, 717.879, 0.468218, 208.285, -3.11069, 2),
(2453747, 138, 408.384, 27.5189, -5.33734, -0.320773, 2),
(2453733, 139, -472.983, 1.43406, 283.031, 2.36451, 2),
(4057217, 139, -350.797, 47.4884, -14.5283, -1.14213, 2),
(4056858, 148, -326.559, 51.2799, -87.2374, -2.82522, 2),
(4057229, 139, 289.163, 41.1628, -198.013, 0.64875, 2),
(4056861, 148, 238.76, 54.7158, -252.767, -1.7284, 2),
(2376981, 141, -398.28, -0.789985, 99.3511, 1.96518, 2),
(2372291, 140, 258.5, 52.6883, -4.64944, -0.456935, 2),
(2377124, 141, 226.726, 2.7533, 669.653, -2.22354, 2),
(2372323, 146, -423.482, 12.8616, -422.811, 0.697403, 2),
(2377115, 141, 446.556, -17.9999, -174.403, -0.73727, 2),
(2372300, 145, -559.838, -19.777, 335.605, 2.10368, 2),
(2377133, 141, -26.9884, 33, -486.807, 0.127408, 2),
(2372337, 147, 36.6025, 5.93622, 506.673, 3.10036, 2),
(2377127, 145, -173.756, -45.2898, 483.95, -2.64246, 2),
(2377118, 146, -27.6321, 16.1257, -760.456, -0.049568, 2),
(1359242, 148, 5.5, -1.2, 39, 2, 2),
(5866176, 397, 469.424, 224.482, 878.862, 2.871, 2),
(5866084, 418, -187.517, 14.727, -57.656, 0.855, 2),
(5866221, 418, 154.928, -19.477, 55.268, -0.73, 2),
(5866257, 419, 256.628, -13.734, -103.892, -1.439, 2),
(5866245, 419, -18.889, -12.57, -68.431, -1.771, 2),
(5866233, 418, -61.586, 18.543, -92.179, -0.651, 2),
(5866262, 419, 19.538, -12.472, -68.271, 2.03, 2),
(5866230, 418, -154.269, 28.129, -132.983, -0.0197, 2),
(5866241, 419, -310.907, -24.644, -67.234, 2.203, 2),
(5866236, 418, 55.03, 27.575, -73.413, 0.242, 2),
(5877389, 418, -64.611, 8.113, 33.657, 1.315, 2),
(6905480, 635, 71.855, 0, 90.949, 90.94, 2),
(6905243, 612, -625.769, 130, -499.801, -2.776, 2),
(6905262, 612, 417.205, 114.272, 235.743, -0.195, 2),
(6905281, 620, 121.319, 118.155, -735.75, -2.59, 2),
(6905290, 620, -264.638, 257.78, 754.837, -2.283, 2),
(6905383, 621, -649.236, 50, -7.226, -2.841, 2),
(6905404, 621, 600.419, 80.999, 650.526, 1.105, 2),
(6905785, 628, 36.879, 4.499, -38.675, 1.443, 2),
(6905517, 613, 340.799, -119.983, -259.297, 1.787, 2),
(6905556, 613, 97.253, 3.0741, -578.398, -2.061, 2),
(6905594, 614, 430.091, 68.028, -76.178, 2.976, 2),
(6905606, 614, 240.855, 4.903, -405.901, 0.848, 2),
(6905720, 622, 553.881, -19.505, 354.754, 3.004, 2),
(6905736, 622, 77.954, 114.904, 54.161, 3.124, 2),
(5877470, 397, 475.573, 212.539, 724.138, -3.088, 2),
(5877548, 401, -614.543, -122.5, 560.65, -2.967, 2),
(5877554, 401, -602.771, -51.051, -402.786, -2.478, 2),
(5877573, 402, -732.918, -186.96, -600.872, 0.791, 2),
(5877684, 478, 78.692, 207.827, -11.564, -2.42, 2),
(5877731, 398, 527.068, -51.275, 44.389, 2.778, 2),
(5877743, 398, -295.193, -21.131, 30.783, -1.449, 2),
(5877767, 400, 244.675, -42.223, 589.172, 1.071, 2),
(5877776, 400, -577.575, 48.808, 305.611, -0.752, 2),
(4168380, 130, 65.298, 4, -118.459, -0.312, 2),
(4168385, 130, -154.348, 14.005, 70.563, -0.192, 2),
(4169078, 131, -52.238, 10, 10.248, -0.679, 2),
(4203093, 131, -20.026, 14.049, 74.811, 2.875, 2),
(4169094, 131, 30.708, 12.056, 111.8, 1.098, 2),
(4194547, 131, 91.638, 12, 59.42, -2.105, 2),
(6953712, 131, 131.552, 4, -31.932, 0.23, 2),
(4203094, 131, 3.728, 29.999, -23.907, 1.886, 2),
(4169099, 131, -99.958, 41, 88.312, 1.483, 2),
(6390350, 130, -26.465, 83, -17.332, -0.148, 2),
(4169491, 140, 467.013, 96.62, 159.009, -1.692, 2),
(4169494, 141, -115.018, 18.377, 333.546, 2.882, 2),
(4169496, 141, 18.549, 18.377, 565.206, 1.345, 2),
(4170478, 128, 15.792, 40, 71.464, 3.027, 2),
(4170467, 128, -55.892, 42, -129.285, -2.857, 2),
(4170361, 129, -335.144, 11.999, 53.509, -0.002, 2),
(4170387, 129, -180.396, 4, 180.309, 0.386, 2),
(4203091, 128, -3.309, 44, -218.191, -1.517, 2),
(4203092, 129, -213.582, 16, 48.801, -0.006, 2),
(6390356, 128, -11.685, 91.499, -13.191, -0.377, 2),
(4170499, 134, -39.562, 36.039, 152.972, 2.041, 2),
(4170784, 135, -39.271, 71.504, 116.516, 1.587, 2),
(6100648, 478, -74.827, 209.524, -23.346, 2.854, 2),
(5865600, 478, 135.482, 207, 114.076, -2.166, 2),
(5865605, 478, 79.813, 203.98, 132.018, 2.558, 2),
(5865668, 399, -221.2, 104.271, -599.535, 0.268, 2),
(5865672, 399, -221.2, 155.809, -516.036, 0.295, 2),
(5865598, 399, -221.2, 104.271, -599.535, 0.268, 2),
(5865604, 399, -533.153, 153.074, -487.968, 0.18, 2),
(5916706, 418, -111.521, 15.14, -29.188, 0.0077, 2),
(5916705, 418, 47.713, 23.979, 1.144, 1.457, 2),
(5916704, 418, 47.701, -12.02, 67.738, 2.057, 2),
(5916727, 155, -161.481, 304.153, -321.403, 0.795, 2),
(5916708, 419, 0.000456, 16.015, -35.806, -0.0296, 2),
(5916724, 419, 80.156, 10.054, -123.9, -2.445, 2),
(5916722, 419, -80.517, 10.054, -123.315, 2.468, 2),
(5916717, 419, -136.889, -12.634, -16.757, 0.978, 2),
(5916716, 419, 136.079, -9.234, -66.426, -0.989, 2),
(6905273, 612, 475.811, 61.576, -555.551, -1.274, 2),
(6905297, 620, -653.588, 51.867, -790.168, 1.1366, 2),
(6906489, 635, -82.295, 0, 8.925, 1.77, 2),
(6906492, 635, 100.312, 2.731, -113.366, -0.481, 2),
(3961228, 137, -11.9, 70.5, 3.273, -1.553, 2),
(3965420, 138, 257.506, -22.75, 224.382, 2.526, 2),
(1359650, 153, -226.643, 21.23, 351.76, -0.74, 2),
(3965709, 147, 22.9166, 48.309, -26.801, -2.406, 2),
(3965584, 146, -320.39, 8.262, 406.08, -1.455, 2),
(5668783, 144, -0.3458, 1.0425, -5.786, 0.0603, 2);
/*!40000 ALTER TABLE `zonepositions` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View file

@ -1,14 +1,5 @@
#!/bin/bash
cd sql
mysql -u root -e 'create database sapphire;'
for f in *.sql
do
[ "$f" = "update.sql" ] && continue;
echo -n "importing $f into the database..."
mysql sapphire -u root < $f && echo "Success"
CODE=$?
if [ $CODE -ne 0 ]; then exit $CODE; fi
done
#mysql sapphire -u root < update.sql -f
echo 'todo: test update sql'
cd bin
./dbm --mode initialize --user root --database sapphire --sfile sql/schema/schema.sql --ifile sql/schema/inserts.sql
./dbm --mode liquidate --user root --database sapphire --force
cd ..

10
src/api/CMakeLists.txt Normal file
View file

@ -0,0 +1,10 @@
cmake_minimum_required( VERSION 2.6 )
cmake_policy( SET CMP0015 NEW )
project( Sapphire )
file( GLOB SERVER_PUBLIC_INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*" )
file( GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*" )
add_executable( api ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES} )
target_link_libraries( api common )

View file

@ -3,7 +3,7 @@
#include <memory>
namespace Core
namespace Sapphire
{
class Cell;
class Zone;

View file

@ -1,6 +1,6 @@
#include "LoginSession.h"
namespace Core {
namespace Sapphire {
LoginSession::LoginSession( void )
{
//setSocket(NULL);

View file

@ -7,7 +7,7 @@
#include <string>
#include <string.h>
namespace Core
namespace Sapphire
{
class LoginSession

View file

@ -6,9 +6,9 @@
#include <Database/DatabaseDef.h>
extern Core::Data::ExdDataGenerated g_exdDataGen;
extern Sapphire::Data::ExdDataGenerated g_exdDataGen;
namespace Core {
namespace Sapphire {
using namespace Common;
@ -64,7 +64,7 @@ void PlayerMinimal::load( uint32_t charId )
m_guardianDeity = res->getUInt8( "GuardianDeity" );
m_class = res->getUInt8( "Class" );
m_contentId = res->getUInt64( "ContentId" );
m_zoneId = res->getUInt16( "TerritoryId" );
m_territoryTypeId = res->getUInt16( "TerritoryType" );
res.reset();
@ -146,7 +146,7 @@ std::string PlayerMinimal::getInfoJson()
uint8_t PlayerMinimal::getClassLevel()
{
uint8_t classJobIndex = g_exdDataGen.get< Core::Data::ClassJob >( static_cast< uint8_t >( m_class ) )->expArrayIndex;
uint8_t classJobIndex = g_exdDataGen.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( m_class ) )->expArrayIndex;
return static_cast< uint8_t >( m_classMap[ classJobIndex ] );
}
@ -206,11 +206,11 @@ void PlayerMinimal::saveAsNew()
float x, y, z, o;
int32_t startTown = 0;
switch( static_cast< Core::Common::ClassJob >( m_class ) )
switch( static_cast< Sapphire::Common::ClassJob >( m_class ) )
{
case Core::Common::ClassJob::Conjurer:
case Core::Common::ClassJob::Lancer:
case Core::Common::ClassJob::Archer:
case Sapphire::Common::ClassJob::Conjurer:
case Sapphire::Common::ClassJob::Lancer:
case Sapphire::Common::ClassJob::Archer:
x = 127.0f;
y = -13.0f;
z = 147.0f;
@ -219,8 +219,8 @@ void PlayerMinimal::saveAsNew()
startTown = 2;
break;
case Core::Common::ClassJob::Marauder:
case Core::Common::ClassJob::Arcanist:
case Sapphire::Common::ClassJob::Marauder:
case Sapphire::Common::ClassJob::Arcanist:
x = -53.0f;
y = 18.0f;
z = 0.0f;
@ -229,9 +229,9 @@ void PlayerMinimal::saveAsNew()
startZone = 181;
break;
case Core::Common::ClassJob::Thaumaturge:
case Core::Common::ClassJob::Pugilist:
case Core::Common::ClassJob::Gladiator:
case Sapphire::Common::ClassJob::Thaumaturge:
case Sapphire::Common::ClassJob::Pugilist:
case Sapphire::Common::ClassJob::Gladiator:
x = 42.0f;
y = 4.0f;
z = -157.6f;
@ -245,19 +245,11 @@ void PlayerMinimal::saveAsNew()
}
// "(AccountId, CharacterId, ContentId, Name, Hp, Mp, "
// "Customize, Voice, IsNewGame, TerritoryId, PosX, PosY, PosZ, PosR, ModelEquip, "
// "Customize, Voice, IsNewGame, TerritoryType, PosX, PosY, PosZ, PosR, ModelEquip, "
// "IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, "
// "HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, "
// "Aetheryte, GMRank, UPDATE_DATE )
// CharacterId, ClassIdx, Exp, Lvl
auto stmtClass = g_charaDb.getPreparedStatement( Db::ZoneDbStatements::CHARA_CLASS_INS );
stmtClass->setInt( 1, m_id );
stmtClass->setInt( 2, g_exdDataGen.get< Core::Data::ClassJob >( m_class )->expArrayIndex );
stmtClass->setInt( 3, 0 );
stmtClass->setInt( 4, 1 );
g_charaDb.directExecute( stmtClass );
auto stmt = g_charaDb.getPreparedStatement( Db::ZoneDbStatements::CHARA_INS );
stmt->setInt( 1, m_accountId );
stmt->setInt( 2, m_id );
@ -294,6 +286,14 @@ void PlayerMinimal::saveAsNew()
stmt->setBinary( 33, orchestrion );
g_charaDb.directExecute( stmt );
// CharacterId, ClassIdx, Exp, Lvl
auto stmtClass = g_charaDb.getPreparedStatement( Db::ZoneDbStatements::CHARA_CLASS_INS );
stmtClass->setInt( 1, m_id );
stmtClass->setInt( 2, g_exdDataGen.get< Sapphire::Data::ClassJob >( m_class )->expArrayIndex );
stmtClass->setInt( 3, 0 );
stmtClass->setInt( 4, 1 );
g_charaDb.directExecute( stmtClass );
auto stmtSearchInfo = g_charaDb.getPreparedStatement( Db::ZoneDbStatements::CHARA_SEARCHINFO_INS );
stmtSearchInfo->setInt( 1, m_id );
g_charaDb.directExecute( stmtSearchInfo );
@ -326,14 +326,14 @@ void PlayerMinimal::saveAsNew()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// SETUP EQUIPMENT / STARTING GEAR
auto classJobInfo = g_exdDataGen.get< Core::Data::ClassJob >( m_class );
auto classJobInfo = g_exdDataGen.get< Sapphire::Data::ClassJob >( m_class );
uint32_t weaponId = classJobInfo->itemStartingWeapon;
uint64_t uniqueId = getNextUId64();
uint8_t race = customize[ CharaLook::Race ];
uint8_t gender = customize[ CharaLook::Gender ];
auto raceInfo = g_exdDataGen.get< Core::Data::Race >( race );
auto raceInfo = g_exdDataGen.get< Sapphire::Data::Race >( race );
uint32_t body;
uint32_t hands;
@ -409,6 +409,7 @@ void PlayerMinimal::insertDbGlobalItem( uint32_t itemId, uint64_t uniqueId ) con
stmtItemGlobal->setInt( 1, m_id );
stmtItemGlobal->setInt64( 2, uniqueId );
stmtItemGlobal->setInt( 3, itemId );
stmtItemGlobal->setInt( 4, 1 ); // stack of 1
g_charaDb.directExecute( stmtItemGlobal );
}

View file

@ -5,7 +5,7 @@
#include <stdint.h>
#include <string.h>
namespace Core
namespace Sapphire
{
class PlayerMinimal
@ -131,7 +131,7 @@ namespace Core
uint32_t getZoneId() const
{
return m_zoneId;
return m_territoryTypeId;
}
uint32_t getTribe() const
@ -185,7 +185,7 @@ namespace Core
uint8_t m_tribe;
uint16_t m_zoneId;
uint16_t m_territoryTypeId;
uint64_t m_modelMainWeapon;
uint64_t m_modelSubWeapon;

View file

@ -10,17 +10,17 @@
#include <Database/DatabaseDef.h>
Core::Network::SapphireAPI::SapphireAPI()
Sapphire::Network::SapphireAPI::SapphireAPI()
{
}
Core::Network::SapphireAPI::~SapphireAPI()
Sapphire::Network::SapphireAPI::~SapphireAPI()
{
}
bool Core::Network::SapphireAPI::login( const std::string& username, const std::string& pass, std::string& sId )
bool Sapphire::Network::SapphireAPI::login( const std::string& username, const std::string& pass, std::string& sId )
{
std::string query =
"SELECT account_id FROM accounts WHERE account_name = '" + username + "' AND account_pass = '" + pass + "';";
@ -63,7 +63,7 @@ bool Core::Network::SapphireAPI::login( const std::string& username, const std::
}
bool Core::Network::SapphireAPI::insertSession( const uint32_t& accountId, std::string& sId )
bool Sapphire::Network::SapphireAPI::insertSession( const uint32_t& accountId, std::string& sId )
{
// create session for the new sessionid and store to sessionlist
auto pSession = std::make_shared< Session >();
@ -76,7 +76,7 @@ bool Core::Network::SapphireAPI::insertSession( const uint32_t& accountId, std::
}
bool Core::Network::SapphireAPI::createAccount( const std::string& username, const std::string& pass, std::string& sId )
bool Sapphire::Network::SapphireAPI::createAccount( const std::string& username, const std::string& pass, std::string& sId )
{
// get account from login name
auto pQR = g_charaDb.query( "SELECT account_id FROM accounts WHERE account_name = '" + username + "';" );
@ -107,10 +107,10 @@ bool Core::Network::SapphireAPI::createAccount( const std::string& username, con
}
int
Core::Network::SapphireAPI::createCharacter( const int& accountId, const std::string& name, const std::string& infoJson,
Sapphire::Network::SapphireAPI::createCharacter( const int& accountId, const std::string& name, const std::string& infoJson,
const int& gmRank )
{
Core::PlayerMinimal newPlayer;
Sapphire::PlayerMinimal newPlayer;
newPlayer.setAccountId( accountId );
newPlayer.setId( getNextCharId() );
@ -179,7 +179,7 @@ Core::Network::SapphireAPI::createCharacter( const int& accountId, const std::st
return newPlayer.getAccountId();
}
void Core::Network::SapphireAPI::deleteCharacter( std::string name, uint32_t accountId )
void Sapphire::Network::SapphireAPI::deleteCharacter( std::string name, uint32_t accountId )
{
PlayerMinimal deletePlayer;
auto charList = getCharList( accountId );
@ -206,20 +206,20 @@ void Core::Network::SapphireAPI::deleteCharacter( std::string name, uint32_t acc
g_charaDb.execute( "DELETE FROM charaitemcrystal WHERE CharacterId LIKE '" + std::to_string( id ) + "';" );
g_charaDb.execute( "DELETE FROM charaiteminventory WHERE CharacterId LIKE '" + std::to_string( id ) + "';" );
g_charaDb.execute( "DELETE FROM charaitemgearset WHERE CharacterId LIKE '" + std::to_string( id ) + "';" );
g_charaDb.execute( "DELETE FROM charaquestnew WHERE CharacterId LIKE '" + std::to_string( id ) + "';" );
g_charaDb.execute( "DELETE FROM charaquest WHERE CharacterId LIKE '" + std::to_string( id ) + "';" );
}
std::vector< Core::PlayerMinimal > Core::Network::SapphireAPI::getCharList( uint32_t accountId )
std::vector< Sapphire::PlayerMinimal > Sapphire::Network::SapphireAPI::getCharList( uint32_t accountId )
{
std::vector< Core::PlayerMinimal > charList;
std::vector< Sapphire::PlayerMinimal > charList;
auto pQR = g_charaDb.query(
"SELECT CharacterId, ContentId FROM charainfo WHERE AccountId = " + std::to_string( accountId ) + ";" );
while( pQR->next() )
{
Core::PlayerMinimal player;
Sapphire::PlayerMinimal player;
uint32_t charId = pQR->getUInt( 1 );
@ -230,7 +230,7 @@ std::vector< Core::PlayerMinimal > Core::Network::SapphireAPI::getCharList( uint
return charList;
}
bool Core::Network::SapphireAPI::checkNameTaken( std::string name )
bool Sapphire::Network::SapphireAPI::checkNameTaken( std::string name )
{
g_charaDb.escapeString( name );
@ -244,7 +244,7 @@ bool Core::Network::SapphireAPI::checkNameTaken( std::string name )
return true;
}
uint32_t Core::Network::SapphireAPI::getNextCharId()
uint32_t Sapphire::Network::SapphireAPI::getNextCharId()
{
uint32_t charId = 0;
@ -260,7 +260,7 @@ uint32_t Core::Network::SapphireAPI::getNextCharId()
return charId;
}
uint64_t Core::Network::SapphireAPI::getNextContentId()
uint64_t Sapphire::Network::SapphireAPI::getNextContentId()
{
uint64_t contentId = 0;
@ -276,7 +276,7 @@ uint64_t Core::Network::SapphireAPI::getNextContentId()
return contentId;
}
int Core::Network::SapphireAPI::checkSession( const std::string& sId )
int Sapphire::Network::SapphireAPI::checkSession( const std::string& sId )
{
auto it = m_sessionMap.find( sId );
@ -287,7 +287,7 @@ int Core::Network::SapphireAPI::checkSession( const std::string& sId )
}
bool Core::Network::SapphireAPI::removeSession( const std::string& sId )
bool Sapphire::Network::SapphireAPI::removeSession( const std::string& sId )
{
auto it = m_sessionMap.find( sId );

View file

@ -7,12 +7,12 @@
#include <memory>
#include "PlayerMinimal.h"
namespace Core
namespace Sapphire
{
class Session;
}
namespace Core::Network
namespace Sapphire::Network
{
class SapphireAPI
@ -35,7 +35,7 @@ namespace Core::Network
bool insertSession( const uint32_t& accountId, std::string& sId );
std::vector< Core::PlayerMinimal > getCharList( uint32_t accountId );
std::vector< Sapphire::PlayerMinimal > getCharList( uint32_t accountId );
bool checkNameTaken( std::string name );

View file

@ -1,6 +1,6 @@
#include "Session.h"
namespace Core {
namespace Sapphire {
Session::Session()
{

View file

@ -5,7 +5,7 @@
#include <string>
#include <string.h>
namespace Core
namespace Sapphire
{
class Session

View file

@ -27,20 +27,19 @@
#include <algorithm>
#include <Framework.h>
#include <Logging/Logger.h>
#include "Forwards.h"
#include "SapphireAPI.h"
Core::Framework g_fw;
Core::Logger g_log;
Core::Db::DbWorkerPool< Core::Db::ZoneDbConnection > g_charaDb;
Core::Data::ExdDataGenerated g_exdDataGen;
Core::Network::SapphireAPI g_sapphireAPI;
Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb;
Sapphire::Data::ExdDataGenerated g_exdDataGen;
Sapphire::Network::SapphireAPI g_sapphireAPI;
namespace fs = std::experimental::filesystem;
using namespace std;
using namespace Sapphire;
using HttpServer = SimpleWeb::Server< SimpleWeb::HTTP >;
using HttpClient = SimpleWeb::Client< SimpleWeb::HTTP >;
@ -50,32 +49,50 @@ void default_resource_send( const HttpServer& server, const shared_ptr< HttpServ
const shared_ptr< ifstream >& ifs );
auto m_pConfig = std::make_shared< Core::ConfigMgr >();
HttpServer server;
std::string configPath( "config.ini" );
std::string configPath( "api.ini" );
Sapphire::Common::Config::ApiConfig m_config;
void reloadConfig()
{
m_pConfig = std::make_shared< Core::ConfigMgr >();
auto pConfig = std::make_shared< Sapphire::ConfigMgr >();
if( !m_pConfig->loadConfig( configPath ) )
throw "Error loading config ";
Logger::info( "Loading config " + configPath );
bool failedLoad = false;
// load global cfg first
if( !pConfig->loadGlobalConfig( m_config.global ) )
{
Logger::fatal( "Error loading config global.ini" );
failedLoad = true;
}
if( !pConfig->loadConfig( configPath ) )
{
Logger::fatal( "Error loading config {0}", configPath );
failedLoad = true;
}
if( failedLoad )
{
Logger::fatal( "If this is the first time starting the server, we've copied the default configs for your editing pleasure." );
throw "Error loading config";
}
// setup api config
m_config.network.listenPort = pConfig->getValue< uint16_t >( "Network", "ListenPort", 80 );
m_config.network.listenIP = pConfig->getValue< std::string >( "Network", "ListenIp", "0.0.0.0" );
}
void print_request_info( shared_ptr< HttpServer::Request > request )
{
g_log.info( "Request from " + request->remote_endpoint_address + " (" + request->path + ")" );
Logger::info( "Request from {0} ({1})", request->remote_endpoint_address, request->path );
}
bool loadSettings( int32_t argc, char* argv[] )
{
g_log.info( "Loading config " + configPath );
if( !m_pConfig->loadConfig( configPath ) )
{
g_log.fatal( "Error loading config " + configPath );
return false;
}
reloadConfig();
std::vector< std::string > args( argv + 1, argv + argc );
for( size_t i = 0; i + 1 < args.size(); i += 2 )
@ -85,87 +102,40 @@ bool loadSettings( int32_t argc, char* argv[] )
try
{
arg = Core::Util::toLowerCopy( std::string( args[ i ] ) );
arg = Sapphire::Util::toLowerCopy( std::string( args[ i ] ) );
val = std::string( args[ i + 1 ] );
// trim '-' from start of arg
arg = arg.erase( 0, arg.find_first_not_of( '-' ) );
if( arg == "ip" )
{
m_pConfig->setValue< std::string >( "RestNetwork.ListenIp", val );
}
else if( arg == "p" || arg == "port" )
{
m_pConfig->setValue< std::string >( "RestNetwork.ListenPort", val );
}
else if( arg == "exdpath" || arg == "datapath" )
{
m_pConfig->setValue< std::string >( "GlobalParameters.DataPath", val );
}
else if( arg == "h" || arg == "dbhost" )
{
m_pConfig->setValue< std::string >( "Database.Host", val );
}
else if( arg == "dbport" )
{
m_pConfig->setValue< std::string >( "Database.Port", val );
}
else if( arg == "u" || arg == "user" || arg == "dbuser" )
{
m_pConfig->setValue< std::string >( "Database.Username", val );
}
else if( arg == "pass" || arg == "dbpass" )
{
m_pConfig->setValue< std::string >( "Database.Password", val );
}
else if( arg == "d" || arg == "db" || arg == "database" )
{
m_pConfig->setValue< std::string >( "Database.Database", val );
}
else if( arg == "lobbyip" || arg == "lobbyhost" )
{
m_pConfig->setValue< std::string >( "GlobalNetwork.LobbyHost", val );
}
else if( arg == "lobbyport" )
{
m_pConfig->setValue< std::string >( "GlobalNetwork.LobbyPort", val );
}
}
catch( ... )
{
g_log.error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" );
g_log.error( "Usage: <arg> <val> \n" );
Logger::error( "Error parsing argument: {0} value: {1}\n", arg, val );
Logger::error( "Usage: <arg> <val> \n" );
}
}
g_log.info( "Setting up generated EXD data" );
if( !g_exdDataGen.init( m_pConfig->getValue< std::string >( "GlobalParameters", "DataPath", "" ) ) )
Logger::info( "Setting up generated EXD data" );
auto dataPath = m_config.global.general.dataPath;
if( !g_exdDataGen.init( dataPath ) )
{
g_log.fatal( "Error setting up generated EXD data " );
Logger::fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in global.ini" );
Logger::fatal( "DataPath: {0}", dataPath );
return false;
}
Core::Db::DbLoader loader;
Sapphire::Db::DbLoader loader;
Core::Db::ConnectionInfo info;
info.password = m_pConfig->getValue< std::string >( "Database", "Password", "" );
info.host = m_pConfig->getValue< std::string >( "Database", "Host", "127.0.0.1" );
info.database = m_pConfig->getValue< std::string >( "Database", "Database", "sapphire" );
info.port = m_pConfig->getValue< uint16_t >( "Database", "Port", 3306 );
info.user = m_pConfig->getValue< std::string >( "Database", "Username", "root" );
info.syncThreads = m_pConfig->getValue< uint8_t >( "Database", "SyncThreads", 2 );
info.asyncThreads = m_pConfig->getValue< uint8_t >( "Database", "AsyncThreads", 2 );
loader.addDb( g_charaDb, info );
loader.addDb( g_charaDb, m_config.global.database );
if( !loader.initDbs() )
return false;
server.config.port = static_cast< uint16_t >( std::stoul(
m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) ) );
server.config.address = m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" );
server.config.port = m_config.network.listenPort;
server.config.address = m_config.network.listenIP;
g_log.info( "Database: Connected to " + info.host + ":" + std::to_string( info.port ) );
Logger::info( "Database: Connected to {0}:{1}", m_config.global.database.host, m_config.global.database.port );
return true;
}
@ -241,7 +211,7 @@ std::string buildHttpResponse( uint16_t rCode, const std::string& content = "",
void getZoneName( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServer::Request > request )
{
string number = request->path_match[ 1 ];
auto info = g_exdDataGen.get< Core::Data::TerritoryType >( atoi( number.c_str() ) );
auto info = g_exdDataGen.get< Sapphire::Data::TerritoryType >( atoi( number.c_str() ) );
std::string responseStr = "Not found!";
if( info )
responseStr = info->name + ", " + info->bg;
@ -265,9 +235,9 @@ void createAccount( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
// todo: construct proper json object here
std::string json_string = "{\"sId\":\"" + sId +
"\", \"lobbyHost\":\"" +
m_pConfig->getValue< std::string >( "GlobalNetwork", "LobbyHost" ) +
m_config.global.network.lobbyHost +
"\", \"frontierHost\":\"" +
m_pConfig->getValue< std::string >( "GlobalNetwork", "RestHost" ) + "\"}";
m_config.global.network.restHost + "\"}";
*response << buildHttpResponse( 200, json_string, JSON );
}
else
@ -276,7 +246,7 @@ void createAccount( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -298,9 +268,9 @@ void login( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServer:
// todo: build proper json object and stringify it
std::string json_string = "{\"sId\":\"" + sId +
"\", \"lobbyHost\":\"" +
m_pConfig->getValue< std::string >( "GlobalNetwork", "LobbyHost" ) +
m_config.global.network.lobbyHost +
"\", \"frontierHost\":\"" +
m_pConfig->getValue< std::string >( "GlobalNetwork", "RestHost" ) + "\"}";
m_config.global.network.restHost + "\"}";
*response << buildHttpResponse( 200, json_string, JSON );
}
else
@ -310,7 +280,7 @@ void login( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServer:
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -330,7 +300,7 @@ void deleteCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
int32_t accountId = g_sapphireAPI.checkSession( sId );
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -345,7 +315,7 @@ void deleteCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -362,7 +332,7 @@ void createCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
std::string name = json["name"];
std::string infoJson = json["infoJson"];
std::string finalJson = Core::Util::base64_decode( infoJson );
std::string finalJson = Sapphire::Util::base64_decode( infoJson );
// reloadConfig();
@ -370,15 +340,15 @@ void createCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
if( result != -1 )
{
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
}
else
{
int32_t charId = g_sapphireAPI.createCharacter( result, name, finalJson, m_pConfig->getValue< uint8_t >(
"CharacterCreation", "DefaultGMRank", 255 ) );
int32_t charId = g_sapphireAPI.createCharacter( result, name, finalJson,
m_config.global.general.defaultGMRank );
std::string json_string = "{\"result\":\"" + std::to_string( charId ) + "\"}";
*response << buildHttpResponse( 200, json_string, JSON );
@ -393,7 +363,7 @@ void createCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -411,7 +381,7 @@ void insertSession( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
std::string secret = json["secret"];
// reloadConfig();
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -426,7 +396,7 @@ void insertSession( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -443,7 +413,7 @@ void checkNameTaken( shared_ptr< HttpServer::Response > response, shared_ptr< Ht
// reloadConfig();
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -461,7 +431,7 @@ void checkNameTaken( shared_ptr< HttpServer::Response > response, shared_ptr< Ht
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -480,7 +450,7 @@ void checkSession( shared_ptr< HttpServer::Response > response, shared_ptr< Http
if( result != -1 )
{
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -503,7 +473,7 @@ void checkSession( shared_ptr< HttpServer::Response > response, shared_ptr< Http
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -519,7 +489,7 @@ void getNextCharId( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
// reloadConfig();
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -533,7 +503,7 @@ void getNextCharId( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -550,7 +520,7 @@ void getNextContentId( shared_ptr< HttpServer::Response > response, shared_ptr<
// reloadConfig();
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -564,7 +534,7 @@ void getNextContentId( shared_ptr< HttpServer::Response > response, shared_ptr<
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -585,7 +555,7 @@ void getCharacterList( shared_ptr< HttpServer::Response > response, shared_ptr<
if( result != -1 )
{
if( m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ) != secret )
if( m_config.global.general.serverSecret != secret )
{
std::string json_string = "{\"result\":\"invalid_secret\"}";
*response << buildHttpResponse( 403, json_string, JSON );
@ -620,7 +590,7 @@ void getCharacterList( shared_ptr< HttpServer::Response > response, shared_ptr<
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -655,7 +625,7 @@ void get_init( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServ
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -689,7 +659,7 @@ void get_headline_all( shared_ptr< HttpServer::Response > response, shared_ptr<
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -732,16 +702,13 @@ void defaultGet( shared_ptr< HttpServer::Response > response, shared_ptr< HttpSe
int main( int argc, char* argv[] )
{
auto pLog = std::shared_ptr< Core::Logger >( new Core::Logger() );
g_fw.set< Core::Logger >( pLog );
g_log.setLogPath( "log/SapphireAPI" );
g_log.init();
Logger::init( "log/api" );
g_log.info( "===========================================================" );
g_log.info( "Sapphire API Server " );
g_log.info( "Version: 0.0.1" );
g_log.info( "Compiled: " __DATE__ " " __TIME__ );
g_log.info( "===========================================================" );
Logger::info( "===========================================================" );
Logger::info( "Sapphire API Server " );
Logger::info( "Version: 0.0.1" );
Logger::info( "Compiled: " __DATE__ " " __TIME__ );
Logger::info( "===========================================================" );
if( !loadSettings( argc, argv ) )
throw std::exception();
@ -768,8 +735,7 @@ int main( int argc, char* argv[] )
server.start();
} );
g_log.info( "API server running on " + m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" ) + ":" +
m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) );
Logger::info( "API server running on {0}:{1}", m_config.network.listenIP, m_config.network.listenPort );
//Wait for server to start so that the client can connect
this_thread::sleep_for( chrono::seconds( 1 ) );

View file

@ -18,7 +18,7 @@
class case_insensitive_equals {
public:
bool operator()(const std::string &key1, const std::string &key2) const {
return Core::Util::toLowerCopy( key1 ) == Core::Util::toLowerCopy( key2 );
return Sapphire::Util::toLowerCopy( key1 ) == Sapphire::Util::toLowerCopy( key2 );
}
};
class case_insensitive_hash {
@ -27,7 +27,7 @@ public:
{
std::size_t seed=0;
for( auto &c : key )
Core::Util::hashCombine< char >( seed, std::tolower( c ) );
Sapphire::Util::hashCombine< char >( seed, std::tolower( c ) );
return seed;
}
};
@ -388,7 +388,7 @@ namespace SimpleWeb {
auto range=request->header.equal_range("Connection");
for(auto it=range.first;it!=range.second;it++) {
if( Core::Util::toLowerCopy( it->second ) == "close" )
if( Sapphire::Util::toLowerCopy( it->second ) == "close" )
return;
}
if(http_version>1.05)

View file

@ -13,32 +13,19 @@ file(GLOB UTILS_SOURCE_FILES
"${CMAKE_CURRENT_SOURCE_DIR}/Script/*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Util/*.cpp")
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
add_library( common ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES} )
set_target_properties( common PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
)
target_link_libraries( common PUBLIC xivdat )
target_link_libraries( common PUBLIC mysqlConnector )
target_link_libraries( common
PUBLIC
xivdat
mysqlConnector
mysql )
if( UNIX )
target_link_libraries( common PUBLIC mysqlclient )
target_link_libraries( common PUBLIC pthread )
else()
target_link_libraries( common
PUBLIC
mysql )
pthread
stdc++fs )
endif()
target_include_directories( common
@ -46,7 +33,5 @@ target_include_directories( common
"${CMAKE_CURRENT_SOURCE_DIR}/"
"${CMAKE_CURRENT_SOURCE_DIR}/../../deps/"
"${CMAKE_CURRENT_SOURCE_DIR}/../../deps/asio/asio/include/"
"${CMAKE_CURRENT_SOURCE_DIR}/../../deps/spdlog/include/"
PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/src/libraries/external/")
"${CMAKE_CURRENT_SOURCE_DIR}/../../deps/spdlog/include/" )

View file

@ -8,9 +8,9 @@
// +---------------------------------------------------------------------------
// The following enumerations are structures to require their type be included.
// They are also defined within the Core::Common namespace to avoid collisions.
// They are also defined within the Sapphire::Common namespace to avoid collisions.
// +---------------------------------------------------------------------------
namespace Core::Common
namespace Sapphire::Common
{
// 99 is the last spawn id that seems to spawn any actor
@ -26,6 +26,19 @@ namespace Core::Common
float z;
};
struct FFXIVARR_POSITION3_U16
{
uint16_t x;
uint16_t y;
uint16_t z;
};
struct ActiveLand
{
uint8_t ward;
uint8_t plot;
};
enum InventoryOperation : uint8_t
{
Discard = 0x07,
@ -214,7 +227,40 @@ namespace Core::Common
FreeCompanyBag1 = 20001,
FreeCompanyBag2 = 20002,
FreeCompanyGil = 22000,
FreeCompanyCrystal = 22001
FreeCompanyCrystal = 22001,
// housing interior containers
HousingInteriorAppearance = 25002,
// 50 in each container max, 400 slots max
HousingInteriorPlacedItems1 = 25003,
HousingInteriorPlacedItems2 = 25004,
HousingInteriorPlacedItems3 = 25005,
HousingInteriorPlacedItems4 = 25006,
HousingInteriorPlacedItems5 = 25007,
HousingInteriorPlacedItems6 = 25008,
HousingInteriorPlacedItems7 = 25009,
HousingInteriorPlacedItems8 = 25010,
// 50 max per container, 400 slots max
// slot limit increased 'temporarily' for relocation for all estates
// see: https://na.finalfantasyxiv.com/lodestone/topics/detail/d781e0d538428aef93b8bed4b50dd62c3c50fc74
HousingInteriorStoreroom1 = 27001,
HousingInteriorStoreroom2 = 27002,
HousingInteriorStoreroom3 = 27003,
HousingInteriorStoreroom4 = 27004,
HousingInteriorStoreroom5 = 27005,
HousingInteriorStoreroom6 = 27006,
HousingInteriorStoreroom7 = 27007,
HousingInteriorStoreroom8 = 27008,
// housing exterior containers
HousingExteriorAppearance = 25000,
HousingExteriorPlacedItems = 25001,
HousingExteriorStoreroom = 27000,
};
enum ContainerType : uint16_t
@ -392,6 +438,7 @@ namespace Core::Common
c.UI8E = 0;
c.UI8F = 0;
c.padding = 0;
c.padding1 = 0;
}
@ -484,8 +531,7 @@ namespace Core::Common
Unaspected = 7 // Doesn't imply magical unaspected damage - could be unaspected physical
};
enum class ActionType :
int8_t
enum class ActionType : int8_t
{
WeaponOverride = -1, // Needs more investigation (takes the damage type of the equipped weapon)?
Unknown_0 = 0,
@ -499,8 +545,7 @@ namespace Core::Common
LimitBreak = 8,
};
enum ActionEffectType :
uint8_t
enum ActionEffectType : uint8_t
{
Nothing = 0,
Miss = 1,
@ -521,8 +566,7 @@ namespace Core::Common
Mount = 38
};
enum class ActionHitSeverityType :
uint8_t
enum class ActionHitSeverityType : uint8_t
{
NormalDamage = 0,
CritHeal = 0,
@ -532,16 +576,14 @@ namespace Core::Common
CritDirectHitDamage = 3
};
enum ActionEffectDisplayType :
uint8_t
enum ActionEffectDisplayType : uint8_t
{
HideActionName = 0,
ShowActionName = 1,
ShowItemName = 2,
};
enum class ActionCollisionType :
uint8_t
enum class ActionCollisionType : uint8_t
{
None,
SingleTarget,
@ -554,32 +596,28 @@ namespace Core::Common
Unknown3
};
enum HandleActionType :
uint8_t
enum HandleActionType : uint8_t
{
Event,
Spell,
Teleport
};
enum HandleSkillType :
uint8_t
enum HandleSkillType : uint8_t
{
StdDamage,
StdHeal,
StdDot,
};
enum InvincibilityType :
uint8_t
enum InvincibilityType : uint8_t
{
InvincibilityNone,
InvincibilityRefill,
InvincibilityStayAlive,
};
enum PlayerStateFlag :
uint8_t
enum PlayerStateFlag : uint8_t
{
HideUILockChar = 0, // as the name suggests, hides the ui and logs the char...
InCombat = 1, // in Combat, locks gearchange/return/teleport
@ -595,8 +633,7 @@ namespace Core::Common
};
enum struct FateStatus :
uint8_t
enum struct FateStatus : uint8_t
{
Active = 2,
Inactive = 4,
@ -604,8 +641,7 @@ namespace Core::Common
Completed = 8,
};
enum struct ChatType :
uint16_t
enum struct ChatType : uint16_t
{
LogKindError,
ServerDebug,
@ -731,6 +767,118 @@ namespace Core::Common
MountSkill = 0xD,
};
enum HouseExteriorSlot
{
HousePermit,
ExteriorRoof,
ExteriorWall,
ExteriorWindow,
ExteriorDoor,
ExteriorRoofDecoration,
ExteriorWallDecoration,
ExteriorPlacard,
ExteriorFence
};
enum HouseInteriorSlot
{
InteriorWall,
InteriorFloor,
InteriorLight,
InteriorWall_Attic,
InteriorFloor_Attic,
InteriorLight_Attic,
InteriorWall_Basement,
InteriorFloor_Basement,
InteriorLight_Basement,
InteriorLight_Mansion
};
enum HouseTagSlot
{
MainTag,
SubTag1,
SubTag2
};
enum LandFlagsSlot
{
FreeCompany,
Private,
Apartment,
SharedHouse1,
SharedHouse2
};
enum class LandType : uint8_t
{
none = 0,
FreeCompany = 1,
Private = 2,
};
enum LandFlags : uint32_t
{
EstateBuilt = 0x1,
HasAetheryte = 0x2,
UNKNOWN_1 = 0x4,
UNKNOWN_2 = 0x8,
UNKNOWN_3 = 0x10,
};
struct LandIdent
{
int16_t landId; //00
int16_t wardNum; //02
int16_t territoryTypeId; //04
int16_t worldId; //06
};
struct LandFlagSet
{
LandIdent landIdent;
uint32_t landFlags; //08
uint32_t unkown1; //12
};
struct HousingObject
{
uint32_t itemId;
uint32_t padding; // was itemrotation + unknown/pad, looks unused now
float rotation;
Common::FFXIVARR_POSITION3 pos;
};
enum HouseSize : uint8_t
{
Cottage,
House,
Mansion
};
enum HouseStatus : uint8_t
{
none,
ForSale,
Sold,
PrivateEstate,
FreeCompanyEstate,
};
enum HouseIconAdd : uint8_t
{
heart = 0x06
};
enum WardlandFlags : uint8_t
{
IsEstateOwned = 1,
IsPublicEstate = 2,
HasEstateGreeting = 4,
EstateFlagUnknown = 8,
IsFreeCompanyEstate = 16,
};
using PlayerStateFlagList = std::vector< PlayerStateFlag >;
}

View file

@ -2,7 +2,7 @@
#include <stdint.h>
namespace Core {
namespace Sapphire {
namespace Common {
bool operator==( const ActionCategory& t, const uint8_t& g )

View file

@ -6,14 +6,14 @@
/* This file has been automatically generated.
Changes will be lost upon regeneration.
To change the content edit tools/exd_common_gen */
namespace Core {
namespace Sapphire {
namespace Common {
///////////////////////////////////////////////////////////
//ActionCategory.exd
enum class ActionCategory :
uint8_t
enum class ActionCategory : uint8_t
{
None = 0,
Autoattack = 1,
Spell = 2,
Weaponskill = 3,
@ -33,8 +33,7 @@ enum class ActionCategory :
///////////////////////////////////////////////////////////
//BeastReputationRank.exd
enum class BeastReputationRank :
uint8_t
enum class BeastReputationRank : uint8_t
{
None = 0,
Neutral = 1,
@ -49,15 +48,13 @@ enum class BeastReputationRank :
///////////////////////////////////////////////////////////
//BeastTribe.exd
enum class BeastTribe :
uint8_t
enum class BeastTribe : uint8_t
{
};
///////////////////////////////////////////////////////////
//ClassJob.exd
enum class ClassJob :
uint8_t
enum class ClassJob : uint8_t
{
Adventurer = 0,
Gladiator = 1,
@ -95,13 +92,14 @@ enum class ClassJob :
Astrologian = 33,
Samurai = 34,
Redmage = 35,
Bluemage = 36,
};
///////////////////////////////////////////////////////////
//ContentType.exd
enum class ContentType :
uint8_t
enum class ContentType : uint8_t
{
None = 0,
DutyRoulette = 1,
Dungeons = 2,
Guildhests = 3,
@ -121,35 +119,40 @@ enum class ContentType :
DisciplesoftheHand = 17,
RetainerVentures = 18,
GoldSaucer = 19,
one = 20,
DeepDungeons = 21,
two = 22,
three = 23,
WondrousTails = 24,
CustomDeliveries = 25,
Eureka = 26,
four = 27,
};
///////////////////////////////////////////////////////////
//EmoteCategory.exd
enum class EmoteCategory :
uint8_t
enum class EmoteCategory : uint8_t
{
None = 0,
General = 1,
Persistent = 2,
Special = 2,
Expressions = 3,
one = 4,
};
///////////////////////////////////////////////////////////
//ExVersion.exd
enum class ExVersion :
uint8_t
enum class ExVersion : uint8_t
{
ARealmReborn = 0,
Heavensward = 1,
Stormblood = 2,
three = 3,
};
///////////////////////////////////////////////////////////
//GrandCompany.exd
enum class GrandCompany :
uint8_t
enum class GrandCompany : uint8_t
{
None = 0,
Maelstrom = 1,
@ -159,9 +162,9 @@ enum class GrandCompany :
///////////////////////////////////////////////////////////
//GuardianDeity.exd
enum class GuardianDeity :
uint8_t
enum class GuardianDeity : uint8_t
{
None = 0,
HalonetheFury = 1,
MenphinatheLover = 2,
ThaliaktheScholar = 3,
@ -178,9 +181,9 @@ enum class GuardianDeity :
///////////////////////////////////////////////////////////
//ItemUICategory.exd
enum class ItemUICategory :
uint8_t
enum class ItemUICategory : uint8_t
{
None = 0,
PugilistsArm = 1,
GladiatorsArm = 2,
MaraudersArm = 3,
@ -281,13 +284,18 @@ enum class ItemUICategory :
ScholarsArm = 98,
FishersSecondaryTool = 99,
Currency = 100,
SubmersibleHull = 101,
SubmersibleStern = 102,
SubmersibleBow = 103,
SubmersibleBridge = 104,
BlueMagesArm = 105,
};
///////////////////////////////////////////////////////////
//ItemSearchCategory.exd
enum class ItemSearchCategory :
uint8_t
enum class ItemSearchCategory : uint8_t
{
None = 0,
PrimaryArms = 1,
PrimaryTools = 2,
PrimaryTools1 = 3,
@ -366,7 +374,7 @@ enum class ItemSearchCategory :
DarkKnightsArms = 76,
MachinistsArms = 77,
AstrologiansArms = 78,
AirshipComponents = 79,
Airship_SubmersibleComponents = 79,
OrchestrionComponents = 80,
GardeningItems = 81,
Paintings = 82,
@ -377,8 +385,7 @@ enum class ItemSearchCategory :
///////////////////////////////////////////////////////////
//OnlineStatus.exd
enum class OnlineStatus :
uint8_t
enum class OnlineStatus : uint8_t
{
Producer = 1,
GameMaster = 2,
@ -431,9 +438,9 @@ enum class OnlineStatus :
///////////////////////////////////////////////////////////
//Race.exd
enum class Race :
uint8_t
enum class Race : uint8_t
{
None = 0,
Hyur = 1,
Elezen = 2,
Lalafell = 3,
@ -444,9 +451,9 @@ enum class Race :
///////////////////////////////////////////////////////////
//Tribe.exd
enum class Tribe :
uint8_t
enum class Tribe : uint8_t
{
None = 0,
Midlander = 1,
Highlander = 2,
Wildwood = 3,
@ -463,8 +470,7 @@ enum class Tribe :
///////////////////////////////////////////////////////////
//Town.exd
enum class Town :
uint8_t
enum class Town : uint8_t
{
Nowheresville = 0,
LimsaLominsa = 1,
@ -476,8 +482,7 @@ enum class Town :
///////////////////////////////////////////////////////////
//Weather.exd
enum class Weather :
uint8_t
enum class Weather : uint8_t
{
None = 0,
ClearSkies = 1,
@ -545,8 +550,8 @@ enum class Weather :
FairSkies7 = 63,
Rain2 = 64,
FairSkies8 = 65,
Dragonstorm = 66,
Dragonstorm1 = 67,
Dragonstorms = 66,
Dragonstorms1 = 67,
Subterrain = 68,
Concordance = 69,
Concordance1 = 70,
@ -559,17 +564,65 @@ enum class Weather :
DimensionalDisruption = 77,
DimensionalDisruption1 = 78,
DimensionalDisruption2 = 79,
Revelstorm = 80,
Revelstorm1 = 81,
Revelstorms = 80,
Revelstorms1 = 81,
EternalBliss = 82,
EternalBliss1 = 83,
Wyrmstorm = 84,
Wyrmstorm1 = 85,
Revelstorm2 = 86,
Wyrmstorms = 84,
Wyrmstorms1 = 85,
Revelstorms2 = 86,
Quicklevin = 87,
Thunder3 = 88,
DimensionalDisruption3 = 89,
FairSkies9 = 90,
ClearSkies1 = 91,
WhiteCyclones = 92,
WhiteCyclones1 = 93,
WhiteCyclones2 = 94,
Ultimania = 95,
WhiteCyclones3 = 96,
Moonlight = 97,
Moonlight1 = 98,
Moonlight2 = 99,
Moonlight3 = 100,
FairSkies10 = 101,
Scarlet = 102,
Scarlet1 = 103,
Scarlet2 = 104,
FairSkies11 = 105,
FairSkies12 = 106,
FairSkies13 = 107,
FairSkies14 = 108,
Flames = 109,
Tsunamis = 110,
Cyclones = 111,
Geostorms = 112,
TrueBlue = 113,
TrueBlue1 = 114,
TrueBlue2 = 115,
TrueBlue3 = 117,
};
///////////////////////////////////////////////////////////
//HousingAppeal.exd
enum class HousingAppeal : uint8_t
{
None = 0,
Emporium = 1,
Boutique = 2,
DesignerHome = 3,
MessageBook = 4,
Tavern = 5,
Eatery = 6,
ImmersiveExperience = 7,
Cafe = 8,
Aquarium = 9,
Sanctum = 10,
Venue = 11,
Florist = 12,
Library = 14,
PhotoStudio = 15,
HauntedHouse = 16,
};
}
}

View file

@ -0,0 +1,88 @@
#ifndef SAPPHIRE_CONFIGDEF_H
#define SAPPHIRE_CONFIGDEF_H
#include <Database/DbCommon.h>
namespace Sapphire::Common::Config
{
struct GlobalConfig
{
Sapphire::Db::ConnectionInfo database;
struct General
{
std::string serverSecret;
std::string dataPath;
uint16_t worldID;
uint8_t defaultGMRank;
} general;
struct Network
{
std::string zoneHost;
uint16_t zonePort;
std::string lobbyHost;
uint16_t lobbyPort;
std::string restHost;
uint16_t restPort;
} network;
};
struct WorldConfig
{
GlobalConfig global;
struct Network
{
std::string listenIp;
uint16_t listenPort;
uint16_t disconnectTimeout;
} network;
struct Housing
{
std::string defaultEstateName;
} housing;
struct Scripts
{
std::string path;
std::string cachePath;
bool hotSwap;
} scripts;
std::string motd;
};
struct LobbyConfig
{
GlobalConfig global;
struct Network
{
std::string listenIp;
uint16_t listenPort;
} network;
bool allowNoSessionConnect;
std::string worldName;
};
struct ApiConfig
{
GlobalConfig global;
struct Network
{
std::string listenIP;
uint16_t listenPort;
} network;
};
}
#endif //SAPPHIRE_CONFIGDEF_H

View file

@ -10,7 +10,7 @@ namespace fs = std::experimental::filesystem;
* @param configName the name of ini file relative to m_configFolderRoot to load alongside global.ini
* @return true if loading was successful
*/
bool Core::ConfigMgr::loadConfig( const std::string& configName )
bool Sapphire::ConfigMgr::loadConfig( const std::string& configName )
{
// get global config
auto configFile = fs::path( fs::path( m_configFolderRoot ) / configName );
@ -18,6 +18,7 @@ bool Core::ConfigMgr::loadConfig( const std::string& configName )
if( !fs::exists( configFile ) )
{
copyDefaultConfig( configName );
return false;
}
m_pInih = std::unique_ptr< INIReader >( new INIReader( configFile.string() ) );
@ -28,7 +29,47 @@ bool Core::ConfigMgr::loadConfig( const std::string& configName )
return true;
}
bool Core::ConfigMgr::copyDefaultConfig( const std::string& configName )
bool Sapphire::ConfigMgr::loadGlobalConfig( Common::Config::GlobalConfig& config, const std::string& configName )
{
auto configFile = fs::path( fs::path( m_configFolderRoot ) / configName );
if( !fs::exists( configFile ) )
{
copyDefaultConfig( configName );
return false;
}
m_pInih = std::make_unique< INIReader >( configFile.string() );
if( m_pInih->ParseError() < 0 )
return false;
// database
config.database.host = getValue< std::string >( "Database", "Host", "127.0.0.1" );
config.database.port = getValue< uint16_t >( "Database", "Port", 3306 );
config.database.database = getValue< std::string >( "Database", "Database", "sapphire" );
config.database.user = getValue< std::string >( "Database", "Username", "sapphire" );
config.database.password = getValue< std::string >( "Database", "Password", "" );
config.database.syncThreads = getValue< uint8_t >( "Database", "SyncThreads", 2 );
config.database.asyncThreads = getValue< uint8_t >( "Database", "AsyncThreads", 2 );
// params
config.general.dataPath = getValue< std::string >( "General", "DataPath", "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" );
config.general.serverSecret = getValue< std::string >( "General", "ServerSecret", "default" );
config.general.worldID = getValue< uint16_t >( "General", "WorldID", 67 );
config.general.defaultGMRank = getValue< uint8_t >( "General", "DefaultGMRank", 255 );
// network
config.network.zoneHost = getValue< std::string >( "Network", "ZoneHost", "127.0.0.1" );
config.network.zonePort = getValue< uint16_t >( "Network", "ZonePort", 54992 );
config.network.lobbyHost = getValue< std::string >( "Network", "LobbyHost", "127.0.0.1" );
config.network.lobbyPort = getValue< uint16_t >( "Network", "LobbyPort", 54994 );
config.network.restHost = getValue< std::string >( "Network", "RestHost", "127.0.0.1" );
config.network.restPort = getValue< uint16_t >( "Network", "RestPort", 80 );
return true;
}
bool Sapphire::ConfigMgr::copyDefaultConfig( const std::string& configName )
{
fs::path configPath( m_configFolderRoot );
configPath /= configName;

View file

@ -6,47 +6,48 @@
#include <inih/INIReader.h>
#include <string>
#include <stdint.h>
#include "ConfigDef.h"
namespace Core
namespace Sapphire
{
class ConfigMgr
{
public:
ConfigMgr() = default;
~ConfigMgr() = default;
bool loadConfig( const std::string& configName );
bool loadGlobalConfig( Common::Config::GlobalConfig& config, const std::string& configName = "global.ini" );
template<class T> struct always_false : std::false_type {};
template< class T > struct always_false : std::false_type {};
template< class T >
T getValue( const std::string& section, const std::string& name, T defaultValue = T() )
{
if constexpr (std::is_same_v<T, uint32_t>)
if constexpr ( std::is_same_v< T, uint32_t > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, int32_t>)
else if constexpr ( std::is_same_v< T, int32_t > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, uint16_t>)
else if constexpr ( std::is_same_v< T, uint16_t > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, int16_t>)
else if constexpr ( std::is_same_v< T, int16_t > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, uint8_t>)
else if constexpr ( std::is_same_v< T, uint8_t > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, int8_t>)
else if constexpr ( std::is_same_v< T, int8_t > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, long>)
else if constexpr ( std::is_same_v< T, long > )
return m_pInih->GetInteger( section, name, defaultValue );
else if constexpr (std::is_same_v<T, double>)
else if constexpr ( std::is_same_v< T, double > )
return m_pInih->GetReal( section, name, defaultValue );
else if constexpr (std::is_same_v<T, float>)
else if constexpr ( std::is_same_v< T, float > )
return m_pInih->GetReal( section, name, defaultValue );
else if constexpr (std::is_same_v<T, std::string>)
else if constexpr ( std::is_same_v< T, std::string > )
return m_pInih->Get( section, name, defaultValue );
else if constexpr (std::is_same_v<T, bool>)
else if constexpr ( std::is_same_v< T, bool > )
return m_pInih->GetBoolean( section, name, defaultValue );
else
static_assert(always_false<T>::value, "non-exhaustive getter!");
static_assert( always_false< T >::value, "non-exhaustive getter!" );
}
template< class T >

View file

@ -39,7 +39,7 @@ static inline bool is_base64( uint8_t c )
return ( isalnum( c ) || ( c == '+' ) || ( c == '/' ) );
}
std::string Core::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t in_len )
std::string Sapphire::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t in_len )
{
std::string ret;
int32_t i = 0;
@ -85,7 +85,7 @@ std::string Core::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t
}
std::string Core::Util::base64_decode( std::string const& encoded_string )
std::string Sapphire::Util::base64_decode( std::string const& encoded_string )
{
int32_t in_len = encoded_string.size();
int32_t i = 0;

View file

@ -1,6 +1,6 @@
#include <string>
namespace Core::Util
namespace Sapphire::Util
{
std::string base64_encode( uint8_t const*, uint32_t len );

View file

@ -37,7 +37,7 @@
(b)[(i) + 3] = (uint8_t) ( (n) >> 24 ); \
}
void Core::Util::md5_starts( md5_context* ctx )
void Sapphire::Util::md5_starts( md5_context* ctx )
{
ctx->total[ 0 ] = 0;
ctx->total[ 1 ] = 0;
@ -48,7 +48,7 @@ void Core::Util::md5_starts( md5_context* ctx )
ctx->state[ 3 ] = 0x10325476;
}
void md5_process( Core::Util::md5_context* ctx, uint8_t data[64] )
void md5_process( Sapphire::Util::md5_context* ctx, uint8_t data[64] )
{
uint32_t X[16], A, B, C, D;
@ -171,7 +171,7 @@ void md5_process( Core::Util::md5_context* ctx, uint8_t data[64] )
ctx->state[ 3 ] += D;
}
void Core::Util::md5_update( md5_context* ctx, uint8_t* input, uint32_t length )
void Sapphire::Util::md5_update( md5_context* ctx, uint8_t* input, uint32_t length )
{
uint32_t left, fill;
@ -219,7 +219,7 @@ static uint8_t md5_padding[64] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
void Core::Util::md5_finish( md5_context* ctx, uint8_t digest[16] )
void Sapphire::Util::md5_finish( md5_context* ctx, uint8_t digest[16] )
{
uint32_t last, padn;
uint32_t high, low;
@ -248,7 +248,7 @@ void Core::Util::md5_finish( md5_context* ctx, uint8_t digest[16] )
* those are the standard RFC 1321 test vectors
*/
void Core::Util::md5( uint8_t* text, uint8_t* hash, int32_t size )
void Sapphire::Util::md5( uint8_t* text, uint8_t* hash, int32_t size )
{
md5_context ctx;
md5_starts( &ctx );

View file

@ -3,7 +3,7 @@
#include <stdint.h>
namespace Core::Util
namespace Sapphire::Util
{
using md5_context = struct
{

View file

@ -7,6 +7,6 @@
#include "Database/DbWorkerPool.h"
#include "Database/PreparedStatement.h"
extern Core::Db::DbWorkerPool< Core::Db::ZoneDbConnection > g_charaDb;
extern Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb;
#endif

View file

@ -0,0 +1,18 @@
#ifndef SAPPHIRE_DBCOMMON_H
#define SAPPHIRE_DBCOMMON_H
namespace Sapphire::Db
{
struct ConnectionInfo
{
std::string user;
std::string password;
std::string database;
std::string host;
uint16_t port;
uint8_t syncThreads;
uint8_t asyncThreads;
};
}
#endif //SAPPHIRE_DBCOMMON_H

View file

@ -6,9 +6,7 @@
#include "PreparedStatement.h"
#include "Framework.h"
extern Core::Framework g_fw;
Core::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) :
Sapphire::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) :
m_reconnecting( false ),
m_prepareError( false ),
m_queue( nullptr ),
@ -19,8 +17,8 @@ Core::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) :
}
Core::Db::DbConnection::DbConnection( Core::LockedWaitQueue< std::shared_ptr< Operation > >* queue,
Core::Db::ConnectionInfo& connInfo ) :
Sapphire::Db::DbConnection::DbConnection( Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >* queue,
Sapphire::Db::ConnectionInfo& connInfo ) :
m_reconnecting( false ),
m_prepareError( false ),
m_queue( queue ),
@ -31,12 +29,12 @@ Core::Db::DbConnection::DbConnection( Core::LockedWaitQueue< std::shared_ptr< Op
m_worker = std::make_shared< DbWorker >( m_queue, this );
}
Core::Db::DbConnection::~DbConnection()
Sapphire::Db::DbConnection::~DbConnection()
{
close();
}
void Core::Db::DbConnection::close()
void Sapphire::Db::DbConnection::close()
{
m_worker.reset();
m_stmts.clear();
@ -50,7 +48,7 @@ void Core::Db::DbConnection::close()
}
uint32_t Core::Db::DbConnection::open()
uint32_t Sapphire::Db::DbConnection::open()
{
std::shared_ptr< Mysql::MySqlBase > base( new Mysql::MySqlBase() );
Mysql::optionMap options;
@ -66,49 +64,49 @@ uint32_t Core::Db::DbConnection::open()
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return 1;
}
return 0;
}
uint32_t Core::Db::DbConnection::getLastError()
uint32_t Sapphire::Db::DbConnection::getLastError()
{
return m_pConnection->getErrorNo();
}
bool Core::Db::DbConnection::ping()
bool Sapphire::Db::DbConnection::ping()
{
return m_pConnection->ping();
}
bool Core::Db::DbConnection::lockIfReady()
bool Sapphire::Db::DbConnection::lockIfReady()
{
return m_mutex.try_lock();
}
void Core::Db::DbConnection::unlock()
void Sapphire::Db::DbConnection::unlock()
{
m_mutex.unlock();
}
void Core::Db::DbConnection::beginTransaction()
void Sapphire::Db::DbConnection::beginTransaction()
{
m_pConnection->beginTransaction();
}
void Core::Db::DbConnection::rollbackTransaction()
void Sapphire::Db::DbConnection::rollbackTransaction()
{
m_pConnection->rollbackTransaction();
}
void Core::Db::DbConnection::commitTransaction()
void Sapphire::Db::DbConnection::commitTransaction()
{
m_pConnection->commitTransaction();
}
bool Core::Db::DbConnection::execute( const std::string& sql )
bool Sapphire::Db::DbConnection::execute( const std::string& sql )
{
try
{
@ -118,12 +116,12 @@ bool Core::Db::DbConnection::execute( const std::string& sql )
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return false;
}
}
std::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( const std::string& sql )
std::shared_ptr< Mysql::ResultSet > Sapphire::Db::DbConnection::query( const std::string& sql )
{
try
{
@ -133,23 +131,23 @@ std::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( const std::st
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return nullptr;
}
}
std::shared_ptr< Mysql::ResultSet >
Core::Db::DbConnection::query( std::shared_ptr< Core::Db::PreparedStatement > stmt )
Sapphire::Db::DbConnection::query( std::shared_ptr< Sapphire::Db::PreparedStatement > stmt )
{
std::shared_ptr< Mysql::ResultSet > res( nullptr );
if( !stmt )
return nullptr;
if( !ping() )
if( !ping() ) //this does not work right and results in too many connections
{
// naivly reconnect and hope for the best
open();
//open();
lockIfReady();
if( !prepareStatements() )
return nullptr;
@ -170,13 +168,13 @@ Core::Db::DbConnection::query( std::shared_ptr< Core::Db::PreparedStatement > st
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return nullptr;
}
}
bool Core::Db::DbConnection::execute( std::shared_ptr< Core::Db::PreparedStatement > stmt )
bool Sapphire::Db::DbConnection::execute( std::shared_ptr< Sapphire::Db::PreparedStatement > stmt )
{
if( !stmt )
return false;
@ -196,12 +194,12 @@ bool Core::Db::DbConnection::execute( std::shared_ptr< Core::Db::PreparedStateme
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return false;
}
}
std::shared_ptr< Mysql::PreparedStatement > Core::Db::DbConnection::getPreparedStatement( uint32_t index )
std::shared_ptr< Mysql::PreparedStatement > Sapphire::Db::DbConnection::getPreparedStatement( uint32_t index )
{
assert( index < m_stmts.size() );
auto ret = m_stmts[ index ];
@ -211,7 +209,7 @@ std::shared_ptr< Mysql::PreparedStatement > Core::Db::DbConnection::getPreparedS
return ret;
}
void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string& sql, Core::Db::ConnectionFlags flags )
void Sapphire::Db::DbConnection::prepareStatement( uint32_t index, const std::string& sql, Sapphire::Db::ConnectionFlags flags )
{
m_queries.insert( PreparedStatementMap::value_type( index, std::make_pair( sql, flags ) ) );
@ -232,7 +230,7 @@ void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
m_prepareError = true;
}
@ -240,7 +238,7 @@ void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string
}
bool Core::Db::DbConnection::prepareStatements()
bool Sapphire::Db::DbConnection::prepareStatements()
{
doPrepareStatements();
return !m_prepareError;

View file

@ -7,6 +7,7 @@
#include <string>
#include <vector>
#include "Util/LockedWaitQueue.h"
#include "DbCommon.h"
namespace Mysql
{
@ -16,7 +17,7 @@ namespace Mysql
class PreparedStatement;
}
namespace Core::Db
namespace Sapphire::Db
{
class DatabaseWorker;
class PreparedStatement;
@ -31,17 +32,6 @@ namespace Core::Db
CONNECTION_BOTH = CONNECTION_ASYNC | CONNECTION_SYNC
};
struct ConnectionInfo
{
std::string user;
std::string password;
std::string database;
std::string host;
uint16_t port;
uint8_t syncThreads;
uint8_t asyncThreads;
};
using PreparedStatementMap = std::map< uint32_t, std::pair< std::string, ConnectionFlags > >;
class DbConnection :
@ -52,7 +42,7 @@ namespace Core::Db
DbConnection( ConnectionInfo& connInfo );
// Constructor for asynchronous connections.
DbConnection( Core::LockedWaitQueue< std::shared_ptr< Operation > >* queue, ConnectionInfo& connInfo );
DbConnection( Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >* queue, ConnectionInfo& connInfo );
virtual ~DbConnection();

View file

@ -3,28 +3,23 @@
#include "ZoneDbConnection.h"
#include "DbWorkerPool.h"
#include "Logging/Logger.h"
#include "Framework.h"
extern Core::Framework g_fw;
Core::Db::DbLoader::DbLoader()
Sapphire::Db::DbLoader::DbLoader()
{
}
template< class T >
Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool, const ConnectionInfo& info )
Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPool< T >& pool, const ConnectionInfo& info )
{
m_open.push( [ this, info, &pool ]()->bool
{
auto pLog = g_fw.get< Logger >();
const uint8_t asyncThreads = info.asyncThreads;
const uint8_t synchThreads = info.syncThreads;
if( asyncThreads < 1 || asyncThreads > 32 )
{
pLog->error(
Logger::error(
"database: invalid number of worker threads specified. Please pick a value between 1 and 32." );
return false;
}
@ -40,7 +35,7 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool
if( error )
{
pLog->error( "DatabasePool failed to open." );
Logger::error( "DatabasePool failed to open." );
return false;
}
}
@ -55,8 +50,7 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool
{
if( !pool.prepareStatements() )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Could not prepare statements of the database, see log for details." );
Logger::error( "Could not prepare statements of the database, see log for details." );
return false;
}
return true;
@ -65,7 +59,7 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool
return *this;
}
bool Core::Db::DbLoader::initDbs()
bool Sapphire::Db::DbLoader::initDbs()
{
if( !openDatabases() )
return false;
@ -76,17 +70,17 @@ bool Core::Db::DbLoader::initDbs()
return true;
}
bool Core::Db::DbLoader::openDatabases()
bool Sapphire::Db::DbLoader::openDatabases()
{
return process( m_open );
}
bool Core::Db::DbLoader::prepareStatements()
bool Sapphire::Db::DbLoader::prepareStatements()
{
return process( m_prepare );
}
bool Core::Db::DbLoader::process( std::queue< Predicate >& queue )
bool Sapphire::Db::DbLoader::process( std::queue< Predicate >& queue )
{
while( !queue.empty() )
{
@ -108,7 +102,7 @@ bool Core::Db::DbLoader::process( std::queue< Predicate >& queue )
}
template
Core::Db::DbLoader&
Core::Db::DbLoader::addDb< Core::Db::ZoneDbConnection >( Core::Db::DbWorkerPool< Core::Db::ZoneDbConnection >&,
Sapphire::Db::DbLoader&
Sapphire::Db::DbLoader::addDb< Sapphire::Db::ZoneDbConnection >( Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection >&,
const ConnectionInfo& );

View file

@ -8,7 +8,7 @@
#include <string>
#include "DbConnection.h"
namespace Core::Db
namespace Sapphire::Db
{
template< class T >

View file

@ -2,7 +2,7 @@
#include "Operation.h"
#include "Util/LockedWaitQueue.h"
Core::Db::DbWorker::DbWorker( Core::LockedWaitQueue< std::shared_ptr< Operation > >* newQueue, DbConnection* pConn )
Sapphire::Db::DbWorker::DbWorker( Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >* newQueue, DbConnection* pConn )
{
m_pConn = pConn;
m_queue = newQueue;
@ -10,14 +10,14 @@ Core::Db::DbWorker::DbWorker( Core::LockedWaitQueue< std::shared_ptr< Operation
m_workerThread = std::thread( &DbWorker::workerThread, this );
}
Core::Db::DbWorker::~DbWorker()
Sapphire::Db::DbWorker::~DbWorker()
{
m_cancelationToken = true;
m_queue->cancel();
m_workerThread.join();
}
void Core::Db::DbWorker::workerThread()
void Sapphire::Db::DbWorker::workerThread()
{
if( !m_queue )
return;

View file

@ -6,7 +6,7 @@
#include "Util/LockedWaitQueue.h"
#include <memory>
namespace Core::Db
namespace Sapphire::Db
{
class DbConnection;
class Operation;

View file

@ -10,10 +10,8 @@
#include "Logging/Logger.h"
#include <mysql.h>
extern Core::Framework g_fw;
class PingOperation :
public Core::Db::Operation
public Sapphire::Db::Operation
{
bool execute() override
{
@ -23,22 +21,21 @@ class PingOperation :
};
template< class T >
Core::Db::DbWorkerPool< T >::DbWorkerPool()
:
m_queue( new Core::LockedWaitQueue< std::shared_ptr< Operation > >() ),
Sapphire::Db::DbWorkerPool< T >::DbWorkerPool() :
m_queue( new Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >() ),
m_asyncThreads( 0 ),
m_synchThreads( 0 )
{
}
template< class T >
Core::Db::DbWorkerPool< T >::~DbWorkerPool()
Sapphire::Db::DbWorkerPool< T >::~DbWorkerPool()
{
m_queue->cancel();
}
template< class T >
void Core::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info,
void Sapphire::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info,
uint8_t asyncThreads,
uint8_t synchThreads )
{
@ -48,12 +45,10 @@ void Core::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info,
}
template< class T >
uint32_t Core::Db::DbWorkerPool< T >::open()
uint32_t Sapphire::Db::DbWorkerPool< T >::open()
{
auto pLog = g_fw.get< Logger >();
pLog->info( "[DbPool] Opening DatabasePool " + getDatabaseName() +
" Asynchronous connections: " + std::to_string( m_asyncThreads ) +
" Synchronous connections: " + std::to_string( m_synchThreads ) );
Logger::info( "[DbPool] Opening DatabasePool {0} Asynchronous connections: {1} Synchronous connections: {2}",
getDatabaseName(), m_asyncThreads, m_synchThreads );
uint32_t error = openConnections( IDX_ASYNC, m_asyncThreads );
@ -64,26 +59,24 @@ uint32_t Core::Db::DbWorkerPool< T >::open()
if( !error )
{
pLog->info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " +
std::to_string( ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) ) +
" total connections running." );
Logger::info( "[DbPool] DatabasePool '{0}' opened successfully. {1} total connections running.",
getDatabaseName(), ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) );
}
return error;
}
template< class T >
void Core::Db::DbWorkerPool< T >::close()
void Sapphire::Db::DbWorkerPool< T >::close()
{
auto pLog = g_fw.get< Logger >();
pLog->info( "[DbPool] Closing down DatabasePool " + getDatabaseName() );
Logger::info( "[DbPool] Closing down DatabasePool {0}", getDatabaseName() );
m_connections[ IDX_ASYNC ].clear();
m_connections[ IDX_SYNCH ].clear();
pLog->info( "[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." );
Logger::info( "[DbPool] All connections on DatabasePool {0} closed.", getDatabaseName() );
}
template< class T >
bool Core::Db::DbWorkerPool< T >::prepareStatements()
bool Sapphire::Db::DbWorkerPool< T >::prepareStatements()
{
for( auto& connections : m_connections )
for( auto& connection : connections )
@ -104,7 +97,7 @@ bool Core::Db::DbWorkerPool< T >::prepareStatements()
template< class T >
std::shared_ptr< Mysql::ResultSet >
Core::Db::DbWorkerPool< T >::query( const std::string& sql, std::shared_ptr< T > connection )
Sapphire::Db::DbWorkerPool< T >::query( const std::string& sql, std::shared_ptr< T > connection )
{
if( !connection )
connection = getFreeConnection();
@ -117,7 +110,7 @@ Core::Db::DbWorkerPool< T >::query( const std::string& sql, std::shared_ptr< T >
template< class T >
std::shared_ptr< Mysql::PreparedResultSet >
Core::Db::DbWorkerPool< T >::query( std::shared_ptr< PreparedStatement > stmt )
Sapphire::Db::DbWorkerPool< T >::query( std::shared_ptr< PreparedStatement > stmt )
{
auto connection = getFreeConnection();
auto ret = std::static_pointer_cast< Mysql::PreparedResultSet >( connection->query( stmt ) );
@ -127,14 +120,14 @@ Core::Db::DbWorkerPool< T >::query( std::shared_ptr< PreparedStatement > stmt )
}
template< class T >
std::shared_ptr< Core::Db::PreparedStatement >
Core::Db::DbWorkerPool< T >::getPreparedStatement( PreparedStatementIndex index )
std::shared_ptr< Sapphire::Db::PreparedStatement >
Sapphire::Db::DbWorkerPool< T >::getPreparedStatement( PreparedStatementIndex index )
{
return std::make_shared< PreparedStatement >( index );
}
template< class T >
void Core::Db::DbWorkerPool< T >::escapeString( std::string& str )
void Sapphire::Db::DbWorkerPool< T >::escapeString( std::string& str )
{
if( str.empty() )
return;
@ -146,7 +139,7 @@ void Core::Db::DbWorkerPool< T >::escapeString( std::string& str )
}
template< class T >
void Core::Db::DbWorkerPool< T >::keepAlive()
void Sapphire::Db::DbWorkerPool< T >::keepAlive()
{
for( auto& connection : m_connections[ IDX_SYNCH ] )
{
@ -163,7 +156,7 @@ void Core::Db::DbWorkerPool< T >::keepAlive()
}
template< class T >
uint32_t Core::Db::DbWorkerPool< T >::openConnections( InternalIndex type, uint8_t numConnections )
uint32_t Sapphire::Db::DbWorkerPool< T >::openConnections( InternalIndex type, uint8_t numConnections )
{
for( uint8_t i = 0; i < numConnections; ++i )
{
@ -194,7 +187,7 @@ uint32_t Core::Db::DbWorkerPool< T >::openConnections( InternalIndex type, uint8
}
template< class T >
unsigned long Core::Db::DbWorkerPool< T >::escapeString( char* to, const char* from, unsigned long length )
unsigned long Sapphire::Db::DbWorkerPool< T >::escapeString( char* to, const char* from, unsigned long length )
{
if( !to || !from || !length )
return 0;
@ -204,13 +197,13 @@ unsigned long Core::Db::DbWorkerPool< T >::escapeString( char* to, const char* f
}
template< class T >
void Core::Db::DbWorkerPool< T >::enqueue( std::shared_ptr< Operation > op )
void Sapphire::Db::DbWorkerPool< T >::enqueue( std::shared_ptr< Operation > op )
{
m_queue->push( op );
}
template< class T >
std::shared_ptr< T > Core::Db::DbWorkerPool< T >::getFreeConnection()
std::shared_ptr< T > Sapphire::Db::DbWorkerPool< T >::getFreeConnection()
{
uint8_t i = 0;
const auto numCons = m_connections[ IDX_SYNCH ].size();
@ -228,27 +221,27 @@ std::shared_ptr< T > Core::Db::DbWorkerPool< T >::getFreeConnection()
}
template< class T >
const std::string& Core::Db::DbWorkerPool< T >::getDatabaseName() const
const std::string& Sapphire::Db::DbWorkerPool< T >::getDatabaseName() const
{
return m_connectionInfo.database;
}
template< class T >
void Core::Db::DbWorkerPool< T >::execute( const std::string& sql )
void Sapphire::Db::DbWorkerPool< T >::execute( const std::string& sql )
{
auto task = std::make_shared< StatementTask >( sql );
enqueue( task );
}
template< class T >
void Core::Db::DbWorkerPool< T >::execute( std::shared_ptr< PreparedStatement > stmt )
void Sapphire::Db::DbWorkerPool< T >::execute( std::shared_ptr< PreparedStatement > stmt )
{
auto task = std::make_shared< PreparedStatementTask >( stmt );
enqueue( task );
}
template< class T >
void Core::Db::DbWorkerPool< T >::directExecute( const std::string& sql )
void Sapphire::Db::DbWorkerPool< T >::directExecute( const std::string& sql )
{
auto connection = getFreeConnection();
connection->execute( sql );
@ -256,7 +249,7 @@ void Core::Db::DbWorkerPool< T >::directExecute( const std::string& sql )
}
template< class T >
void Core::Db::DbWorkerPool< T >::directExecute( std::shared_ptr< PreparedStatement > stmt )
void Sapphire::Db::DbWorkerPool< T >::directExecute( std::shared_ptr< PreparedStatement > stmt )
{
auto connection = getFreeConnection();
connection->execute( stmt );
@ -284,4 +277,4 @@ void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction& trans, PreparedState
*/
template
class Core::Db::DbWorkerPool< Core::Db::ZoneDbConnection >;
class Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection >;

View file

@ -8,7 +8,7 @@
#include "Util/LockedWaitQueue.h"
#include "DbConnection.h"
namespace Core::Db
namespace Sapphire::Db
{
template< typename T >
@ -83,7 +83,7 @@ namespace Core::Db
const std::string& getDatabaseName() const;
std::unique_ptr< Core::LockedWaitQueue< std::shared_ptr< Operation > > > m_queue;
std::unique_ptr< Sapphire::LockedWaitQueue< std::shared_ptr< Operation > > > m_queue;
std::array< std::vector< std::shared_ptr< T > >, IDX_SIZE > m_connections;
ConnectionInfo m_connectionInfo;
uint8_t m_asyncThreads;

View file

@ -6,7 +6,7 @@ namespace Mysql
class Connection;
}
namespace Core::Db
namespace Sapphire::Db
{
class DbConnection;

View file

@ -7,17 +7,17 @@
#include <sstream>
#include <cassert>
Core::Db::PreparedStatement::PreparedStatement( uint32_t index ) :
Sapphire::Db::PreparedStatement::PreparedStatement( uint32_t index ) :
m_stmt( nullptr ),
m_index( index )
{
}
Core::Db::PreparedStatement::~PreparedStatement()
Sapphire::Db::PreparedStatement::~PreparedStatement()
{
}
void Core::Db::PreparedStatement::bindParameters()
void Sapphire::Db::PreparedStatement::bindParameters()
{
assert( m_stmt );
@ -65,7 +65,7 @@ void Core::Db::PreparedStatement::bindParameters()
}
//- Bind to buffer
void Core::Db::PreparedStatement::setBool( uint8_t index, const bool value )
void Sapphire::Db::PreparedStatement::setBool( uint8_t index, const bool value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -74,7 +74,7 @@ void Core::Db::PreparedStatement::setBool( uint8_t index, const bool value )
m_statementData[ index ].type = TYPE_BOOL;
}
void Core::Db::PreparedStatement::setUInt( uint8_t index, uint32_t value )
void Sapphire::Db::PreparedStatement::setUInt( uint8_t index, uint32_t value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -83,7 +83,7 @@ void Core::Db::PreparedStatement::setUInt( uint8_t index, uint32_t value )
m_statementData[ index ].type = TYPE_UI;
}
void Core::Db::PreparedStatement::setUInt64( uint8_t index, uint64_t value )
void Sapphire::Db::PreparedStatement::setUInt64( uint8_t index, uint64_t value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -92,7 +92,7 @@ void Core::Db::PreparedStatement::setUInt64( uint8_t index, uint64_t value )
m_statementData[ index ].type = TYPE_UI64;
}
void Core::Db::PreparedStatement::setInt( uint8_t index, int32_t value )
void Sapphire::Db::PreparedStatement::setInt( uint8_t index, int32_t value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -101,7 +101,7 @@ void Core::Db::PreparedStatement::setInt( uint8_t index, int32_t value )
m_statementData[ index ].type = TYPE_I;
}
void Core::Db::PreparedStatement::setInt64( uint8_t index, int64_t value )
void Sapphire::Db::PreparedStatement::setInt64( uint8_t index, int64_t value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -110,7 +110,7 @@ void Core::Db::PreparedStatement::setInt64( uint8_t index, int64_t value )
m_statementData[ index ].type = TYPE_I64;
}
void Core::Db::PreparedStatement::setDouble( uint8_t index, double value )
void Sapphire::Db::PreparedStatement::setDouble( uint8_t index, double value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -119,7 +119,7 @@ void Core::Db::PreparedStatement::setDouble( uint8_t index, double value )
m_statementData[ index ].type = TYPE_DOUBLE;
}
void Core::Db::PreparedStatement::setString( uint8_t index, const std::string& value )
void Sapphire::Db::PreparedStatement::setString( uint8_t index, const std::string& value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -129,7 +129,7 @@ void Core::Db::PreparedStatement::setString( uint8_t index, const std::string& v
m_statementData[ index ].type = TYPE_STRING;
}
void Core::Db::PreparedStatement::setBinary( uint8_t index, const std::vector< uint8_t >& value )
void Sapphire::Db::PreparedStatement::setBinary( uint8_t index, const std::vector< uint8_t >& value )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -138,7 +138,7 @@ void Core::Db::PreparedStatement::setBinary( uint8_t index, const std::vector< u
m_statementData[ index ].type = TYPE_BINARY;
}
void Core::Db::PreparedStatement::setNull( uint8_t index )
void Sapphire::Db::PreparedStatement::setNull( uint8_t index )
{
if( index >= m_statementData.size() )
m_statementData.resize( index + 1 );
@ -146,12 +146,12 @@ void Core::Db::PreparedStatement::setNull( uint8_t index )
m_statementData[ index ].type = TYPE_NULL;
}
uint32_t Core::Db::PreparedStatement::getIndex() const
uint32_t Sapphire::Db::PreparedStatement::getIndex() const
{
return m_index;
}
void Core::Db::PreparedStatement::setMysqlPS( std::shared_ptr< Mysql::PreparedStatement > pStmt )
void Sapphire::Db::PreparedStatement::setMysqlPS( std::shared_ptr< Mysql::PreparedStatement > pStmt )
{
m_stmt = pStmt;
}

View file

@ -12,7 +12,7 @@ namespace Mysql
class PreparedStatement;
}
namespace Core::Db
namespace Sapphire::Db
{
union PreparedStatementDataUnion
{

View file

@ -4,7 +4,7 @@
#include "DbConnection.h"
#include "PreparedStatement.h"
Core::Db::StatementTask::StatementTask( const std::string& sql, bool async )
Sapphire::Db::StatementTask::StatementTask( const std::string& sql, bool async )
{
m_sql = sql;
m_hasResult = async; // If the operation is async, then there's a result
@ -12,13 +12,13 @@ Core::Db::StatementTask::StatementTask( const std::string& sql, bool async )
// m_result = new QueryResultPromise();
}
Core::Db::StatementTask::~StatementTask()
Sapphire::Db::StatementTask::~StatementTask()
{
//if( m_hasResult && m_result != nullptr)
// delete m_result;
}
bool Core::Db::StatementTask::execute()
bool Sapphire::Db::StatementTask::execute()
{
if( m_hasResult )
{
@ -38,7 +38,7 @@ bool Core::Db::StatementTask::execute()
}
Core::Db::PreparedStatementTask::PreparedStatementTask( std::shared_ptr< Core::Db::PreparedStatement > stmt,
Sapphire::Db::PreparedStatementTask::PreparedStatementTask( std::shared_ptr< Sapphire::Db::PreparedStatement > stmt,
bool async ) :
m_stmt( stmt )
//, m_result(nullptr)
@ -46,13 +46,13 @@ Core::Db::PreparedStatementTask::PreparedStatementTask( std::shared_ptr< Core::D
m_hasResult = async; // If the operation is async, then there's a result
}
Core::Db::PreparedStatementTask::~PreparedStatementTask()
Sapphire::Db::PreparedStatementTask::~PreparedStatementTask()
{
//if (m_has_result && m_result != nullptr)
// delete m_result;
}
bool Core::Db::PreparedStatementTask::execute()
bool Sapphire::Db::PreparedStatementTask::execute()
{
//if (m_has_result)
//{

View file

@ -5,7 +5,7 @@
#include "Operation.h"
#include <memory>
namespace Core::Db
namespace Sapphire::Db
{
class PreparedStatement;

View file

@ -1,22 +1,22 @@
#include "ZoneDbConnection.h"
#include <MySqlConnector.h>
Core::Db::ZoneDbConnection::ZoneDbConnection( ConnectionInfo& connInfo ) :
Sapphire::Db::ZoneDbConnection::ZoneDbConnection( ConnectionInfo& connInfo ) :
DbConnection( connInfo )
{
}
Core::Db::ZoneDbConnection::ZoneDbConnection( Core::LockedWaitQueue< std::shared_ptr< Operation > >* q,
Sapphire::Db::ZoneDbConnection::ZoneDbConnection( Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >* q,
ConnectionInfo& connInfo ) :
DbConnection( q, connInfo )
{
}
Core::Db::ZoneDbConnection::~ZoneDbConnection()
Sapphire::Db::ZoneDbConnection::~ZoneDbConnection()
{
}
void Core::Db::ZoneDbConnection::doPrepareStatements()
void Sapphire::Db::ZoneDbConnection::doPrepareStatements()
{
if( !m_reconnecting )
m_stmts.resize( MAX_STATEMENTS );
@ -50,12 +50,12 @@ void Core::Db::ZoneDbConnection::doPrepareStatements()
"CFPenaltyUntil = ?, Pose = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_SEL_MINIMAL, "SELECT Name, Customize, ModelMainWeapon, ModelSubWeapon, ModelEquip, TerritoryId, GuardianDeity, "
prepareStatement( CHARA_SEL_MINIMAL, "SELECT Name, Customize, ModelMainWeapon, ModelSubWeapon, ModelEquip, TerritoryType, GuardianDeity, "
"Class, ContentId, BirthDay, BirthMonth, EquipDisplayFlags "
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
prepareStatement( CHARA_INS, "INSERT INTO charainfo (AccountId, CharacterId, ContentId, Name, Hp, Mp, "
"Customize, Voice, IsNewGame, TerritoryId, PosX, PosY, PosZ, PosR, ModelEquip, "
"Customize, Voice, IsNewGame, TerritoryType, PosX, PosY, PosZ, PosR, ModelEquip, "
"IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, "
"HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, "
"Aetheryte, GMRank, Mounts, Orchestrion, UPDATE_DATE ) "
@ -142,19 +142,19 @@ void Core::Db::ZoneDbConnection::doPrepareStatements()
/// QUEST INFO
prepareStatement( CHARA_QUEST_INS,
"INSERT INTO charaquestnew ( CharacterId, SlotId, QuestId, Sequence, Flags, Variables_0, "
"INSERT INTO charaquest ( CharacterId, SlotId, QuestId, Sequence, Flags, Variables_0, "
"Variables_1, Variables_2, Variables_3, Variables_4, "
"Variables_5, Variables_6 ) VALUES( ?,?,?,?,?,?,?,?,?,?,?,? );", CONNECTION_ASYNC );
prepareStatement( CHARA_QUEST_UP, "UPDATE charaquestnew SET Sequence = ?, Flags = ?, Variables_0 = ?, "
prepareStatement( CHARA_QUEST_UP, "UPDATE charaquest SET Sequence = ?, Flags = ?, Variables_0 = ?, "
"Variables_1 = ?, Variables_2 = ?, Variables_3 = ?, "
"Variables_4 = ?, Variables_5 = ?, Variables_6 = ? "
"WHERE CharacterId = ? AND QuestId = ?;", CONNECTION_ASYNC );
prepareStatement( CHARA_QUEST_DEL, "DELETE FROM charaquestnew WHERE CharacterId = ? AND QuestId = ?;",
prepareStatement( CHARA_QUEST_DEL, "DELETE FROM charaquest WHERE CharacterId = ? AND QuestId = ?;",
CONNECTION_ASYNC );
prepareStatement( CHARA_SEL_QUEST, "SELECT * FROM charaquestnew WHERE CharacterId = ?;", CONNECTION_SYNC );
prepareStatement( CHARA_SEL_QUEST, "SELECT * FROM charaquest WHERE CharacterId = ?;", CONNECTION_SYNC );
/// CLASS INFO
prepareStatement( CHARA_CLASS_SEL, "SELECT ClassIdx, Exp, Lvl FROM characlass WHERE CharacterId = ?;",
@ -172,22 +172,112 @@ void Core::Db::ZoneDbConnection::doPrepareStatements()
/// ITEM GLOBAL
prepareStatement( CHARA_ITEMGLOBAL_INS,
"INSERT INTO charaglobalitem ( CharacterId, ItemId, catalogId, UPDATE_DATE ) VALUES ( ?, ?, ?, NOW() );",
CONNECTION_BOTH );
"INSERT INTO charaglobalitem ( CharacterId, ItemId, catalogId, stack, UPDATE_DATE ) VALUES ( ?, ?, ?, ?, NOW() );",
CONNECTION_SYNC );
/// BNPC TEMPLATES
/// ZONE QUERIES
prepareStatement( ZONE_SEL_BNPCTEMPLATES,
"SELECT Id, Name, bNPCBaseId, bNPCNameId, mainWeaponModel, "
"secWeaponModel, aggressionMode, enemyType, pose, "
"modelChara, displayFlags, Look, Models "
"FROM bnpctemplate WHERE 1;",
CONNECTION_BOTH);
CONNECTION_BOTH );
prepareStatement( ZONE_SEL_SPAWNGROUPS,
"SELECT id, bNpcTemplateId, level, maxHp "
"FROM spawngroup "
"WHERE territoryTypeId = ?",
CONNECTION_BOTH );
prepareStatement( ZONE_SEL_SPAWNPOINTS,
"SELECT id, x, y, z, r, gimmickId "
"FROM spawnpoint "
"WHERE spawnGroupId = ?",
CONNECTION_BOTH );
prepareStatement( CHARA_ITEMGLOBAL_UP,
"UPDATE charaglobalitem SET stack = ?, durability = ?, stain = ? WHERE ItemId = ?;",
CONNECTION_BOTH );
prepareStatement( CHARA_ITEMGLOBAL_DELETE,
"UPDATE charaglobalitem SET IS_DELETE = 1 WHERE ItemId = ?;",
"UPDATE charaglobalitem SET deleted = 1 WHERE ItemId = ?;",
CONNECTION_BOTH );
/// HOUSING
prepareStatement( HOUSING_HOUSE_INS,
"INSERT INTO house ( LandSetId, HouseId, HouseName ) VALUES ( ?, ?, ? );",
CONNECTION_BOTH );
prepareStatement( HOUSING_HOUSE_UP,
"UPDATE house SET BuildTime = ?, Aetheryte = ?, Comment = ?, HouseName = ?, Endorsements = ? WHERE HouseId = ?;",
CONNECTION_BOTH );
prepareStatement( LAND_INV_SEL_ALL,
"SELECT houseiteminventory.*, charaglobalitem.catalogId, charaglobalitem.stain, charaglobalitem.CharacterId, "
"landplaceditems.PosX, landplaceditems.PosY, landplaceditems.PosZ, landplaceditems.Rotation "
"FROM houseiteminventory "
"LEFT JOIN charaglobalitem "
"ON houseiteminventory.ItemId = charaglobalitem.itemId "
"LEFT JOIN landplaceditems "
"ON houseiteminventory.ItemId = landplaceditems.ItemId;",
CONNECTION_BOTH );
prepareStatement( LAND_INV_SEL_HOUSE,
"SELECT LandIdent, ContainerId, ItemId, SlotId FROM houseiteminventory WHERE LandIdent = ?",
CONNECTION_SYNC );
prepareStatement( LANDSET_SEL,
"SELECT * FROM land WHERE LandSetId = ?;",
CONNECTION_SYNC );
prepareStatement( LAND_SEL_ALL,
"SELECT land.*, house.Welcome, house.Aetheryte, house.Comment, house.HouseName, house.BuildTime, house.Endorsements "
"FROM land "
"LEFT JOIN house "
"ON land.HouseId = house.HouseId;",
CONNECTION_SYNC );
prepareStatement( LAND_INV_UP,
"INSERT INTO houseiteminventory ( LandIdent, ContainerId, SlotId, ItemId ) "
"VALUES ( ?, ?, ?, ? ) "
"ON DUPLICATE KEY UPDATE ItemId = ?;",
CONNECTION_BOTH );
prepareStatement( LAND_INV_DEL,
"DELETE FROM houseiteminventory "
"WHERE LandIdent = ? AND ContainerId = ? AND SlotId = ?;",
CONNECTION_BOTH );
prepareStatement( LAND_INV_UP_ITEMPOS,
"INSERT INTO landplaceditems ( ItemId, PosX, PosY, PosZ, Rotation ) "
"VALUES ( ?, ?, ?, ?, ? ) "
"ON DUPLICATE KEY UPDATE PosX = ?, PosY = ?, PosZ = ?, Rotation = ?;",
CONNECTION_BOTH );
prepareStatement( LAND_INV_DEL_ITEMPOS,
"DELETE FROM landplaceditems "
"WHERE ItemId = ?;",
CONNECTION_BOTH );
/*prepareStatement( LAND_INS,
"INSERT INTO land ( LandSetId ) VALUES ( ? );",
CONNECTION_BOTH );
prepareStatement( LAND_SEL,
"SELECT LandSetId, Size, houseState, iconColor, iconAddIcon, fcId, fcIcon, fcIconColor, exteriorRoof, "
"exteriorWall, exteriorWindow, exteriorDoor, otherFloorWall, otherFloorFlooring, basementWall, "
"gardenSign, colorSlot_0, colorSlot_1, colorSlot_2, colorSlot_3, colorSlot_4, colorSlot_5, "
"colorSlot_6, colorSlot_7, ownerPlayerId, nextDrop, dropCount, currentPrice "
"FROM land WHERE LandSetId = ?;",
CONNECTION_BOTH );
prepareStatement( LAND_UP,
"UPDATE land SET Size = ?, houseState = ?, iconColor = ?, iconAddIcon = ?, fcId = ?, "
"fcIcon = ?, fcIconColor = ?, exteriorRoof = ?, exteriorWall = ?, exteriorWindow = ?, "
"exteriorDoor = ?, otherFloorWall = ?, otherFloorFlooring = ?, basementWall = ?, gardenSign = ?, "
"colorSlot_0 = ?, colorSlot_1 = ?, colorSlot_2 = ?, colorSlot_3 = ?, colorSlot_4 = ?, "
"colorSlot_5 = ?, colorSlot_6 = ?, colorSlot_7 = ?, ownerPlayerId = ?, nextDrop = ?, "
"dropCount = ?, currentPrice = ?"
" WHERE LandSetId = ?;",
CONNECTION_BOTH );*/
}

View file

@ -3,7 +3,7 @@
#include "DbConnection.h"
namespace Core::Db
namespace Sapphire::Db
{
class DbConnectionInfo;
@ -77,6 +77,25 @@ namespace Core::Db
CHARA_ITEMGLOBAL_DELETE,
ZONE_SEL_BNPCTEMPLATES,
ZONE_SEL_SPAWNGROUPS,
ZONE_SEL_SPAWNPOINTS,
LAND_INS,
LAND_SEL,
LAND_SEL_ALL,
LAND_UP,
LANDSET_SEL,
HOUSING_HOUSE_INS,
HOUSING_HOUSE_UP,
HOUSING_HOUSE_DEL,
LAND_INV_SEL_ALL,
LAND_INV_SEL_HOUSE,
LAND_INV_DEL,
LAND_INV_UP,
LAND_INV_UP_ITEMPOS,
LAND_INV_DEL_ITEMPOS,
MAX_STATEMENTS
};
@ -88,7 +107,7 @@ namespace Core::Db
ZoneDbConnection( ConnectionInfo& connInfo );
ZoneDbConnection( Core::LockedWaitQueue< std::shared_ptr< Operation > >* q, ConnectionInfo& connInfo );
ZoneDbConnection( Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >* q, ConnectionInfo& connInfo );
~ZoneDbConnection();

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,11 +3,13 @@
#include <memory>
namespace Core
namespace Sapphire
{
class ConfigMgr;
using ConfigMgrPtr = std::shared_ptr< ConfigMgr >;
class Framework;
using FrameworkPtr = std::shared_ptr< Framework >;
namespace Network
{

View file

@ -7,7 +7,7 @@
#include <memory>
#include <cassert>
namespace Core
namespace Sapphire
{
class Framework

View file

@ -10,7 +10,7 @@
namespace fs = std::experimental::filesystem;
namespace Core
namespace Sapphire
{
Logger::Logger()
@ -23,9 +23,9 @@ namespace Core
}
void Logger::setLogPath( const std::string& logPath )
void Logger::init( const std::string& logPath )
{
auto pos = logPath.find_last_of( '/' );
auto pos = logPath.find_last_of( fs::path::preferred_separator );
if( pos != std::string::npos )
{
@ -33,15 +33,10 @@ namespace Core
fs::create_directories( realPath );
}
m_logFile = logPath;
}
void Logger::init()
{
spdlog::init_thread_pool( 8192, 1 );
auto stdout_sink = std::make_shared< spdlog::sinks::stdout_color_sink_mt >();
auto daily_sink = std::make_shared< spdlog::sinks::daily_file_sink_mt >( m_logFile + ".log", 0, 0 );
auto daily_sink = std::make_shared< spdlog::sinks::daily_file_sink_mt >( logPath + ".log", 0, 0 );
std::vector< spdlog::sink_ptr > sinks { stdout_sink, daily_sink };
@ -63,6 +58,11 @@ namespace Core
spdlog::get( "logger" )->error( text );
}
void Logger::warn( const std::string& text )
{
spdlog::get( "logger" )->warn( text );
}
void Logger::info( const std::string& text )
{
spdlog::get( "logger" )->info( text );
@ -78,4 +78,9 @@ namespace Core
spdlog::get( "logger" )->critical( text );
}
void Logger::trace( const std::string& text )
{
spdlog::get( "logger" )->trace( text );
}
}

View file

@ -3,7 +3,9 @@
#include <string>
namespace Core
#include <spdlog/fmt/fmt.h>
namespace Sapphire
{
class Logger
@ -11,23 +13,61 @@ namespace Core
private:
std::string m_logFile;
public:
Logger();
~Logger();
void init();
public:
void error( const std::string& text );
static void init( const std::string& logPath );
void info( const std::string& text );
// todo: this is a minor increase in build time because of fmtlib, but much less than including spdlog directly
void debug( const std::string& text );
static void error( const std::string& text );
template< typename... Args >
static void error( const std::string& text, const Args&... args )
{
error( fmt::format( text, args... ) );
}
void fatal( const std::string& text );
static void warn( const std::string& text );
template< typename... Args >
static void warn( const std::string& text, const Args&... args )
{
warn( fmt::format( text, args... ) );
}
static void info( const std::string& text );
template< typename... Args >
static void info( const std::string& text, const Args&... args )
{
info( fmt::format( text, args... ) );
}
static void debug( const std::string& text );
template< typename... Args >
static void debug( const std::string& text, const Args&... args )
{
debug( fmt::format( text, args... ) );
}
static void fatal( const std::string& text );
template< typename... Args >
static void fatal( const std::string& text, const Args&... args )
{
fatal( fmt::format( text, args... ) );
}
static void trace( const std::string& text );
template< typename... Args >
static void trace( const std::string& text, const Args&... args )
{
trace( fmt::format( text, args... ) );
}
void setLogPath( const std::string& logPath );
};

View file

@ -2,7 +2,7 @@
#include "Acceptor.h"
#include "Connection.h"
namespace Core {
namespace Sapphire {
namespace Network {
//-----------------------------------------------------------------------------

View file

@ -13,7 +13,7 @@
#include <vector>
namespace Core::Network
namespace Sapphire::Network
{
class Connection;

View file

@ -8,14 +8,12 @@
// +---------------------------------------------------------------------------
// The following enumerations are structures to require their type be included.
// They are also defined within the Core::Common namespace to avoid collisions.
// They are also defined within the Sapphire::Common namespace to avoid collisions.
// +---------------------------------------------------------------------------
namespace Core {
namespace Network {
namespace ActorControl {
namespace Sapphire::Network::ActorControl
{
enum ActorControlType :
uint16_t
enum ActorControlType : uint16_t
{
/*! Toggles weapon status -> Sheathed/UnSheathed
\param param1 status 0|1 */
@ -184,7 +182,7 @@ enum ActorControlType :
AchievementPopup = 0x203,
Unk7 = 0x205, // LogMessage?
LogMsg = 0x205, // LogMessage?
AchievementMsg = 0x206,
SetItemLevel = 0x209,
@ -206,11 +204,58 @@ enum ActorControlType :
SetFestival = 0x386, // param1: festival.exd index
ToggleOrchestrionUnlock = 0x396,
Dismount = 0x3A0,
Dismount = 0x3A1, // updated 4.5
// Duty Recorder
BeginReplayAck = 0x3A1,
EndReplayAck = 0x3A2,
BeginReplayAck = 0x3A2,
EndReplayAck = 0x3A3,
// Housing
ShowHousingItemUI = 0x3F7,
ShowBuildPresetUI = 0x3E9,
/*!
* param1 = plot id
*/
ShowEstateExternalAppearanceUI = 0x3EA,
ShowEstateInternalAppearanceUI = 0x3EB,
BuildPresetResponse = 0x3ED,
/*!
* param1 = u16 landid
* u16 slotid
*/
RemoveExteriorHousingItem = 0x3EF,
/*!
* param1 = object array index
*/
RemoveInteriorHousingItem = 0x3F1,
/*!
* param1 = identity shit
* u16 1 - container id
* u16 2 - plot id
* param2 = item shit
* u16 1 - slot
*/
HousingItemMoveConfirm = 0x3F9,
OpenEstateSettingsUI = 0x3FF,
HideAdditionalChambersDoor = 0x400,
/*!
* param1 = outdoor furnishings
* u8 0 - relocation available, 1 = available
* u8 1 - outoor furnishings placed
* u8 2 - outdoor furnishings in storeroom
* u8 3 - outdoor funishings limit
* param2 = indoor furnishings
* u16 0 - relocation available, 1 = available
* u16 1 - furnishings placed
* param3 = indoor furnishings
* u16 0 - in storeroom
* u16 1 - indoor furnishings limit
*/
HousingStoreroomStatus = 0x419,
// PvP Duel
SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client)
@ -224,10 +269,10 @@ enum ActorControlType :
SetDutyActionHud = 0x5E9, // disable/enable
SetDutyActionActive = 0x5EA,
SetDutyActionRemaining = 0x5EB,
};
};
enum ClientTriggerType
{
enum ClientTriggerType
{
ToggleSheathe = 0x01,
ToggleAutoAttack = 0x02,
ChangeTarget = 0x03,
@ -286,7 +331,29 @@ enum ClientTriggerType
AchievementCritReq = 0x3E8,
AchievementList = 0x3E9,
SetEstateLightingLevel = 0x40B, // param1 = light level 0 - 5 maps to UI val 5-0
RequestHousingBuildPreset = 0x44C,
RequestEstateExteriorRemodel = 0x044D, // param11 = land id
RequestEstateInteriorRemodel = 0x44E,
RequestEstateHallRemoval = 0x44F,
RequestBuildPreset = 0x450, // no idea what this is, it gets sent with BuildPresetHandler and has the plot id in param1
RequestLandSignFree = 0x451,
RequestLandSignOwned = 0x452,
RequestWardLandInfo = 0x453,
RequestLandRelinquish = 0x454,
RequestLandInventory = 0x0458,
RequestHousingItemRemove = 0x0459,
RequestEstateRename = 0x45A,
RequestEstateEditGreeting = 0x45B,
RequestEstateGreeting = 0x45C, // sends FFXIVIpcHousingEstateGreeting in return
RequestEstateEditGuestAccessSettings = 0x45D,
UpdateEstateGuestAccess = 0x45E,
RequestEstateTagSettings = 0x45F,
RequestEstateInventory = 0x0461,
RequestHousingItemUI = 0x463,
RequestSharedEstateSettings = 0x46F,
UpdateEstateLightingLevel = 0x471,
HousingItemSelectedInUI = 0x47E,
CompanionAction = 0x6A4,
CompanionSetBarding = 0x6A5,
@ -300,10 +367,8 @@ enum ClientTriggerType
OpenDuelUI = 0x898, // Open a duel ui
DuelRequestResult = 0x899, // either accept/reject
};
};
} /* ActorControl */
} /* Common */
} /* Core */
}
#endif

View file

@ -5,7 +5,7 @@
#include <vector>
#include "PacketDef/Ipcs.h"
namespace Core::Network::Packets
namespace Sapphire::Network::Packets
{
/**

View file

@ -1,17 +1,19 @@
#include "Connection.h"
#include "Hive.h"
#include <functional>
#include "Framework.h"
namespace Core {
namespace Sapphire {
namespace Network {
//-----------------------------------------------------------------------------
Connection::Connection( HivePtr hive ) :
Connection::Connection( HivePtr hive, FrameworkPtr pFw ) :
m_hive( hive ),
m_socket( hive->GetService() ),
m_io_strand( hive->GetService() ),
m_receive_buffer_size( 32000 ),
m_error_state( 0 )
m_error_state( 0 ),
m_pFw( pFw )
{
}

Some files were not shown because too many files have changed in this diff Show more